Share
Explore

icon picker
Budget-Lite

Repo - https://github.com/cowrywise/flite

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:
Models:
Create models for BudgetCategory, Transaction, and User with the following fields:
BudgetCategory:
Name
Description
Max Spend /Threshold (maximum allowed spending for the category)
Transaction:
Category (foreign key relationship with BudgetCategory model)
Amount
Description
Owner (foreign key relationship with User model)
Date
API Endpoints:
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.
Testing:
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
Documentation clarity
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.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.