DevCashFlow AI
DevCashFlow AI
Automate project-based cash flow tracking and expense splitting for solo devs.
Solo developers and indie hackers often juggle multiple projects, from client work to personal SaaS ventures. A critical pain point is the manual, time-consuming process of accurately tracking income and expenses *per project*. Existing accounting solutions are typically either too complex and expensive for a solo operation, or too generic, lacking the granular project-level categorization and expense-splitting capabilities needed. This leads to hours wasted each month on spreadsheet reconciliation, unclear profit margins for individual projects, difficulty identifying which ventures are truly profitable, and potential missed tax deductions. For small teams sharing resources (e.g., a single hosting bill, shared SaaS subscriptions), the challenge of fairly and accurately splitting these costs across different projects or team members becomes an even larger headache, often resulting in inaccurate financial reporting and frustration.
DevCashFlow AI provides an intelligent, automated solution for solo developers and small teams to manage their project-specific finances. Users connect their bank and credit card accounts (read-only), and our AI engine automatically categorizes transactions and allocates them to specific projects. For shared expenses (like a single hosting bill), users can easily define splitting rules, and the system intelligently distributes the cost across relevant projects or team members. The core features include a clean dashboard showing real-time profit and loss for each project, AI-driven categorization with manual override, automated expense splitting, and simple export options for tax preparation. This unique focus on granular, project-level financial visibility and intelligent splitting for developers, coupled with a minimal, intuitive UI, frees up valuable time, provides clear financial insights, and simplifies tax reporting.
Tech Stack
System Architecture
βββββββββββββββββ βββββββββββββββββββββ
β Client β β External APIs β
β (Web Browser)β βββββββββββββββββββββ€
βββββββββ¬ββββββββ β Plaid / Stripe FC β
β HTTPS β (Bank Aggregation)β
βΌ βββββββββββββββββββββ€
βββββββββββββββββββ β OpenAI / Anthropicβ
β Next.js App βββββββββββ€ (AI Categorization)β
β (FE + API Routes)β βββββββββββββββββββββ€
βββββββββ¬ββββββββββ β Stripe β
β PostgreSQL β (Payments) β
βΌ βββββββββββββββββββββ€
βββββββββββββββββββ β Resend β
β Supabase DB β β (Emails) β
βββββββββββββββββββ βββββββββββββββββββββDatabase Schema
CREATE TABLE users (
id uuid PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE,
email text UNIQUE NOT NULL,
created_at timestamp with time zone DEFAULT now()
);
CREATE TABLE projects (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
user_id uuid REFERENCES users(id) ON DELETE CASCADE,
name text NOT NULL,
description text,
budget decimal(10, 2),
created_at timestamp with time zone DEFAULT now(),
updated_at timestamp with time zone DEFAULT now()
);
CREATE TABLE bank_accounts (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
user_id uuid REFERENCES users(id) ON DELETE CASCADE,
provider text NOT NULL, -- e.g., 'plaid', 'stripe_fc'
account_name text NOT NULL,
account_type text, -- e.g., 'checking', 'credit_card'
access_token text NOT NULL, -- encrypted token from Plaid/Stripe FC
item_id text, -- Plaid item_id or similar
created_at timestamp with time zone DEFAULT now(),
updated_at timestamp with time zone DEFAULT now()
);
CREATE INDEX idx_bank_accounts_user_id ON bank_accounts(user_id);
CREATE TABLE transactions (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
user_id uuid REFERENCES users(id) ON DELETE CASCADE,
bank_account_id uuid REFERENCES bank_accounts(id) ON DELETE CASCADE,
external_id text UNIQUE, -- ID from bank provider
description text NOT NULL,
amount decimal(10, 2) NOT NULL, -- Positive for income, negative for expense
date date NOT NULL,
raw_data jsonb, -- Store raw transaction data from provider
created_at timestamp with time zone DEFAULT now()
);
CREATE INDEX idx_transactions_user_id ON transactions(user_id);
CREATE INDEX idx_transactions_bank_account_id ON transactions(bank_account_id);
CREATE INDEX idx_transactions_date ON transactions(date);
CREATE TABLE categories (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
user_id uuid REFERENCES users(id) ON DELETE CASCADE,
name text NOT NULL,
type text NOT NULL, -- 'income' or 'expense'
is_default boolean DEFAULT FALSE,
created_at timestamp with time zone DEFAULT now()
);
CREATE UNIQUE INDEX idx_categories_user_name ON categories(user_id, name);
CREATE TABLE project_allocations (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
transaction_id uuid REFERENCES transactions(id) ON DELETE CASCADE,
project_id uuid REFERENCES projects(id) ON DELETE CASCADE,
user_id uuid REFERENCES users(id) ON DELETE CASCADE, -- Denormalized for easier query
allocated_amount decimal(10, 2) NOT NULL,
category_id uuid REFERENCES categories(id) ON DELETE SET NULL,
notes text,
ai_confidence decimal(3, 2), -- 0.00 to 1.00
is_manual_override boolean DEFAULT FALSE,
created_at timestamp with time zone DEFAULT now(),
updated_at timestamp with time zone DEFAULT now()
);
CREATE INDEX idx_project_allocations_transaction_id ON project_allocations(transaction_id);
CREATE INDEX idx_project_allocations_project_id ON project_allocations(project_id);
CREATE INDEX idx_project_allocations_user_id ON project_allocations(user_id);API Endpoints
/api/auth/callbackHandles Supabase OAuth callbacks and sets user session./api/user/profileRetrieves the authenticated user's profile information./api/bank-accounts/linkInitiates the bank account linking process via Plaid or Stripe Financial Connections./api/bank-accountsFetches all linked bank accounts for the authenticated user./api/transactionsRetrieves all transactions, with optional filters for project, category, or date range./api/transactions/:id/allocateManually allocates a transaction (or part of it) to a project and assigns a category. Can override AI suggestions./api/projectsFetches all projects created by the user./api/projectsCreates a new project./api/projects/:id/summaryCalculates and returns the profit and loss summary for a specific project./api/categoriesRetrieves all available transaction categories (user-defined and default)./api/categoriesCreates a new custom transaction category for the user.Start Building with AI
Copy this prompt for Cursor, v0, Bolt, or any AI coding assistant
BuilderDaily Team
VerifiedIndie hackers and full-stack engineers creating validated Micro-SaaS blueprints with production-ready tech stacks.
Related Blueprints
More Micro-SaaS ideas you might like to build
API CostPilot
Real-time API expense tracking, forecasting, and optimization for developers.
EcoContent Auditor
Analyze and reduce the digital carbon footprint of your website content.
ClientFlow Metrics
Custom client progress tracking for health & wellness practitioners.
Gap Alert
Today's gap expires in ~14 hours
Get tomorrow's blueprint delivered to your inbox so you never miss a profitable idea.
(Email delivery launching soon β sign up to be first!)