Why Spendly ?
Easy tracking
Log your income and expenses in seconds
Visual analytics
Understand your spending habits with beautiful charts
Forever free
No hidden fees, no subscriptions, open source
Technical detailed overview
Purpose and vision
Spendly helps people understand where their money goes, make better financial decisions, and stay in control of personal or shared budgets
It combines practical daily tracking with technical transparency : typed data models, explicit server-side permissions, and export/privacy workflows for both users and administrators
Quick facts
2
UI languages
7
Client-side export formats
4
Budget roles
4
Admin DB export formats
Multiple budget trackers
Manage separate trackers for personal, family, travel, projects, or any custom scope
Category system
Use custom categories with icons and colors to keep your data organized
Transaction management
Add, edit, search, and filter transactions while keeping period and all-time balances visible
Charts and analytics
Visualize cash flow with multiple chart types and configurable chart controls
How Spendly works
Spendly keeps budgeting simple while preserving advanced control when you need it
Authenticate
Sign in with email/password, username, or Google/GitHub OAuth
Structure your budget
Create one or more budget trackers and configure category taxonomy
Track activity
Record transactions, monitor balances, and collaborate with shared users
Analyze and improve
Analyze charts, export data, and take control of your finances with informed decisions
What you can do with Spendly
From personal tracking to collaborative budgeting and exports, Spendly covers the complete budgeting lifecycle
Budget operations
Everything needed to log, categorize, and understand money flows in one place
- Create unlimited budget trackers and switch instantly between them
- Organize entries with custom categories, icons, and colors
- Track income and expenses with date filtering and live balances
Collaboration model
Built-in sharing supports couples, families, and teams without external tools
- Invite users to trackers with role-based permissions
- Roles include viewer, editor, admin, and owner
- Transfer ownership safely : previous owner is automatically downgraded to admin
User experience
Spendly focuses on speed, clarity, and practical everyday usage
- Responsive interface optimized for desktop and mobile
- Dark/light themes and bilingual UI (English/French)
- Demo mode, account page controls, and clear export/deletion request flows
Export & portability
Users and admins both get practical, transparent data portability tools
- Transaction export as CSV and JSON from the app
- Chart export to SVG, PNG, and PDF
- Admin backups in CSV, JSON, SQL, or SQLite + user ZIP exports
Security & privacy
Security and privacy architecture
Spendly is designed with explicit auth boundaries and auditable data handling workflows.
- Authentication uses Better Auth with email/password, username login, and optional social providers
- Cloudflare Turnstile protects key auth endpoints (sign-up, sign-in, and reset-password request)
- Write operations are permission-checked server-side against budget tracker role
- Data is stored in SQLite via typed Drizzle schemas with UUID identifiers and role-linked relations
- Privacy flows are explicit : users create export/delete requests, then admins resolve them
API surface
Spendly uses explicit server routes with authentication context, role checks, and well-defined payload contracts
- Auth API (email/password, username login, GitHub/Google OAuth)
- Budget tracker API (create, rename, delete, and role-scoped access checks)
- Category API (per-tracker categories with icon/color metadata)
- Spending API (income/expense CRUD + optional date-range filtering)
- Admin APIs (database backup formats + per-user ZIP data export)
- User request APIs (export/delete requests, reviewed and resolved by admins)
Technical foundation
Spendly is not just a UI : it is a complete full-stack budgeting platform with an explicit architecture
Frontend
A modern SSR frontend with glassmorphism-inspired Material Design UI and reactive state management
Backend & auth
Server routes resolve auth context from middleware, enforce role checks, and validate request intent
Data layer
Persistent SQLite storage with typed schema definitions, indexed relations, and controlled migrations
Implementation details
Spendly also integrates Chart.js (via vue-chartjs), export tooling (canvas-to-svg + jsPDF), structured wide logging, and UI event logging with sensitive-field redaction
