Giter Club home page Giter Club logo

software-engineering-24's Introduction

Personal Budget Management and Savings Forecasting System

Project Overview

The Personal Budget Management and Savings Forecasting System is a comprehensive application designed to help users effectively manage their monthly budgets and set achievable savings goals. By leveraging user data on income and expenditures, the system provides detailed forecasts and analyses, assisting users in better financial planning.

Core Features

  • Monthly Budget Projection: Predicts monthly budgets based on user-provided income and expenses.
  • Frequency Customization: Allows users to define the frequency of their income and expenses (weekly, monthly, etc.).
  • Data Storage: Saves user data across sessions for continuous budget management.
  • Data Security: Implements strong security protocols to safeguard user budget information.
  • Savings Goal Setting: Enables users to establish savings targets for specific items.
  • Savings Goal Projection: Estimates the time required to achieve savings goals based on disposable income allocation.

Additional Features

  • User-Friendly Interface: Designed for easy navigation and usability.
  • Cross-Device Compatibility: Accessible on both desktop and mobile devices.
  • Comprehensive Reports: Provides detailed reports and visual charts of spending habits and savings progress.

Technical Details

  • Operating Systems: Compatible with Windows, macOS, Linux, iOS, and Android.
  • Programming Languages: Developed using Python with Flask for the backend, MongoDB for the database, and Dash/Plotly for data visualization.
  • Third-Party Libraries and Tools:
    • Flask or FastAPI for backend API development.
    • MongoEngine for MongoDB management.
    • PyJWT for secure authentication.
    • Matplotlib for data visualization.
    • Redux Toolkit with a Python frontend framework like Dash for state management.

Setup and Installation

  1. Clone the repository:
    git clone https://github.com/austin-carnahan/software-engineering-24.git
    cd software-engineering-24
    

Running the app locally

  1. python -m venv venv
  2. source venv/Scripts/activate # On Windows
  3. source venv/bin/activate # On macOS/Linux
  4. pip install -r requirements.txt
  5. python run.py or flask run
  6. a) Navigate to the templates/home.html File, Open your code editor and navigate to the templates/home.html file. b) Use Live Server Right-click on home.html and select the option to open with Live Server. This will start a local server and open your default browser to view the HTML file.

Needs more documentation!

  1. Activate virtual environment, if using
  2. Install needed dependencies from requirements.txt
  3. From the root project directory, run:

flask --app app run

Design Diagrams

UML

views

views

Team Members

  1. Raghunath Kunigiri: [email protected]
  2. Gowthamsai Mukthineni: [email protected]
  3. Sai Goutham Chedhella: [email protected]
  4. Austin Carnahan: [email protected]
  5. Saaisathish Sankarabhattar Ayyappan: [email protected]

software-engineering-24's People

Contributors

austin-carnahan avatar raghunath9493 avatar saich019 avatar saaisathish avatar gowthamsai-mukthineni avatar

Watchers

 avatar

Forkers

raghunath9493

software-engineering-24's Issues

Write Developer Docs and README

User Story: Write Developer Documentation and README
Assignee: Raghunath Kunigiri

Due Date: 2024-07-01

Title: Write Developer Documentation and README

Description:
As a developer, I would like to have comprehensive developer documentation and a README file for our project. This will ensure that all team members and future contributors have a clear understanding of the project's structure, setup, and development practices, facilitating smooth collaboration and efficient development.

Acceptance Criteria:

A README file that includes:
Project title
Project description
Initial setup instructions
Project structure
Tools and libraries used
Contributor information
Additional information or references to further documentation
Developer documentation that includes:
Instructions for setting up the development environment
Detailed project structure and files explanation
Instructions for running the application
Guidelines for managing dependencies
Contributing guidelines

Set up testing Workflow

Tasks:

  • Add testing dependencies to requirements.txt or Pipfile.
  • Create a dedicated directory structure for test cases (e.g., tests/).
  • Write Initial Test Cases
  • Implement initial unit tests for critical components such as user registration, login, and database models.
  • Write integration tests for key workflows like user authentication.
  • Write documentation on how to run tests locally and interpret the results.

