Skip to content

About

High-performance PWA for personal finance management. Built with React, Vite, and TailwindCSS. Features offline support (IndexedDB) and multi-currency.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

137 Commits

Folders and files

Repository files navigation

πŸ’Έ Finance Manager PWA

App Logo

version license react vite tailwindcss

Finance Manager is a modern Progressive Web Application (PWA) designed for convenient tracking of personal finances, multi-currency wallets, and detailed analytics. The app works completely offline, utilizes local device storage, and is optimized to look and feel like a native app on iOS and Android.

πŸ”— Demo: Open App


πŸ“‘ Table of Contents


πŸ“Έ Screenshots

Home / Dashboard Wallets Analytics & Charts
Home Screen Wallets Screen Stats Screen
Add Transaction Categories / Icons Settings
Add Transaction Categories Settings

Responsive design: The UI automatically adapts to a sidebar layout on desktop devices.


πŸ”’ Privacy First

This application is 100% Client-Side.

  • No Servers: All financial data is stored securely and locally on your device using IndexedDB.
  • No Tracking: No analytics, no cookies, no data collection. Your money is your business.
  • Biometric Security: Features a local PIN/Biometric lock screen UI to protect your data from prying eyes.
  • Ownership: You maintain full control over your financial data without relying on third-party cloud services.

✨ Key Features

πŸ›  Functionality

  • Offline Mode: Fully functional without internet access (PWA + Service Workers).
  • Multi-Currency Support: Fetch real-time exchange rates via the NBP Web API (National Bank of Poland) to automatically calculate your total net worth in a base currency.
  • Wallets Management: Create and manage cash, bank accounts, and crypto wallets. Easily switch between them using a gesture-friendly carousel.
  • Transactions & Categories: Log income and expenses. Filter by periods (daily, monthly, yearly).
  • Recurring Payments: Built-in engine to handle and automate recurring transactions.
  • Analytics: Interactive charts and highlights to visualize spending habits.
  • Multi-Language (i18n): Dynamically switch between English, Polish, and Ukrainian.

🎨 UI/UX (Interface)

  • Mobile-First Design: Looks and behaves exactly like a native app (Bottom Navigation, Safe Areas, hidden browser bars).
  • Desktop Support: Adapts to a Sidebar layout on larger screens.
  • Animations: Smooth page transitions, animated numbers, and micro-interactions.
  • Themes: Clean, modern interface styled with Tailwind CSS.

πŸ— Tech Stack

  • Core: React 18+, Vite
  • Styling: Tailwind CSS
  • Database: IndexedDB (Local Browser Storage)
  • PWA: vite-plugin-pwa (Manifest, Service Workers, Offline capabilities)
  • State & Data Fetching: Custom React Hooks, Context API
  • Charts: recharts
  • Animations: framer-motion
  • Localization: react-i18next, i18next-browser-languagedetector
  • Utilities: @hello-pangea/dnd (Drag-and-Drop), date-fns (Date formatting), lucide-react (Icons)

πŸš€ Installation and Setup

To run the project locally, you will need Node.js installed.

  1. Clone the repository:

    git clone https://github.com/OwenSide/finanse-manager.git
    cd finanse-manager
  2. Install dependencies:

    npm install
  3. Start the development server:

    npm run dev

The application will be available at http://localhost:5173.


πŸ“¦ Build and Deploy

The project is configured for static deployment (perfect for GitHub Pages).

Build the project:

npm run build

Deploy (automated script)::

npm run deploy

This command will build the project and push the dist folder to the gh-pages branch.


πŸ“± How to Install on Phone (PWA)

The app does not require downloading from the App Store or Google Play.

🍏 iOS (iPhone/iPad)

  1. Open the Demo Link in Safari.
  2. Tap the "Share" button (square with an upward arrow at the bottom).
  3. Select "Add to Home Screen".
  4. The app will now work like a native application (without the browser address bar).

πŸ€– Android

  1. Open the Demo Link in Chrome.
  2. Tap the menu (three dots) or wait for the pop-up banner.
  3. Select "Install App" or "Add to Home screen".

πŸ“‚ Project Structure

Click to view file structure
src/
β”œβ”€β”€ api/                   # External API logic
β”‚   └── exchangeRates.js   # NBP Web API integration
β”œβ”€β”€ components/            # React components
β”‚   β”œβ”€β”€ analytics/         # Recharts and statistical UI
β”‚   β”œβ”€β”€ layout/            # App Shell, BottomNav, Sidebar
β”‚   β”œβ”€β”€ modals/            # Modals (Add Transaction, Edit Category)
β”‚   β”œβ”€β”€ transactions/      # Transaction lists and filters
β”‚   β”œβ”€β”€ ui/                # Shared UI (BiometricLock, Icons)
β”‚   └── wallets/           # Wallet Carousel and Selection
β”œβ”€β”€ context/               # Global state (PreferencesContext)
β”œβ”€β”€ hooks/                 # Custom React Hooks (useMonthlyStats)
β”œβ”€β”€ locales/               # i18n JSON files
β”‚   β”œβ”€β”€ en/                # English
β”‚   β”œβ”€β”€ pl/                # Polish
β”‚   └── uk/                # Ukrainian
β”œβ”€β”€ pages/                 # Route Views (Home, Wallets, Stats, Categories)
β”œβ”€β”€ utils/                 # Helper functions
β”‚   β”œβ”€β”€ formatters.js      # Number & Date formatting
β”‚   β”œβ”€β”€ recurringEngine.js # Recurring logic
β”‚   └── syncExchangeRates.js # Background sync for rates
β”œβ”€β”€ db.js                  # IndexedDB configuration & CRUD operations
β”œβ”€β”€ i18n.js                # i18next initialization
β”œβ”€β”€ App.jsx                # Main layout wrapper
β”œβ”€β”€ main.jsx               # App entry point
└── index.css              # Global Tailwind styles

πŸ“„ License

This project is licensed under the GPLv3 License.


About

High-performance PWA for personal finance management. Built with React, Vite, and TailwindCSS. Features offline support (IndexedDB) and multi-currency.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages