Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - rajadilipkolli/hilla-folioman: Website when end user can search for mutual funds, check portfolio
Nothing Special   »   [go: up one dir, main page]

Skip to content

rajadilipkolli/hilla-folioman

Repository files navigation

Open in Gitpod

Hilla FolioMan: Mutual Fund Portfolio Management System

Project Overview

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.

What FolioMan Does

  • 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

Architecture Overview

FolioMan follows a modern client-server architecture with these key components:

  1. Frontend (Client-side)

    • Built with React and Hilla
    • Responsive user interface for portfolio management
    • Interactive data visualization components
  2. Backend (Server-side)

    • Java Spring Boot application
    • RESTful API endpoints
    • Business logic for investment calculations and portfolio analysis
  3. Database

    • PostgreSQL database for persistent storage
    • Separate schemas for portfolio data and mutual fund information
  4. External Integrations

    • AMFI (Association of Mutual Funds in India) data integration
    • BSE Star MF integration for fund data

Prerequisites

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.

Install Python & pip

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)

  1. 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
  1. After installation, confirm Python and pip are available:
python --version
python -m pip --version
  1. 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

  1. The easiest way is Homebrew (if you have Homebrew installed):
brew install python
  1. Alternatively, download the installer from https://python.org and run it.

  2. 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.

Running the application

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.

Run tests

./mvnw clean verify

Run locally

docker-compose -f docker/docker-compose.yml up -d
./mvnw spring-boot:run -Dspring-boot.run.profiles=local

Using Testcontainers at Development Time

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

Deploying to Production

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

Project structure

DirectoryDescription
src/main/frontend/Client-side source directory
    index.htmlHTML template
    index.tsFrontend entrypoint, bootstraps a React application
    routes.tsxReact Router routes definition
    views/MainLayout.tsxMain 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.javaServer entry-point

Key Features

  • 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

Useful links

About

Website when end user can search for mutual funds, check portfolio

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages

0