A modern, privacy-focused personal finance management application built with the T3 Stack
PocketPal is an open-source personal finance management application designed to help you take control of your financial life. Built with modern technologies and a focus on privacy, it provides powerful tools for budgeting, expense tracking, financial planning, and goal setting.
- Expense Management - Track income and expenses with detailed categorization
- Budget Planning - Set monthly budgets with alerts and rollover options
- Receipt Management - Upload and organize receipts for tax purposes
- Credit Tracking - Monitor credit card usage and debt management
- Financial Goals - Set and track savings goals with automatic progress monitoring
- Analytics Dashboard - Visual insights into spending patterns and trends
- Monthly Summaries - Automated financial summaries and reports
- Category Analysis - Deep dive into spending by category
- Better Auth - Modern authentication with OAuth support (Google, GitHub)
- Data Ownership - Your financial data stays private and secure
- Open Source - Full transparency in how your data is handled
- Multi-User Support - Family or team financial management
- Organization Management - Shared budgets and financial planning
- Invitation System - Invite family members or financial advisors
This project uses the T3 Stack for a modern, type-safe development experience:
- Framework: Next.js 15 with App Router
- Authentication: Better Auth with OAuth providers
- Database: PostgreSQL with Drizzle ORM
- Styling: Tailwind CSS with custom components
- API: tRPC for type-safe API calls
- UI Components: Custom component library with Radix UI primitives
- Payments: Stripe integration for premium features
- Email: Resend for transactional emails
- Node.js 18+
- PostgreSQL database
- pnpm (recommended package manager)
-
Clone the repository
git clone https://github.com/yourusername/pocketpal.git cd pocketpal -
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env.local
Fill in your environment variables:
# Database DATABASE_URL="postgresql://username:password@localhost:5432/pocketpal" # Authentication AUTH_SECRET="your-auth-secret" NEXT_PUBLIC_GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" # Email (optional) BETTER_AUTH_EMAIL="[email protected]" RESEND_API_KEY="your-resend-api-key" # Stripe (optional) STRIPE_SECRET_KEY="your-stripe-secret-key" STRIPE_PUBLISHABLE_KEY="your-stripe-publishable-key"
-
Set up the database
pnpm db:push
-
Start the development server
pnpm dev
-
Open your browser Navigate to http://localhost:3000
pnpm dev- Start development server with Turbopackpnpm build- Build for productionpnpm start- Start production serverpnpm lint- Run ESLintpnpm typecheck- Run TypeScript type checkingpnpm db:push- Push database schema changespnpm db:studio- Open Drizzle Studio
src/
├── app/ # Next.js App Router pages
├── components/ # Reusable UI components
│ ├── ui/ # Base UI components
│ └── public/ # Public page components
├── features/ # Feature-based modules
│ ├── analytics/ # Analytics and reporting
│ ├── categories/ # Expense categories
│ ├── credits/ # Credit card management
│ ├── expenses/ # Income/expense tracking
│ ├── finances/ # Financial summaries
│ ├── goals/ # Financial goals
│ ├── receipts/ # Receipt management
│ └── users/ # User management
├── lib/ # Shared utilities and configurations
└── server/ # Server-side code (tRPC, database)
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
PocketPal - Take control of your financial future, one transaction at a time. 💪