Skip to content

πŸ” A Django REST API for searching books via Google Books API, storing results in PostgreSQL, and managing user favorites.

License

Notifications You must be signed in to change notification settings

ychanyzh/book-search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š Book Search API

Python Django PostgreSQL Dockerized License

A Django REST API project that allows users to search books using Google Books API, store them in a PostgreSQL database, and manage favorite books.

πŸ”§ Features

  • πŸ” Search books via Google Books API (/api/books/search/?q=...)
  • πŸ“¦ Store results in PostgreSQL
  • 🧠 Query local database (/api/books/local/)
  • ⚑ API caching (avoid duplicate external calls)
  • πŸ” Token-based authentication
  • ❀️ Add/remove favorite books (per user)

πŸš€ Tech Stack

  • Python 3.11
  • Django 5
  • Django REST Framework
  • PostgreSQL
  • Docker & Docker Compose

πŸ›  Setup Instructions

1. Clone the repo

git clone https://github.com/ychanyzh/book-search.git
cd book-search

2. Create .env file

POSTGRES_DB=booksearch
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=db
POSTGRES_PORT=5432

3. Build and run with Docker

docker compose build
docker compose up

4. Apply migrations and create superuser

docker compose run web python manage.py migrate
docker compose run web python manage.py createsuperuser

πŸ”‘ Authentication

Get Token:

POST /api/token/
Content-Type: application/x-www-form-urlencoded

username=yourusername&password=yourpassword

Use in requests:

Authorization: Token your_token_here

πŸ“š Endpoints Summary

Method Endpoint Description
GET /api/books/search/?q=... Search books from Google API
GET /api/books/local/ Search books from local DB
GET /api/books/favorites/ List user's favorite books
POST /api/books/favorites/ Add book to favorites { "book": ID }
DELETE /api/books/favorites/<id>/ Remove favorite book

πŸ§‘β€πŸ’» Author

Yaroslav Chanyzh

πŸ“„ License

MIT β€” feel free to use and modify.

About

πŸ” A Django REST API for searching books via Google Books API, storing results in PostgreSQL, and managing user favorites.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published