View your entire financial life in Satoshis.
A premium personal finance app for people who want to live on a Bitcoin standard.
SatSight is a Monarch Money / Mint-inspired personal finance app that lets you track all your expenses, budgets, and net worth denominated in Satoshis (sats). Connect your bank accounts via Plaid, visualize your spending with beautiful charts, and toggle seamlessly between Sats and USD views.
- Sats-First View: Default to viewing everything in Satoshis with real-time BTC price conversion
- Bank Account Linking: Connect checking, savings, credit cards, and investments via Plaid
- Beautiful Charts: Spending breakdowns, net worth trends, and category analysis
- Budget Tracking: Set and track budgets by category with visual progress bars
- Dark/Light Modes: Premium Bitcoin-orange themed UI with both modes
- Cross-Platform: React web app + React Native mobile app
| Layer | Technology |
|---|---|
| Mobile | React Native + Expo |
| Web | React + Vite + TailwindCSS |
| Backend | Supabase (PostgreSQL, Auth, Edge Functions) |
| Charts | Recharts (web) / Victory Native (mobile) |
| State | Zustand + React Query |
| Bank Linking | Plaid |
| Payments | Stripe |
| BTC Price | CoinGecko API |
satsight/
├── apps/
│ ├── mobile/ # React Native (Expo) app
│ └── web/ # React + Vite web app
├── packages/
│ └── shared/ # Shared types, utils, stores, API
├── supabase/
│ ├── migrations/ # Database schema
│ └── functions/ # Edge functions (Plaid webhooks, etc.)
└── package.json # Monorepo root
- Node.js 18+
- pnpm 8+
- Supabase CLI (optional, for local development)
- Expo CLI (for mobile development)
-
Clone the repository
git clone <repo-url> cd satsight
-
Install dependencies
pnpm install
-
Set up environment variables
Create
.envfiles inapps/web/and configure:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key VITE_PLAID_CLIENT_ID=your_plaid_client_id VITE_STRIPE_PUBLISHABLE_KEY=your_stripe_key
-
Set up Supabase
- Create a new Supabase project at supabase.com
- Run the migration in
supabase/migrations/00001_initial_schema.sql - Enable Google OAuth in Authentication settings (optional)
-
Run the web app
pnpm dev:web
-
Run the mobile app
pnpm dev:mobile
Scan the QR code with Expo Go
| Command | Description |
|---|---|
pnpm dev:web |
Start web development server |
pnpm dev:mobile |
Start Expo development server |
pnpm build:web |
Build web app for production |
pnpm lint |
Run ESLint across all packages |
pnpm typecheck |
Run TypeScript checks |
- Shared types and utilities go in
packages/shared/ - Web-specific code goes in
apps/web/src/ - Mobile-specific code goes in
apps/mobile/src/orapps/mobile/app/
- Primary: Bitcoin Orange
#F7931A - Background (Dark):
#0A0A0A - Cards (Dark):
#171717 - Success:
#22C55E - Error:
#EF4444
- Display: SF Pro Display / Inter
- Body: System fonts with fallbacks
Used for bank account aggregation. Requires:
- Plaid API keys (Development or Production)
- Webhook endpoint for transaction updates
Used for subscription billing. Requires:
- Stripe publishable key (client)
- Stripe secret key (server)
- Webhook secret for subscription events
Free API for Bitcoin price data. No API key required for basic usage.
- Monorepo setup
- Authentication (Supabase)
- Dashboard with mock data
- Sats/USD currency toggle
- Beautiful charts
- Mobile app structure
- Plaid integration
- Real transaction syncing
- Stripe subscription billing
- Budget creation/editing
- AR Price Scanner (camera mode)
- Investment tracking
- Goals and savings targets
- AI-powered insights
- Export/Reports
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
MIT License - see LICENSE file for details.
Built with ₿ by Bitcoiners, for Bitcoiners.