This project is a Django-based Expense Management System application with role-based authentication and permissions for two user roles, Admin and Accountant, each having its own dashboard and permissions, allowing users to edit their profiles; it is built using Django, NeonDB for serverless Postgres, and Render for hosting, and consists of two main interfaces: the Accountant Dashboard and the Admin Dashboard.
- Features
- Technologies Used
- Setup and Installation
- Usage
- Project Interface
- Input fields for Date, Description, Main Category, Sub Category, and Payments.
- Notifications from the admin for corrections or changes.
- Ability to upload data using an Excel file.
- Menu displaying records sent back for changes by the admin.
- Reset password
- Approve/reject requests for modifications or Excel file uploads.
- Generate and view reports.
- Modify records directly.
- Manage users (create/delete users, change permissions).
- Menu displaying records pending for approval from accountants.
- Detailed view of records with the ability to approve or send back for corrections.
- Notifications for corrections or changes.
- Modify records after approval based on specified date.
- Django: Web framework for developing the application.
- PostgreSQL: Database management system.
- NeonDB: For serverless Postgres Config.
- AWS S3: Static files for the application.
- Render: Continuous deployment and hosting platform.
- AWS account setup for S3.
- Render account setup.
- NeonDB account setup.
-
Clone the repository:
git clone https://github.com/DavidDanso/finance-manager.git cd finance-manager
-
Set Up Environment Variables Create a .env file in the root directory and add your environment variables:
DEBUG=1 SECRET_KEY=your_secret_key DATABASE_URL=your_database_url AWS_ACCESS_KEY_ID=your_aws_access_key_id AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key
-
Create a virtual environment:
python3 -m venv env
-
Activate the virtual environment:
source env/bin/activate
-
Install the required dependencies::
pip install -r requirements.txt
-
Apply Migrations:
python manage.py migrate \ python manage.py makemigrations
-
Create a Superuser:
python manage.py createsuperuser
-
Collect Static Files:
python manage.py collectstatic
- Accountant: Log in to the Accountant Dashboard to manage entries, upload data, and view notifications.
- Admin: Log in to the Admin Dashboard to approve/reject reports, manage users, generate reports, review records, approve or send back entries for corrections, and modify records.
Accountant Dashboard ![]() |
Admin Dashboard ![]() |
Notification Modal ![]() |
Excel Upload ![]() |
David Danso - Initial work - GitHub Profile