Skip to content

Minulck/Finly-Money-Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Finly Money Manager

Finly Logo

Your Personal Finance Tracking Solution

Overview

Finly Money Manager is a comprehensive personal finance management application that helps users track their income, expenses, and overall financial health. Built with a modern tech stack, it offers an intuitive interface for managing your financial life.

Features

  • πŸ“Š Comprehensive Dashboard: Real-time financial overview with interactive charts and graphs
  • πŸ’° Income Tracking: Record and categorize income from multiple sources
  • πŸ’Έ Expense Management: Track and categorize expenses with detailed breakdowns
  • πŸ“ Smart Categories: Create custom categories with emoji support for better organization
  • πŸ“ˆ Financial Analytics: Visual representation using line charts and pie charts
  • πŸ“… Monthly Overview: Track monthly financial performance and trends
  • οΏ½ Secure Authentication: JWT-based authentication with email verification
  • πŸ“§ Email Integration: Account activation and password reset via email
  • πŸ–ΌοΈ Profile Management: Upload and manage profile pictures via Cloudinary
  • πŸ“± Responsive Design: Mobile-first design that works on all devices
  • 🎨 Modern UI: Built with TailwindCSS for a clean, professional interface
  • πŸ” Transaction Filtering: Advanced filtering options for transactions
  • πŸ“Š Export Functionality: Export data using Apache POI integration
  • 🌐 Real-time Updates: Live updates across all components

Tech Stack

Frontend (finly-webapp)

  • React 19.1.0 with Vite 7.0.4
  • TailwindCSS 4.1.11 for styling
  • React Router DOM 7.7.1 for navigation
  • Recharts 3.1.0 for data visualization
  • Axios 1.11.0 for API communication
  • React Hot Toast for notifications
  • Emoji Picker React for category emojis
  • Lucide React for icons
  • Moment.js for date handling

Backend (finly-backend)

  • Spring Boot 3.5.4 (Java 21)
  • Spring Security for authentication
  • Spring Data JPA for database operations
  • MySQL database
  • JWT (JSON Web Tokens) for authentication
  • Spring Mail with Brevo SMTP for email services
  • Apache POI for Excel file handling
  • Lombok for reducing boilerplate code
  • Maven for dependency management

Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • Java JDK 21
  • Maven 3.6+
  • MySQL 8.0+
  • IDE: VS Code (frontend), IntelliJ IDEA (backend)

Installation

  1. Clone the repository

    git clone https://github.com/Minulck/Finly-Money-Manager.git
    cd Finly-Money-Manager
  2. Frontend Setup

    cd finly-webapp
    npm install

    Create a .env file in the finly-webapp directory:

    # Backend API Configuration
    VITE_BASE_API_URL=http://localhost:8080
    
    # Cloudinary Configuration (for image uploads)
    VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
    VITE_CLOUDINARY_UPLOAD_PRESET=your_upload_preset

    Start the development server:

    npm run dev

    The frontend will be available at http://localhost:5173

  3. Backend Setup

    Database Setup:

    CREATE DATABASE finly_db;
    CREATE USER 'finly_user'@'localhost' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON finly_db.* TO 'finly_user'@'localhost';
    FLUSH PRIVILEGES;

    Environment Variables: Create environment variables or update application.properties:

    # Database Configuration
    DB_URL=jdbc:mysql://localhost:3306/finly_db?useSSL=false&serverTimezone=UTC
    DB_Username=finly_user
    DB_Password=your_password
    
    # Email Configuration (Brevo SMTP)
    MAIL_USERNAME=your_brevo_username
    MAIL_PASSWORD=your_brevo_password
    MAIL_FROM[email protected]
    
    # JWT Configuration
    JWT_SECRET_KEY=your_jwt_secret_key_here
    
    # Frontend URL
    FiNLY_FRONTEND_URL=http://localhost:5173
    
    # Activation Link
    FINLY_ACTIVATION_LINK=http://localhost:5173/activate

    Build and run the backend:

    cd finly-backend
    mvn clean install
    mvn spring-boot:run

    The backend API will be available at http://localhost:8080/api/v1.0

Project Structure

finly-webapp/                    # Frontend React application
β”œβ”€β”€ public/                     # Public assets
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ assets/                # Images and static files
β”‚   β”‚   └── images/           
β”‚   β”œβ”€β”€ components/            # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ AddCategoryForm/   # Category management
β”‚   β”‚   β”œβ”€β”€ AddExpenseForm/    # Expense entry
β”‚   β”‚   β”œβ”€β”€ AddIncomeForm/     # Income entry
β”‚   β”‚   β”œβ”€β”€ Dashboard/         # Main dashboard
β”‚   β”‚   β”œβ”€β”€ Charts/            # Data visualization
β”‚   β”‚   └── common/           # Shared components
β”‚   β”œβ”€β”€ pages/                # Main application pages
β”‚   β”‚   β”œβ”€β”€ Home/            # Dashboard page
β”‚   β”‚   β”œβ”€β”€ Income/          # Income management
β”‚   β”‚   β”œβ”€β”€ Expense/         # Expense tracking
β”‚   β”‚   β”œβ”€β”€ Category/        # Category management
β”‚   β”‚   β”œβ”€β”€ Login/           # Authentication
β”‚   β”‚   └── Signup/          # User registration
β”‚   β”œβ”€β”€ context/             # React Context providers
β”‚   β”œβ”€β”€ hooks/               # Custom React hooks
β”‚   └── util/               # Utility functions
β”œβ”€β”€ .env                     # Environment variables
β”œβ”€β”€ package.json            # Dependencies and scripts
└── vite.config.js         # Vite configuration

