FinDash is a dynamic web application designed to help users upload, visualize, and analyze their financial data from various sources like Excel spreadsheets and PDF documents. By leveraging interactive charts and an integrated AI chat powered by the Google Gemini API, FinDash turns raw data into actionable insights.
| Register Page | Login Page |
|---|---|
![]() |
![]() |
| Dashboard | Charts View |
|---|---|
![]() |
![]() |
- Multi-Format File Upload: Seamlessly upload financial statements in both
.xlsxand.pdfformats. - Dynamic Data Visualization: Automatically generate interactive line and bar charts from tabular data found in your files.
- Side-by-Side Comparison: Upload two separate statements to compare data, tables, and charts in a clear, side-by-side view.
- AI-Powered Insights: An integrated Gemini chat allows you to ask complex questions about your uploaded data in natural language. Get summaries, identify trends, and query specific information without manual digging.
- Secure User Authentication: Full user registration and login system using JWT (JSON Web Tokens) to ensure user data is private and secure.
- Responsive Design: A clean, modern, and responsive user interface that works across various devices.
- React: A JavaScript library for building user interfaces.
- React Router: For client-side routing.
- Chart.js: For creating responsive and interactive charts.
- Axios: For making HTTP requests to the backend API.
- Material-UI DataGrid: For displaying tabular data in a clean, sortable grid.
- XLSX (SheetJS): For parsing and reading Excel files directly in the browser.
- Node.js: A JavaScript runtime environment.
- Express: A minimal and flexible Node.js web application framework.
- MongoDB: A NoSQL database to store user information.
- Mongoose: An ODM (Object Data Modeling) library for MongoDB and Node.js.
- JSON Web Token (JWT): For implementing secure user authentication.
- Multer: A middleware for handling
multipart/form-data, used for file uploads. - pdf-parse: To extract text content from PDF files for AI analysis.
- pdf-table-extractor: To parse and extract tabular data from PDFs for charting.
- Google Gemini API: Used for the intelligent chat functionality to analyze file content.
Follow these instructions to get a local copy of the project up and running for development and testing purposes.
- Node.js (v18 or later recommended)
- npm (or yarn)
- MongoDB (You can use a local instance or a cloud service like MongoDB Atlas)
-
Clone the repository:
git clone [https://github.com/your-username/findash.git](https://github.com/your-username/findash.git) cd findash -
Install Backend Dependencies: Navigate to the server directory and install the required npm packages.
cd Server npm install -
Set Up Environment Variables: In the
Serverdirectory, create a file named.envand add the following configuration. Do not share this file publicly.# MongoDB Connection String MONGO_URI=your_mongodb_connection_string # JWT Secret for signing tokens JWT_SECRET=your_super_secret_key_for_jwt # Google Gemini API Key GEMINI_API_KEY=your_google_gemini_api_key
-
Install Frontend Dependencies: Navigate to the client/frontend directory and install its packages.
cd ../client # or your frontend folder name npm install
-
Run the Application: You will need two separate terminal windows to run both the backend and frontend servers concurrently.
-
In the first terminal (from the
Serverdirectory):npm start # or 'nodemon index.js' if you have nodemon installedThe backend server should now be running, typically on
http://localhost:8001. -
In the second terminal (from the
clientdirectory):npm run dev
The React development server will start, and you can view the application in your browser, usually at
http://localhost:5173.
-
findash/
├── client/ # React Frontend
│ ├── public/
│ └── src/
│ ├── components/ # Reusable React components (Dashboard, GeminiChat, etc.)
│ ├── pages/ # Page components (Login, Register)
│ ├── App.jsx
│ ├── main.jsx
│ └── index.css
│
└── Server/ # Node.js & Express Backend
├── controllers/ # Logic for handling requests (auth, files, gemini)
├── middleware/ # Custom middleware (e.g., verifyToken)
├── models/ # Mongoose schemas (e.g., User model)
├── routes/ # API route definitions
├── uploads/ # Temporary storage for uploaded files
├── .env # Environment variables (GITIGNORED)
└── index.js # Main server entry pointThis project is licensed under the MIT License - see the LICENSE file for details.



