Introduction
Financial Budget Management System
Objective:
Develop a backend Django application for managing personal budgets. The application should allow users to create, update, delete, and view budget categories, transactions, and generate reports. Additionally, integrate Celery for background task processing, RabbitMQ as the message broker.
Requirements:
Create models for BudgetCategory, Transaction, and User with the following fields: Max Spend /Threshold (maximum allowed spending for the category) Category (foreign key relationship with BudgetCategory model) Owner (foreign key relationship with User model) Implement RESTful API endpoints for CRUD operations on budget categories, transactions, and user management. /api/budget_categories/: GET, POST /api/budget_categories/<category_id>/: GET, PUT, DELETE /api/transactions/: GET, POST /api/transactions/<transaction_id>/: GET, PUT, DELETE Authentication and Authorization: Implement token-based authentication using Django REST Framework. Only authenticated users should be able to perform CRUD operations. Users can only access and manage their own budget categories and transactions. Background Task Processing: Define a Celery task that checks the total spending for each budget category against a predefined threshold.
If the total spending meets 50% of the threshold, send an email notification to the user associated with that budget category. If the total spending exceeds the threshold, send an email notification to the user associated with that budget category. The email should contain information about the budget category, the current spending, and a reminder about the predefined threshold.
Write unit and integration tests to ensure the correctness of the API endpoints, models and Celery tasks.
You have the freedom to decide what the Request and Response data would look like. Feel free to install any extra packages and libraries you would find helpful (don’t forget to update the requirements.txt file)
You are also free to add any Models you would need and remove the ones that you think are not necessary.
Evaluation Criteria:
Correctness of implementation Adherence to best practices and guidelines Effective use of Celery for background task processing Integration and configuration of RabbitMQ as the message broker Code quality, readability, and organization Handling of edge cases and errors Test coverage and effectiveness Submission
Make a fork of this repository - and submit a PR once you are done You have a deadline of 4 days from when you receive the assessment. If all the tests are passing you would be contacted.