FolioMan is a comprehensive mutual fund portfolio management application built using Hilla and Spring Boot. The application helps investors track, analyze, and optimize their mutual fund investments in one centralized platform.
- Portfolio Tracking: Automatically imports and tracks your mutual fund investments using CAS (Consolidated Account Statement) files
- Portfolio Analysis: Analyzes your investment performance including XIRR (Extended Internal Rate of Return)
- Investment Optimization: Provides rebalancing tools to optimize your portfolio allocation
- Transaction History: Maintains a detailed history of all your mutual fund transactions
FolioMan follows a modern client-server architecture with these key components:
-
Frontend (Client-side)
- Built with React and Hilla
- Responsive user interface for portfolio management
- Interactive data visualization components
-
Backend (Server-side)
- Java Spring Boot application
- RESTful API endpoints
- Business logic for investment calculations and portfolio analysis
-
Database
- PostgreSQL database for persistent storage
- Separate schemas for portfolio data and mutual fund information
-
External Integrations
- AMFI (Association of Mutual Funds in India) data integration
- BSE Star MF integration for fund data
Before running the application, ensure you have the following prerequisites installed:
- Java 21 or later
- Maven
- Docker (for local development with PostgreSQL)
- Python with pip (for CAS PDF file processing)
- casparser: A Python CLI tool required for processing password-protected CAS PDF files
pip install casparser
This tool must be installed on the server environment where the application will run. The PDF upload functionality for CAS files will not work without this dependency.
The project is a standard Maven project. To run it from the command line,
type mvnw
(Windows), or ./mvnw
(Mac & Linux), then open
http://localhost:8080 in your browser.
You can also import the project to your IDE of choice as you would with any Maven project.
./mvnw clean verify
docker-compose -f docker/docker-compose.yml up -d
./mvnw spring-boot:run -Dspring-boot.run.profiles=local
You can run TestApplication.java
from your IDE directly.
You can also run the application using Maven as follows:
./mvnw spotless:apply spring-boot:test-run
To create a production build, call mvnw clean package -Pproduction
(Windows),
or ./mvnw clean package -Pproduction
(Mac & Linux).
This will build a JAR file with all the dependencies and front-end resources,
ready to be deployed. The file can be found in the target
folder after the build completes.
Once the JAR file is built, you can run it using
java -jar target/hilla-folioman-1.0.0-SNAPSHOT.jar
Directory | Description |
---|---|
src/main/frontend/ | Client-side source directory |
index.html | HTML template |
index.ts | Frontend entrypoint, bootstraps a React application |
routes.tsx | React Router routes definition |
views/MainLayout.tsx | Main layout component, contains the navigation menu, uses App Layout |
views/ | UI view components |
themes/ | Custom CSS styles |
src/main/java/com/app/folioman/ | Server-side source directory, contains the server-side Java code |
portfolio/ | Portfolio management services and models |
mfschemes/ | Mutual fund scheme data and services |
Application.java | Server entry-point |
- Import Mutual Funds: Upload CAS files from mutual fund registrars (CAMS, Karvy)
- Portfolio View: See your entire mutual fund portfolio in one place
- NAV Updates: Automatically fetches latest NAVs (Net Asset Values)
- Rebalancing Tool: Calculate optimum allocation for new investments
- Performance Tracking: Track your investments over time with graphical reports
- Read the documentation at hilla.dev/docs.
- Ask questions on Stack Overflow or join our Discord channel.
- Report issues, create pull requests in GitHub.