RadinGalleryAPI is a project built with Django REST Framework designed to provide a complete set of APIs for an e-commerce site. This includes features like user authentication, product management, and more. The goal is to develop, test, and document these APIs thoroughly, ensuring seamless integration and a high-quality experience.
You can view the latest API documentation, including the current status of all endpoints, through the Swagger interface at the following link:
Swagger Documentation
- Full API implementation for an e-commerce site using Django REST Framework.
- User authentication and authorization.
- Integration with Swagger for easy documentation and seamless API interaction.
- Dockerized application setup with Django and PostgreSQL for the database.
- Use of Redis for:
- Caching data, including storing user click counts for throttling purposes.
- Storing Django's default session data.
- Managing task queues as a message broker for Celery.
- Storing temporary tokens for email verification and OTPs for enhanced security and performance.
To ensure high performance and scalability, RadinGalleryAPI incorporates several optimization techniques:
- Efficient Database Queries:
select_relatedfor reducing database queries in single-valued relationships.prefetch_relatedfor optimizing many-to-many and reverse foreign key relationships.
- Custom Pagination:
- Avoiding expensive
countqueries for large datasets by implementing a custom pagination class.
- Avoiding expensive
- Indexing and Ordering:
- Optimized indexing and ordering on frequently queried fields for faster data retrieval.
- Caching with Redis:
- Leveraging Redis for caching frequently accessed data to reduce database load.
For a detailed explanation of these techniques, refer to the Query Optimization Documentation.
This project includes a suite of tests to ensure the correct functionality and performance of the API endpoints.
For detailed information on the security measures implemented in this project, please refer to the Security Measures document.
This project is licensed under the MIT License. By using this software, you agree to the terms and conditions outlined in the License.
We welcome contributions! Please read our Contributing Guidelines for detailed instructions.
Feel free to reach out or open an issue for discussions and suggestions.
If you have any questions, please contact me at [email protected].
