InEx is a lightweight personal finance and expense-tracking application for keeping income, spending, accounts, and categories in one clear place.
The project is designed for people who want a simple view of their financial activity without the overhead of a large finance platform. It provides a focused workspace for recording transactions, reviewing spending patterns, managing accounts and categories, and adjusting personal preferences.
- 🤖 Client-Side Code Agent: Interactive AI chat assistant for personal finance insights. Features a secure local JavaScript environment for calculations, sending only execution observations to the Gemini model with Bring-Your-Own-Key (BYOK) support for complete data privacy.
- 📱 Progressive Web App (PWA): Fully installable on mobile and desktop devices (via browser menu options like "Install PWA") for a native app-like experience.
- ⚡ Offline-First Support: Powered by custom service workers and runtime caching, allowing the app to run seamlessly without an internet connection, backed by local storage.
- 📊 Overview dashboard for income, expenses, balance, and spending activity.
- 📝 Transaction creation, filtering, searching, editing, and deletion.
- 💳 Account management.
- 🏷️ Income and expense category management.
- 📉 Spending comparison and category breakdown views.
- 📥 Import and export of application data.
- ⚙️ Currency preferences and six color themes: forest, ocean, sunset, berry, slate, and emerald.
- 💻 Responsive layout for desktop and smaller screens.
- 🔁 Device sync on demand.
Financial clarity is easier to maintain when recording an expense takes very little effort and the resulting information is easy to understand. A small, focused tracker can help users:
- Build a consistent habit of recording income and expenses.
- Understand where money is going over time.
- Compare spending across days, months, and categories.
- Keep account and category information organized.
- Make decisions from their own data rather than relying on memory.
InEx aims to make that daily workflow approachable, readable, and practical.
- v2.2.0:
- Users now have the option to choose from six color themes: forest, ocean, sunset, berry, slate, and emerald.
- React
- TypeScript
- Parcel
Before installing the project, make sure you have:
- Node.js 18 or newer.
- npm 9 or newer.
- Git, if you are cloning the repository.
You can check your installed versions with:
node --version
npm --version-
Clone the repository and enter the project directory:
git clone <repository-url> cd inex
-
Install the dependencies:
npm install
-
Start the local development server:
npm run start
-
Open the local URL printed by Parcel in your browser.
The application stores its development data locally in the browser. That means data created in one browser profile is not automatically shared with another browser or device. Use the built-in data export when you need a backup or transfer.
npm run startStarts Parcel in development mode with rebuild support.
The repository is organized around the application entry point, reusable interface components, shared models and constants, and small utility modules for persistence, currency formatting, files, and CSV handling.
src/
components/ Reusable application views and interface components
context/ Modal context used by app
gemini/ Basic code agent implementation powered by Gemini
hooks/ Hooks for managing app state and transaction filters
icons/ App icons
pages/ Page views
utils/ Shared data, file, currency, and storage helpers
App.tsx Application composition
models.ts Shared data models
constants.ts Shared application constants
App.css Application styling
index.tsx Browser entry point
index.html HTML entry point
Contributions are welcome. Useful contributions include bug fixes, accessibility improvements, visual refinements, documentation updates, and improvements to data import or export workflows.
When reporting a bug, include:
- A concise description of the problem.
- Steps to reproduce it.
- The expected and actual behavior.
- A screenshot or console error when useful.
For feature requests, explain the user problem first, then describe the proposed solution. This helps keep the project focused on useful financial workflows rather than adding complexity for its own sake.