Documentation:

  • Clear documentation is provided on how to run tests locally, along with guidelines for writing and maintaining test cases.

Python "Hello World" and basic app setup

As a developer I would like to have a basic python application up and running with some initial development features so that myself and the rest of the team have a base to begin working on more complex features, can keep track of dependencies and libraries we are using, and share code easily.

DUE DATE:
06/19/24

ACCEPTANCE CRITERIA:
A working python application that servers a web page over a local development server which says "Hello World". Additionally, the project should have the following tools set up for managing the repository:

  • A github repository with all project members added as collaborators
  • a .gitignore file for third party libraries and other local files
  • a requirements.txt file for dependency tracking
  • a basic project directory structure for a flask app.

Front end View and back end logic for "Budget Form"

As a user, I want to input and submit my budget information, so that I can track my finances effectively.

Frontend View:

  • See a form with fields for income, expenses, and savings goals
  • Input financial data into clearly labeled fields
  • Submit the form to save my budget
  • View a summary of my budget after submission
  • Receive visual feedback for any input errors

Backend Logic:

  • Create an API endpoint to receive budget form data
  • Validate all incoming data for completeness and correctness
  • Store the validated budget data in a database
  • Calculate totals and percentages for income, expenses, and savings
  • Return a success response with a budget summary or error messages

Acceptance Criteria:

  1. Form displays all required fields, marked with an asterisk (*)
  2. Numeric fields only accept valid numbers
  3. Savings goal is expressed as a percentage
  4. Form prevents submission if required fields are empty
  5. Error messages appear next to relevant fields
  6. Loading indicator displays during form submission
  7. API responds with appropriate status codes (400 for errors, 201 for success)
  8. Database record includes timestamp of budget creation
  9. Calculations are accurate to two decimal places
  10. User receives a budget summary within 3 seconds of successful submission
  11. System handles concurrent requests without data corruption

Site Navbar Component

As a user, I would like a navigation menu that feels intuitive and works similarly to menus I've use before so I can easily navigate the budget planning site.

Due: Tue Jul 9

Acceptance Criteria:

  • The navbar component should load on every page except for login/register
  • The navbar should show a dropdown menu with a "hamburger" icon for mobile screens
  • The dropdown menu should close when the user clicks elsewhere on the page
  • The navbar should expand and show a menu bar for larger screen sizes
  • The Navbar should contain links to 3 pages: Budget Summary, Budget Form, and Profile

Backend and DB logic for login

Due Date: July 16, 2024

Description :
As a user, I want to securely log into the application using my credentials so that I can access personalized features and data. The login process should be secure, quick, and reliable, leveraging OAuth 2.0 for authentication and PyJWT for token management. The user credentials should be protected using AES encryption.

Requirement :
Will require database setup

Acceptance Criteria :

Backend Authentication:
Implement OAuth 2.0 for handling user authentication.
Use PyJWT to generate and manage JSON Web Tokens for authenticated sessions.

Database Setup:
Set up a MongoDB database using MongoEngine.
Ensure the database schema includes encrypted storage for user credentials.

Data Security:
Encrypt user credentials using AES encryption before storing them in the database.
Ensure that encrypted credentials are properly decrypted during the authentication process.

Error Handling:
Provide user-friendly error messages for incorrect login attempts.
Implement measures to prevent brute-force attacks.

Testing:
Perform unit tests and security tests to validate the login functionality across all specified platforms.

Front End View and Back end Logic for "Budget Summary"

As a user, I would like to see a categorical summary of the budget I have specified and be able to forecast basic savings and debt calculations for upcoming months.

Due Date: Sun Jul 28th

Key features

  • A visualization of the user's expenses broken down by category
  • A Summary of Net Income, Fixed and Variable Expenses, and Net balances
  • A Visualization of savings accumulation based on monthly contributions for a given number of months
  • A Visualization of debt accumulation/payoff based on monthly contributions for a given number of months
  • A Button to go back and edit the budget

Acceptance Criteria

  • A Budget Summary View that users can navigate to after login
  • All of the key features are implemented in the Budget Summary view
  • Back-end logic is implemented to provide data to the view (can be a stub if no DB available yet)
  • User can navigate back to the budget page

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.