Penny is a modern, AI-powered expense tracking application built with Next.js, Firebase, and Gemini AI. Track expenses, manage budgets, collaborate in groups, and get intelligent insights - all with a beautiful, mobile-first interface.
- Natural Language Input: Describe expenses in plain English
- Smart Categorization: AI automatically categorizes expenses
- Receipt OCR: Upload receipts and extract details automatically
- Conversational Interface: Chat with Penny to manage your finances
- Personal & Group Budgets: Set budgets at individual or group level
- Real-time Tracking: Live budget usage with visual indicators
- Smart Alerts: Get notified at 75%, 90%, and 100% thresholds
- Budget Impact Preview: See impact before saving expenses
- Shared Groups: Track expenses with family, roommates, or teams
- Role-Based Permissions: Owner, Admin, Member roles with granular controls
- Group Invitations: Invite members via email
- Group Budgets: Set and track budgets for the entire group
- Real-time Updates: Get notified of group activity instantly
- Budget Alerts: Never exceed your budget unknowingly
- Smart Grouping: Similar notifications grouped to reduce noise
- Customizable Settings: Control what you're notified about
- Dashboard: Visual overview of spending patterns
- Category Breakdown: See where your money goes
- Trends: Track spending over time
- Group Analytics: Compare personal vs group spending
- Passkey Authentication: Passwordless login with biometrics
- Firebase Auth: Secure authentication with email/password
- Row-Level Security: Firestore rules ensure data isolation
- Admin Console: Monitoring and management tools
- Offline Support: Work without internet connection
- Mobile-First Design: Optimized for mobile devices
- Push Notifications: Native-like notification experience
- Install to Home Screen: Works like a native app
- Node.js 20+
- Firebase account
- Google Gemini API key (for AI features)
git clone https://github.com/sarathfrancis90/penny.git
cd penny
npm installcp env.example .env.local
# Edit .env.local with your Firebase and Gemini API keysfirebase login
firebase deploy --only firestorenpm run devOpen http://localhost:3000 to see the app!
- Agent Guide - Required reading order and non-negotiable agent rules
- Agent Documentation Index - Complete agent operating manual
- Complete File Map - Generated inventory covering tracked and nonignored working-tree files
- Database Schema - Complete database structure
- DevOps Guide - CI/CD and best practices
- Setup Complete - Infrastructure overview
- Firestore Rules - Security rules deployment
- Permission Fixes - Troubleshooting
- AI Conversational Interface
- Budgeting System
- Conversation History
- Groups Management
- Notification System
- Mobile-First Design
- Passkey Authentication
- Receipt Storage
- Deployment Guide - Full deployment instructions
- Quick Start - Get started in 5 minutes
- Firebase Setup - Firebase configuration
- Gemini Setup - AI integration
- PWA Setup - Progressive Web App
- Vercel Deployment - Vercel-specific fixes
- Testing Guide - Comprehensive testing strategy
- Groups Testing - Group features testing
- Notifications Testing - Notification testing
- Default Group Verification
- Admin Console - Admin dashboard setup
- Costs & Monitoring - Cost tracking
- Admin Updates - Latest admin features
- Frontend: Next.js 15, React 18, TypeScript
- Backend: Next.js API Routes, Firebase Admin SDK
- Database: Cloud Firestore (NoSQL)
- Storage: Firebase Storage (receipts/images)
- AI: Google Gemini 1.5 Pro
- Authentication: Firebase Auth + Passkeys
- Styling: Tailwind CSS, Shadcn UI
- State Management: React Hooks, Firestore Real-time
- PWA: Workbox, Service Workers
penny/
βββ database/ # Database configuration
β βββ firestore.rules # Security rules
β βββ firestore.indexes.json # Query indexes
β βββ storage.rules # Storage rules
βββ docs/ # Documentation
β βββ admin/ # Admin guides
β βββ database/ # Database docs
β βββ deployment/ # Deployment guides
β βββ features/ # Feature documentation
β βββ testing/ # Testing guides
βββ public/ # Static assets
β βββ manifest.json # PWA manifest
βββ scripts/ # Utility scripts
βββ src/
β βββ app/ # Next.js app router
β β βββ api/ # API routes
β β βββ admin-console/ # Admin dashboard
β β βββ budgets/ # Budget management
β β βββ groups/ # Group management
β β βββ settings/ # User settings
β βββ components/ # React components
β β βββ budgets/ # Budget components
β β βββ chat/ # Chat interface
β β βββ groups/ # Group components
β β βββ notifications/ # Notification UI
β β βββ ui/ # Shadcn UI components
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utilities & services
β βββ services/ # Business logic
β βββ types/ # TypeScript types
βββ .github/
βββ workflows/ # CI/CD pipelines
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Run TypeScript compiler# Deploy database configuration
firebase deploy --only firestore
# Deploy specific components
firebase deploy --only firestore:rules
firebase deploy --only firestore:indexes
firebase deploy --only storage
# Start emulators for local testing
firebase emulators:startSee env.example for required environment variables:
- Firebase configuration
- Gemini API key
- JWT secret for passkeys
- NextAuth configuration
Every push to main automatically deploys database configuration via GitHub Actions.
Triggers on changes to:
database/firestore.rulesdatabase/firestore.indexes.jsondatabase/storage.rulesfirebase.json
# Deploy everything
npm run build
vercel --prod
# Deploy only database
firebase deploy --only firestoreSee Deployment Guide for detailed instructions.
- Firestore Usage: Monitor read/write operations
- Storage Usage: Track file storage
- Auth Users: Monitor active users
- Performance: Track query performance
Access at /admin-console for:
- User management
- Cost monitoring
- System health
- Analytics
See Admin Console Guide for details.
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow TypeScript best practices
- Write clear commit messages
- Add tests for new features
- Update documentation
- Ensure CI/CD passes
This project is private and proprietary. All rights reserved.
- Next.js Team - Amazing React framework
- Firebase - Backend infrastructure
- Google Gemini - AI capabilities
- Shadcn - Beautiful UI components
- Vercel - Hosting and deployment
- Documentation: Check the docs folder
- Issues: Open a GitHub issue
- Questions: Contact the maintainer
- Live App: https://penny-amber.vercel.app
- Firebase Console: https://console.firebase.google.com/project/penny-f4acd
- GitHub Actions: https://github.com/sarathfrancis90/penny/actions
Built with β€οΈ by Sarath Francis
Making expense tracking effortless with AI