Thank you for your interest in the Backend Developer position at AAK Tele-Science. This coding challenge is designed to assess your skills in developing a Django and Django Rest Framework (DRF) backend. Please follow the instructions below and deliver your work on a GitHub repository.
You are tasked with building a backend for a simple task management system. The application should include at least Task
and Label
models, and you need to expose API endpoints for CRUD operations on these models.
-
Fork this repository to your GitHub account.
-
Create a new Django project within your forked repository.
-
Implement a Django app for managing tasks called
tasks
. -
Create at least two models:
Task
: This model should have a title, description, completion status, owner, and a many-to-many relationship toLabel
.Label
: This model should have a name and owner. Add the necessary constraints to avoid duplicate values.
-
Implement API endpoints for CRUD operations on both
Task
andLabel
models. Use Django Rest Framework for creating these APIs. -
Implement user authentication and authorization for the API. Users should only be able to perform CRUD operations on their tasks and labels.
Tip
Create 2 users with the python manage.py shell
command with the is_staff
flag set to True
so you can use the built-in admin site to log in. Detail the user's credentials on the challenge.md
file.
- Include clear instructions on how to set up and run your project locally in a file called
challenge.md
. - Commit your changes regularly and provide meaningful commit messages.
- Push your code to your GitHub repository.
- Write custom filters for the list view of the
Task
andLabel
models to only show your resources (the ones related to the user that's making the request). - Write tests for your models and API endpoints.
-
Code Quality:
- Readability: Ensure the code is well-organized and follows the PEP 8 style guide.
- Modularity: Divide code into modular components for easy understanding and maintenance.
- Best Practices: Adhere to Django best practices and guidelines.
-
Functionality:
- Correctness: Ensure the application meets specified requirements and functions as expected.
- Completeness: Implement all specified features and API endpoints.
- Performance: Considerations for optimizing performance, especially in API endpoints.
-
Documentation:
- Setup Instructions: Document how to set up and run the project locally.
- Code Comments: Add comments where necessary to explain complex logic.
-
Bonus Points:
- Creativity: Showcase creativity in bonus features or enhancements.
Once you have completed the challenge, please send us the link to your GitHub repository. Make sure to include any relevant instructions for running the application and any additional notes you'd like to share on the challenge.md
file.
Important
You will have 48 hours to complete this challenge.
Thank you, and good luck!