Your personal finance OS
Demo
Β·
Website
Β·
Issues
Nuts is a comprehensive personal finance management platform designed to be your complete financial operating system. Built with modern technologies and AI-powered insights, Nuts helps you track, categorize, and analyze your financial transactions across multiple accounts and platforms.
Whether you're managing personal finances, tracking business expenses, or analyzing spending patterns, Nuts provides the tools and intelligence you need to make informed financial decisions.
-
π€ AI-Powered Transaction Processing: (Convert natural language like "bought coffee for $4.50" into structured transaction data)
-
π Advanced Rules Engine: Automatically categorize and organize transactions with custom rules
-
π¦ Bank Connectivity: Connect banks worldwide through multiple providers
- North America: Plaid, Teller
- Europe: GoCardless
- Asia: Brankas
- Africa: Mono, Okra
-
Secure Connections: Industry-standard security for all bank integrations
-
Real-time Sync: Automatic transaction import and synchronization
-
π± Multi-Platform Support (Web, mobile)
-
π Financial Intelligence
- Daily Insights: Automated daily financial summaries and insights
- Spending Analysis: Advanced analytics and spending pattern recognition
- Financial Forecasting: AI-powered predictions and recommendations
-
Budget Tracking: Intelligent budget management and alerts
The fastest way to get Nuts running locally:
# Clone the repository
git clone https://github.com/Fantasy-Programming/nuts.git
cd nuts
# Start all services
docker-compose up -d
For development or custom deployments:
- Go 1.23+ (for backend server)
- Node.js 18+ (for frontend and services)
- PostgreSQL 17+ (for database)
- Docker (optional, for containerized services)
# Start PostgreSQL (or use your existing instance)
docker run -d \
--name nuts-postgres \
-e POSTGRES_USER=nuts \
-e POSTGRES_PASSWORD=nuts \
-e POSTGRES_DB=nuts \
-p 5432:5432 \
postgres:17-alpine
cd server
# Copy environment configuration
cp .env.example .env
# Install dependencies and run
go mod tidy
go run cmd/api/main.go
cd client
# Install dependencies
npm install
# Start development server
npm run dev
cd services/ai
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Train initial model
python training/training_pipeline.py
# Start service
uvicorn app.main:app --host 0.0.0.0 --port 8000
cd services/mail-generator
# Install dependencies
npm install
# Start service
npm start
Create .env
files in the appropriate directories with your configuration:
# Database
DB_HOST=localhost
DB_PORT=5432
DB_NAME=nuts
DB_USER=nuts
DB_PASS=nuts
# Email (Optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your-email@gmail.com
SMTP_PASSWORD=your-app-password
# Bank Connections (Optional)
PLAID_CLIENT_ID=your_plaid_client_id
PLAID_SECRET=your_plaid_secret
TELLER_APPLICATION_ID=your_teller_app_id
# AI/LLM Configuration (Optional)
LLM_PROVIDER=local
LLM_LOCAL_MODEL=gemma2:2b
- Getting Started Guide: Comprehensive setup and first steps
- Project Structure: Understanding the codebase architecture
- Transaction Rules: Configure automatic transaction processing
- Email System: Set up and customize the email system
- AI/LLM Features: Neural transaction parsing documentation
- API Documentation: Complete API reference and examples
- Service Documentation: Individual service documentation
nuts/
βββ client/ # React web application
βββ mobile/ # React Native mobile app
βββ server/ # Go backend API
βββ services/
β βββ ai/ # Python AI/ML service
β βββ mail-generator/ # Node.js email service
βββ marketing/ # Astro marketing website
βββ docs/ # Documentation
βββ scripts/ # Utility scripts
Nuts follows a modern microservices architecture designed for scalability, maintainability, and developer experience.
Frontend Stack:
- React 19 - Modern web interface with hooks and suspense
- TypeScript - Type-safe development
- Vite - Fast build tool and development server
- TailwindCSS - Utility-first CSS framework
- Tanstack Router - Type-safe routing
- Tanstack Query - Server state management
Mobile Stack:
- React Native - Cross-platform mobile development
- Expo - Development platform and tools
- TypeScript - Type-safe mobile development
- NativeWind - TailwindCSS for React Native
Backend Stack:
- Go 1.23+ - High-performance REST API
- Chi Router - Lightweight HTTP router
- PostgreSQL 17 - Primary database
- SQLC - Type-safe SQL code generation
- River - Background job processing
AI/ML Stack:
- Python FastAPI - AI service for transaction categorization
- Scikit-learn - Machine learning models
- Ollama - Local LLM inference
- OpenAI/Gemini - Remote LLM providers
Infrastructure:
- Docker - Containerization
- MinIO - S3-compatible object storage
- Redis - Caching and sessions
- GitHub Actions - CI/CD pipeline
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Web Client β β Mobile App β β Marketing Site β
β (React/TS) β β (React Native) β β (Astro) β
βββββββββββ¬ββββββββ βββββββββββ¬ββββββββ βββββββββββββββββββ
β β
ββββββββββββ¬ββββββββββββ
β
βββββββββββββββββββ
β API Gateway β
β (Go/Chi) β
βββββββββββ¬ββββββββ
β
βββββββββββββββββΌββββββββββββββββ
β β β
βββββΌβββββ βββββββΌββββββ βββββΌβββββ
β AI β β Mail β β Core β
βService β βGenerator β β API β
β(Python)β β (Node.js) β β (Go) β
ββββββββββ βββββββββββββ βββββ¬βββββ
β
βββββββββββΌββββββββββ
β PostgreSQL β
β MinIO Storage β
βββββββββββββββββββββ
Banking Providers:
- Plaid - North American banks (US, Canada)
- Teller - US banking with modern API
- GoCardless - European Open Banking
- Brankas - Southeast Asian banks
- Mono/Okra - African banking infrastructure
Third-Party Services:
- Resend - Transactional email delivery
- PostHog - Product analytics and feature flags
- GitHub Actions - Continuous integration and deployment
- Paystack - Payment processing (where applicable)
- Transaction Import: Bank connections automatically sync transactions
- AI Processing: Neural parsing converts natural language to structured data
- Rule Engine: Automatic categorization and organization
- Real-time Updates: WebSocket connections for live updates
- Email Notifications: Automated alerts and daily summaries
- Analytics: Background processing for insights and forecasting
- End-to-End Encryption for sensitive financial data
- OAuth 2.0 authentication with bank providers
- JWT tokens for API authentication
- Rate Limiting on all API endpoints
- Data Anonymization for AI training
- GDPR Compliance with data export/deletion
- Go 1.23+
- Node.js 18+
- Python 3.9+
- PostgreSQL 17+
- Docker & Docker Compose
-
Fork and Clone
git clone https://github.com/your-username/nuts.git cd nuts
-
Setup Development Environment
# Install development tools (if using devenv) direnv allow # Or install manually go install github.com/air-verse/air@latest npm install -g pnpm
-
Start Development Services
# Start database and dependencies docker-compose up -d postgres redis minio # Start backend with hot reload cd server && air # Start frontend with hot reload cd client && pnpm dev # Start mobile development cd mobile && pnpm start
-
Running Tests
# Backend tests cd server && go test ./... # Frontend tests cd client && pnpm test # AI service tests cd services/ai && python -m pytest
- Go: Follow
gofmt
andgolangci-lint
standards - TypeScript: ESLint + Prettier configuration
- Python: Black formatting + flake8 linting
- Commit Messages: Conventional commits format
- Use
sqlc
for type-safe database queries - Follow RESTful API conventions
- Document endpoints with OpenAPI/Swagger
- Add proper error handling and validation
# Production build
docker-compose -f compose.yml -f compose.prod.yml up -d
# Or use provided scripts
./scripts/deploy.sh production
-
Build Applications
# Build server cd server && go build -o bin/server cmd/api/main.go # Build client cd client && pnpm build # Build AI service cd services/ai && pip install -r requirements.txt
-
Configure Environment
# Copy and configure production environment cp .env.example .env.production # Edit .env.production with your production values
-
Database Migration
# Run database migrations cd server && ./bin/server migrate
Nuts can be deployed on various cloud platforms:
- AWS: ECS/EKS with RDS PostgreSQL
- Google Cloud: Cloud Run with Cloud SQL
- Azure: Container Instances with Azure Database
- DigitalOcean: App Platform with Managed Database
- Railway: One-click deployment (coming soon)
Critical environment variables for production:
# Database
DATABASE_URL=postgresql://user:pass@host:5432/nuts
# Security
JWT_SECRET=your-super-secret-key
ENCRYPTION_KEY=32-byte-encryption-key
# External Services
PLAID_CLIENT_ID=your_plaid_client_id
PLAID_SECRET=your_plaid_secret
PLAID_ENV=production
# Email
SMTP_HOST=smtp.sendgrid.net
SMTP_USERNAME=apikey
SMTP_PASSWORD=your_sendgrid_api_key
# Storage
S3_BUCKET=your-bucket-name
S3_REGION=us-east-1
S3_ACCESS_KEY=your_access_key
S3_SECRET_KEY=your_secret_key
We welcome contributions! Here's how you can help:
- π Bug Reports: Submit detailed bug reports with reproduction steps
- π‘ Feature Requests: Suggest new features or improvements
- π Documentation: Improve docs, add examples, fix typos
- π§ Code: Submit pull requests for bug fixes or features
- π Translations: Help translate the app to other languages
- Fork the repository and clone your fork
- Set up the development environment (see Getting Started)
- Create a feature branch for your changes
- Make your changes following our coding standards
- Add tests for new functionality
- Submit a pull request with a clear description
- Write Tests: All new features should include tests
- Documentation: Update docs for API changes
- Performance: Consider performance impact of changes
- Security: Never commit secrets or sensitive data
- Accessibility: Ensure UI changes are accessible
For detailed contribution guidelines, development setup, and coding standards, see our Contributing Guide.
- Discord: Join our community for discussions
- GitHub Discussions: Ask questions and share ideas
- Issues: Report bugs and request features
This project is licensed under the AGPL-3.0 for non-commercial use.
For commercial use or deployments requiring a setup fee, please contact us for a commercial license at engineer@nuts.com.
By using this software, you agree to the terms of the license.
Built with β€οΈ by the Nuts team