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.
This project requires Python for a CLI dependency (see CAS PDF processing notes). Below are short, copyable steps to install Python and pip on common platforms and to verify the installation.
Notes:
- We recommend Python 3.11 or newer.
- pip is included with modern Python installers; the commands below also show how to ensure pip is available and up-to-date.
Windows (PowerShell)
- Install Python using the official installer from python.org or via Winget (recommended on modern Windows):
# Install via winget (runs from an elevated PowerShell if required)
winget install --exact --id Python.Python
- After installation, confirm Python and pip are available:
python --version
python -m pip --version
- Ensure pip, setuptools and wheel are up-to-date:
python -m pip install --upgrade pip setuptools wheel
If python
isn't found, try py
(the Python launcher) or add the Python install directory to your PATH. You can also enable the "Add Python to PATH" option in the official Windows installer.
macOS
- The easiest way is Homebrew (if you have Homebrew installed):
brew install python
-
Alternatively, download the installer from https://python.org and run it.
-
Verify and upgrade pip:
python3 --version
python3 -m pip install --upgrade pip setuptools wheel
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 --version
python3 -m pip install --upgrade pip setuptools wheel --user
Linux (Fedora/CentOS/RHEL)
sudo dnf install -y python3 python3-pip
python3 --version
python3 -m pip install --upgrade pip setuptools wheel --user
Troubleshooting / tips
- If pip is missing, you can run:
python3 -m ensurepip --upgrade
- Use virtual environments for project work:
python -m venv .venv
# activate (PowerShell)
.\.venv\Scripts\Activate.ps1
# activate (bash/macOS/Linux)
source .venv/bin/activate
After installing Python and pip, re-run any Python-based CLI steps in this README (for example, the CAS PDF processing) and ensure the required Python packages are installed.
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.