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.
- π 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)
- Python 3.11
- Django 5
- Django REST Framework
- PostgreSQL
- Docker & Docker Compose
git clone https://github.com/ychanyzh/book-search.git
cd book-searchPOSTGRES_DB=booksearch
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=db
POSTGRES_PORT=5432docker compose build
docker compose updocker compose run web python manage.py migrate
docker compose run web python manage.py createsuperuserPOST /api/token/
Content-Type: application/x-www-form-urlencoded
username=yourusername&password=yourpasswordAuthorization: Token your_token_here
| 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 |
MIT β feel free to use and modify.