From 9bea26aaa838923c3e8e0488a09914a5219fadff Mon Sep 17 00:00:00 2001 From: Tshenolo Mos Date: Sat, 26 Oct 2024 00:49:19 -0400 Subject: [PATCH 1/7] Add Dockerfile --- Dockerfile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..39659d2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +# Use an official Python runtime as a parent image +FROM python:3.10-slim + +# Set the working directory in the container +WORKDIR /app + +# Copy the current directory contents into the container at /app +COPY . /app + +# Install any needed packages specified in requirements.txt +RUN pip install --no-cache-dir -r requirements.txt + +# Expose port 5000 for the Flask app +EXPOSE 5000 + +# Set the FLASK_APP environment variable to point to financial.py +ENV FLASK_APP=financial.py + +# Run the application, binding to all interfaces +CMD ["flask", "run", "--host=0.0.0.0"] From 0dbc11ac03e229751fd02da352fe9976910a9b65 Mon Sep 17 00:00:00 2001 From: Tshenolo Mos Date: Sat, 26 Oct 2024 00:50:43 -0400 Subject: [PATCH 2/7] Add LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6b955c6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Tshenolo Mos + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 6d0d961859632276aa1ffb89835946dfb68fc330 Mon Sep 17 00:00:00 2001 From: Tshenolo Mos Date: Sat, 26 Oct 2024 00:51:13 -0400 Subject: [PATCH 3/7] Add README --- README.md | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a4aaf01 --- /dev/null +++ b/README.md @@ -0,0 +1,99 @@ +# Financial Dashboard in Python + +A Flask-based financial dashboard that enables users to upload CSV files containing transaction data and view insightful summaries and visualizations of their income, expenses, and savings. The dashboard provides monthly breakdowns, income and expense charts, and savings metrics. + +## Features + +- **Upload CSV Files:** Easily upload a CSV file with your transaction data. +- **Monthly Income and Expense Tracking:** View your monthly income and expenses in grouped bar charts. +- **Category-wise Expense Breakdown:** Analyze expenses by category, excluding "Savings" from the breakdown. +- **Total Income, Expenses, and Savings Summary:** Get a snapshot of total income, total expenses, and total savings with an intuitive indicator display. +- **Savings Percentage Calculation:** Understand the percentage of income saved. + +## Installation + +1. Clone this repository: + ```bash + git clone https://github.com/Incipiens/FinancialDashboardPython.git + ``` + +2. Navigate to the project directory: + ```bash + cd FinancialDashboardPython + ``` + +3. Create a Python 3.10 virtual environment: + ```bash + python3.10 -m venv env310 + ``` + + +4. Activate the virtual environment: + - On Windows: + ```bash + env310\Scripts\activate + ``` + + - On macOS/Linux: + ```bash + source env310/bin/activate + ``` + +5. Install required packages within the activated environment: + ```bash + pip install -r requirements.txt + ``` + +6. Run the app: + ```bash + python financial.py + ``` + The app will be available at http://localhost:5000/. + +## Docker Deployment +To run the Financial Dashboard application using Docker: +1. Build the Docker image: + ```bash + docker build -t financial-dashboard . + ``` + +2. Run the Docker container: + ```bash + docker run -p 5000:5000 financial-dashboard + ``` + +3. Access the application: Open your browser and navigate to http://localhost:5000/. +This will start the application in a Docker container, making it accessible on port 5000 of your local machine. + +## Usage +1. Navigate to the homepage of the application. +2. Upload a CSV file with columns Date, Category, and Amount: + - Date: The date of the transaction (format: YYYY-MM-DD). + - Category: The category for each transaction (e.g., Groceries, Rent). + - Amount: The transaction amount, where positive values indicate income and negative values indicate expenses. +3. View the financial summaries and insights, including: + - Income vs. Expenses Chart: A grouped bar chart of income and expenses by month. + - Expenses by Category: A pie chart of expenses by category, excluding savings. + - Savings Summary: Displays total income, total expenses, and savings with the savings percentage. + +## Files +- financial.py: Main application file with routes and logic for processing the CSV file and generating graphs. +- templates/index.html: Template for displaying the dashboard with charts. +- requirements.txt: Dependencies for the project. + +## Example CSV Format +```csv +Date,Category,Amount +2024-01-01,Salary,2000 +2024-01-10,Rent,-800 +2024-01-15,Groceries,-150 +2024-02-01,Salary,2000 +2024-02-10,Rent,-800 +2024-02-15,Entertainment,-120 +``` + +## Contributing +Feel free to open issues or submit pull requests for improvements and new features! + +## License +This project is open-source and available under the MIT License. From ce6bb1e23f164c509585b3a5d4ca7adb92116914 Mon Sep 17 00:00:00 2001 From: Tshenolo Mos Date: Sat, 26 Oct 2024 00:51:34 -0400 Subject: [PATCH 4/7] Add requirements --- requirements.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0cd4307 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +Flask==2.1.3 +Werkzeug==2.0.3 +pandas==1.5.3 +numpy==1.23.5 +plotly==5.6.0 From fcc447a6d694fdb271ca5bca8e1c53bc06aca288 Mon Sep 17 00:00:00 2001 From: Tshenolo Mos Date: Sat, 26 Oct 2024 00:52:06 -0400 Subject: [PATCH 5/7] Add favicon --- favicon.ico | Bin 0 -> 15406 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 favicon.ico diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..49b2b454e7401a01ac9264dcbaad46e37852930e GIT binary patch literal 15406 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 syP{l($(%pHIS`XMe Date: Sat, 26 Oct 2024 09:03:21 -0400 Subject: [PATCH 6/7] Add screenshot --- screenshot.png | Bin 0 -> 100765 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 screenshot.png diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..ad2eaa6ae5393e42687cba960cc71162aaa1feee GIT binary patch literal 100765 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 ArvLx| literal 0 HcmV?d00001 From 527b049bbc8d8a4543682df9dff0d21e98f781fd Mon Sep 17 00:00:00 2001 From: Tshenolo Mos Date: Sat, 26 Oct 2024 09:04:26 -0400 Subject: [PATCH 7/7] Add screenshot --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a4aaf01..097c7d7 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ A Flask-based financial dashboard that enables users to upload CSV files containing transaction data and view insightful summaries and visualizations of their income, expenses, and savings. The dashboard provides monthly breakdowns, income and expense charts, and savings metrics. +![Screenshot](screenshot.png) + ## Features - **Upload CSV Files:** Easily upload a CSV file with your transaction data.