FinVault is a full-stack web application designed for tracking investments and analyzing portfolio performance. I built this project to provide a single, unified dashboard for managing multiple asset classes—including stocks, mutual funds, cryptocurrency, and real estate—backed by real-time market data.
- Asset Management: Track diverse assets including stocks, crypto, mutual funds, fixed deposits, and real estate.
- Real-Time Data: Live market pricing integrated via Yahoo Finance and CoinGecko, with AlphaVantage serving as a fallback.
- Portfolio Analytics: View your P&L, return percentages, and asset allocation breakdowns through interactive charts.
- Authentication: Secure, stateless user sessions using JWT and Spring Security.
- Modern UI: Fully responsive frontend with dark/light mode support, built with React and Tailwind CSS.
- Backend: Java 17, Spring Boot 3.2.0, Spring Security, Spring Data JPA, Hibernate
- Database: MySQL 8.0
- Frontend: React 18, Vite, Tailwind CSS, Recharts, Lucide React
- External APIs: Yahoo Finance, CoinGecko, AlphaVantage
Create a local MySQL database named fintech_portfolio:
CREATE DATABASE fintech_portfolio;Update the database credentials in server-spring/src/main/resources/application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/fintech_portfolio
spring.datasource.username=your_username
spring.datasource.password=your_passwordNavigate to the server-spring directory. If you want to use the fallback APIs, add your keys to application.properties:
alphavantage.api-key=YOUR_KEY
coingecko.api-key=YOUR_KEYRun the Spring Boot application:
mvn clean install
mvn spring-boot:runThe server will start on http://localhost:4000.
Navigate to the client directory, install dependencies, and start the development server:
npm install
npm run devThe client will be available at http://localhost:5173. Make sure the API base URL in src/api/client.js points to your local backend.
POST /api/auth/register&/login- User authenticationGET /api/assets- Retrieve user assets (supports?enrich=truefor live prices)POST /api/assets- Add a new assetGET /api/portfolio/summary- Aggregated portfolio analytics and allocationGET /api/search?q={query}- Symbol search for stocks and crypto
The application is designed to be easily deployable to standard cloud hosting providers.
- Backend: Can be packaged into an executable JAR (
mvn clean package) and run on any server supporting Java 17 (e.g., AWS EC2, Heroku, Railway). - Frontend: Can be built into static files (
npm run build) and hosted on platforms like Vercel, Netlify, or AWS S3.
Note: Remember to update your CORS configurations in Spring Boot and API base URLs in the React client before deploying to production environments.
This project is licensed under the MIT License.