This is a starter template for Django REST Framework (DRF) projects, designed to provide a solid foundation with essential features commonly needed in API development.
- Token-Based Authentication: Secure your API endpoints using token-based authentication.
- Swagger API Documentation: Automatically generate interactive API documentation using Swagger UI.
- User Management System: Implement user registration, login, logout, and password reset functionalities.
- Permissions and Roles: Define user roles and permissions to control access to API endpoints.
- Email Notifications: Set up email notifications for user-related events like registration and password reset.
- Rate Limiting: Prevent abuse of API endpoints by implementing rate limiting.
- File Uploads: Support file uploads (e.g., images, documents) with customizable storage backends.
- Caching: Improve API performance with caching for frequently accessed data.
- Background Tasks: Perform background tasks asynchronously using Celery and a message broker.
- Monitoring and Logging: Monitor application performance and track errors with logging and monitoring tools.
-
Clone this repository:
git clone https://github.com/hossainchisty/django-rest-starter-kit.git
-
Install dependencies:
pip install -r requirements.txt
-
Customize settings:
- Configure database settings in
settings.py
. - Set up email configuration for sending notifications.
- Configure token authentication settings.
- Customize permissions and roles according to your application's requirements.
- Configure database settings in
-
Migrate the database:
python manage.py migrate
-
Run the development server:
python manage.py runserver
-
Access the API documentation:
Open your browser and navigate to
http://127.0.0.1:8000/swagger/
to view the interactive API documentation generated by Swagger UI. -
Start building your API endpoints:
- Define your API endpoints in
urls.py
. - Implement views and serializers for your API resources in
views.py
andserializers.py
respectively. - Secure your endpoints using token authentication and define permissions as needed.
- Define your API endpoints in
Run unit tests and integration tests to ensure the reliability and stability of your API:
python manage.py test
Contributions are welcome! If you have suggestions for improvements or new features, please open an issue or submit a pull request.
This project is licensed under the Apache-2.0 license - see the LICENSE file for details.