finly-backend/                  # Spring Boot backend
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”œβ”€β”€ java/
β”‚   β”‚   β”‚   └── com/
β”‚   β”‚   β”‚       └── Minul/
β”‚   β”‚   β”‚           └── finly_backend/
β”‚   β”‚   β”‚               β”œβ”€β”€ config/          # Configuration classes
β”‚   β”‚   β”‚               β”œβ”€β”€ controller/      # REST endpoints
β”‚   β”‚   β”‚               β”œβ”€β”€ dto/             # Data transfer objects
β”‚   β”‚   β”‚               β”œβ”€β”€ entity/          # Database entities
β”‚   β”‚   β”‚               β”œβ”€β”€ repository/      # Data access layer
β”‚   β”‚   β”‚               β”œβ”€β”€ security/        # Security config
β”‚   β”‚   β”‚               β”œβ”€β”€ service/         # Business logic
β”‚   β”‚   β”‚               └── util/            # Utility classes
β”‚   β”‚   └── resources/
β”‚   β”‚       └── application.properties    # Application configuration
β”‚   └── test/                           # Test files
β”œβ”€β”€ pom.xml                            # Maven dependencies
└── Dockerfile                        # Container configuration

Important Files

Frontend Configuration

  • .env: Environment variables (API URLs, Cloudinary config)
  • package.json: Dependencies and npm scripts
  • vite.config.js: Vite bundler configuration with TailwindCSS
  • eslint.config.js: ESLint configuration for code quality
  • src/util/apiEndpoints.jsx: Centralized API endpoint definitions
  • src/context/AppContext.jsx: Global state management with React Context
  • src/util/axiosConfig.js: Axios HTTP client configuration

Backend Configuration

  • application.properties: Environment-based configuration using ${VAR} placeholders
  • pom.xml: Maven dependencies and build configuration
  • src/main/java/.../config/: Security, CORS, and database configurations
  • src/main/java/.../security/: JWT authentication and authorization
  • Dockerfile: Container deployment configuration

Key Environment Variables

Frontend (.env):

  • VITE_BASE_API_URL: Backend API base URL
  • VITE_CLOUDINARY_CLOUD_NAME: Cloudinary cloud name for image uploads

Backend (Environment Variables):

  • DB_URL, DB_Username, DB_Password: Database connection
  • MAIL_USERNAME, MAIL_PASSWORD, MAIL_FROM: Email service configuration
  • JWT_SECRET_KEY: JWT token signing secret
  • FiNLY_FRONTEND_URL: Frontend URL for CORS and email links
  • FINLY_ACTIVATION_LINK: Email activation link template

API Documentation

Base URL

http://localhost:8080/api/v1.0

Authentication Endpoints

  • POST /login - User login
  • POST /register - User registration
  • GET /activate - Account activation
  • POST /reset-email - Send password reset email
  • POST /reset-password - Reset password

Core Endpoints

  • GET /profile - Get user profile
  • PUT /profile - Update user profile
  • PUT /profile/password - Change password
  • GET /categories - Get user categories
  • POST /categories - Create new category
  • GET /incomes - Get user incomes
  • POST /incomes - Add new income
  • GET /expenses - Get user expenses
  • POST /expenses - Add new expense
  • GET /dashboard/dashboard-data - Get dashboard data

Key Features in Detail

Financial Dashboard

  • Real-time Overview: Live financial status with automatic updates
  • Interactive Charts: Line charts for trends, pie charts for category breakdowns
  • Monthly Insights: Monthly financial performance tracking
  • Recent Transactions: Quick access to latest income and expense entries
  • Category Analysis: Visual breakdown of spending by category

Transaction Management

  • Income Tracking: Add, edit, and delete income entries with categories
  • Expense Recording: Detailed expense tracking with custom categories
  • Smart Categorization: Emoji-supported categories for better visual recognition
  • Transaction History: Complete transaction history with filtering options
  • Bulk Operations: Efficient management of multiple transactions

User Experience

  • Responsive Design: Mobile-first approach with TailwindCSS
  • Real-time Notifications: Toast notifications for user actions
  • Profile Management: Cloudinary-powered profile image uploads
  • Email Integration: Automated email verification and password reset
  • Secure Authentication: JWT-based authentication with refresh tokens

Contributing

We welcome contributions to Finly Money Manager! Please feel free to submit issues and pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

Minul - GitHub Profile Email - Email_Me Project Link: https://github.com/Minulck/Finly-Money-Manager


Made with ❀️ by Minul

About

A smart, sleek, and easy-to-use finance tool or money manager.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages