FINIX is an all-in-one platform designed to shift personal finance from passive expense tracking to proactive, goal-oriented savings and intelligent travel planning. The platform combines budgeting, expense splitting, and trip planning into a single, intelligent application.
FINIX serves as the Single Source of Truth for a user's financial life, with an AI Engine that generates personalized, context-aware savings strategies by directly comparing real-time spending habits against concrete travel goals.
Value Proposition: Unification of three distinct functionalities (budgeting, expense splitting, trip planning) into a single, intelligent application - "1 App Replaces 3".
This is a full-stack application with separate frontend and backend components:
- Technology: FastAPI, PostgreSQL, SQLAlchemy, Groq API
- Location: Root directory (
main.py,models.py,database.py, etc.) - Purpose: RESTful API server handling database operations and AI-powered suggestions
- Technology: Next.js 16, React 19, TypeScript, Tailwind CSS
- Location: Root directory with Next.js structure (
app/,components/, etc.) - Purpose: Modern web interface for financial dashboard, expense tracking, and travel planning
- Smart Analytics: Real-time insights into spending patterns with AI-powered recommendations
- Expense Tracking: Comprehensive expense management and categorization
- Wallet Management: Multi-wallet support with balance tracking
- Budget Tracking: Monthly budget monitoring and alerts
- FairShare: Split expenses with friends and track shared costs
- Travel Goals: Set savings targets for specific trips
- AI-Powered Suggestions: Get personalized savings strategies that link current spending to travel goals
- Dark Mode: Beautiful dark and light themes
- Responsive Design: Works seamlessly on desktop and mobile devices
- Smart Suggestions: AI-powered recommendations to optimize finances
- Framework: FastAPI (Python)
- Database: PostgreSQL with SQLAlchemy ORM
- AI Engine: Groq API (with mock mode fallback)
- Data Processing: Pandas
- Framework: Next.js 16 (App Router)
- UI Library: React 19
- Language: TypeScript 5
- Styling: Tailwind CSS 4
- UI Components: shadcn/ui (Radix UI primitives)
- Charts: Recharts
- Forms: React Hook Form + Zod validation
- Python 3.9+
- PostgreSQL 12+
- Groq API key
- Node.js 18.17+ (LTS recommended)
- pnpm (recommended) or npm/yarn
- Git 2.0+
-
Create virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Python dependencies:
pip install -r requirements.txt
-
Set up environment variables:
# Copy the template # Windows: copy env_template.txt .env # Linux/Mac: cp env_template.txt .env # Edit .env with your credentials: # DATABASE_URL=postgresql://user:password@host:port/database # GROQ_API_KEY=your_api_key_here
-
Create PostgreSQL database:
CREATE DATABASE finix_db;
-
Start the backend server:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
The API will be available at:
- API: http://localhost:8000
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
-
Install Node.js dependencies:
# Using pnpm (recommended) pnpm install # OR using npm npm install # OR using yarn yarn install
-
Set up environment variables (optional):
# Copy the example file (if it exists) # Windows: Copy-Item .env.example .env.local # Linux/Mac: cp .env.example .env.local # Configure API endpoint if backend is on different port # NEXT_PUBLIC_API_URL=http://localhost:8000
-
Start the development server:
pnpm dev # OR: npm run dev # OR: yarn dev
The frontend will be available at: http://localhost:3000
finix/
βββ # Backend Files
βββ main.py # FastAPI entry point
βββ models.py # SQLAlchemy ORM models
βββ schemas.py # Pydantic schemas
βββ database.py # Database connection & session management
βββ ai_engine.py # AI Engine ("Central Brain")
βββ requirements.txt # Python dependencies
βββ env_template.txt # Environment variables template
β
βββ # Frontend Files
βββ app/ # Next.js App Router
β βββ dashboard/ # Dashboard pages
β β βββ expenses/ # Expenses page
β β βββ fairshare/ # FairShare page
β β βββ travel/ # Travel page
β β βββ wallet/ # Wallet page
β β βββ suggestions/ # Smart Suggestions page
β β βββ page.tsx # Dashboard overview
β βββ landing/ # Landing page
β βββ layout.tsx # Root layout
β βββ page.tsx # Root page
β βββ globals.css # Global styles
βββ components/ # React components
βββ lib/ # Utility functions
βββ public/ # Static assets
βββ package.json # Node.js dependencies
βββ next.config.mjs # Next.js configuration
βββ tsconfig.json # TypeScript configuration
POST /users/- Create a new userGET /users/{user_id}- Get user by IDGET /users/- List all users
POST /transactions/- Create a new transactionGET /transactions/{user_id}- Get all transactions for a user- Query params:
skip,limit,start_date,end_date,category
- Query params:
GET /transactions/{user_id}/summary- Get transaction summary statistics
POST /travel-goals/- Create a new travel goalGET /travel-goals/{user_id}- Get all travel goals for a userGET /travel-goals/{user_id}/{goal_id}- Get specific travel goalPUT /travel-goals/{user_id}/{goal_id}- Update travel goalDELETE /travel-goals/{user_id}/{goal_id}- Delete travel goal
GET /suggestions/{user_id}- Get AI-generated personalized savings suggestions
See the API documentation for detailed request/response schemas.
The AI Engine (ai_engine.py) is the "Central Brain" of FINIX:
- Data Retrieval: Fetches user transactions and travel goals from PostgreSQL
- Processing (Pandas): Analyzes spending patterns, calculates metrics (average spending, non-essential spending, savings shortfall)
- LLM Prompting (Groq): Generates personalized savings strategies linking current expenses to travel goals
- Proactive Insight: Returns actionable suggestions that accelerate travel timeline
If the Groq API is unavailable or fails, the engine automatically falls back to mock suggestions (useful for Round 1 Demo/MVP without live LLM).
id(PK)username(unique)home_currency(default: USD)created_at,updated_at
id(PK)user_id(FK)amountcategorycurrencydatedescription(optional)created_at
id(PK)user_id(FK)nametarget_amountcurrent_savedtarget_date(optional)destination(optional)created_at,updated_at
DATABASE_URL=postgresql://user:password@host:port/database
GROQ_API_KEY=your_api_key_hereNEXT_PUBLIC_API_URL=http://localhost:8000Database Connection Failed:
- Verify PostgreSQL is running
- Check
DATABASE_URLin.envfile - Ensure database exists:
CREATE DATABASE finix_db;
AI Suggestions Not Working:
- Check
GROQ_API_KEYin.envfile - Engine will fallback to mock suggestions if API key is missing
- Check API rate limits and quotas
Port Already in Use:
# Kill process on port 3000
# Windows: netstat -ano | findstr :3000
# macOS/Linux: lsof -ti:3000 | xargs kill -9
# Or use different port
pnpm dev -- -p 3001Module Not Found:
# Clear Next.js cache
rm -rf .next # or Remove-Item -Recurse -Force .next on Windows
pnpm install
pnpm devAPI Connection Issues:
- Verify backend is running on port 8000
- Check
NEXT_PUBLIC_API_URLin.env.local - Check browser console for CORS errors
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4pnpm build
pnpm startRecommended Settings:
- Use environment variables for all secrets
- Enable HTTPS in production
- Configure CORS for production domain
- Set up database connection pooling
- Implement authentication/authorization
- Always use environment variables for sensitive data (API keys, database passwords)
- Never commit
.envfiles to version control - Implement authentication/authorization before production deployment
- Use HTTPS in production
- Validate and sanitize all user inputs (handled by Pydantic schemas in backend)
- FastAPI Documentation
- Next.js Documentation
- React Documentation
- SQLAlchemy Documentation
- Groq API Documentation
- Tailwind CSS Documentation
This project is private and proprietary.
Built with β€οΈ using FastAPI, Next.js, React, and TypeScript