Develop a RESTful API using Django or FastAPI framework that manages a simple "Bookstore". Your API will provide endpoints to create, read, update, and delete books in the store. Include functionality to handle user authentication to allow only registered users to modify the bookstore content.
- Instructions on how to set up and run the application locally install_localy.md
- Books model with fields: title, author, publish_date, ISBN, and price.
- CRUD operations for the Books model for authorized user, including uploading images.
- Implement user authentication: Users should register with at least an email and password
- Token authentication is applied
- All users (authenticated or not) can list and read information about the books, filtered field: author.
- Deploy your application to a free hosting provider (e.g., Heroku, PythonAnywhere, or any other).
- Provide a URL to the live API.
- Can upload an image with the book cover.
- Implement rate limiting for your API.
- Filtering books by author.
- Setup CI for GitHub actions.
Tech Stack:
- Django Rest Framework with Tokenauthentication
- Customed User Model using AbstractBaseUser
- Browseable API doc using with SwaggerUI
- Database PostgreSQL
- Proxy: NginX and uWSGI
- Deployed on AWS EC2 instance
System architechture diagram: ![[system_architecture.png]]