explaingit

midday-ai/midday

14,246TypeScriptAudience · pm founderComplexity · 4/5LicenseSetup · hard

TLDR

Midday is an open-source business management app for freelancers that combines time tracking, invoicing, automatic expense matching, and an AI financial assistant in one self-hostable tool.

Mindmap

mindmap
  root((repo))
    What it does
      Time tracking
      Web invoicing
      Expense matching
    AI features
      Financial assistant
      Spending insights
      Document search
    Bank connections
      GoCardless EU
      Plaid US Canada
    Tech stack
      Next.js
      Supabase
      Cloudflare
    Audience
      Freelancers
      Consultants
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Self-host a complete invoicing and time-tracking system for your freelance business without monthly SaaS fees.

USE CASE 2

Connect your bank account and let the Magic Inbox automatically match receipts to transactions for expense tracking.

USE CASE 3

Export financial summaries as CSV files formatted for handing off to an accountant.

USE CASE 4

Ask the AI assistant questions about your spending and search contracts stored in the document vault.

Tech stack

TypeScriptNext.jsReactSupabaseCloudflare

Getting it running

Difficulty · hard Time to first run · 1day+

Requires Supabase, Railway, Vercel, and Cloudflare accounts plus bank API credentials via GoCardless or Plaid.

Free to use for non-commercial projects under AGPL-3.0, commercial deployments require a separate paid license from the team.

In plain English

Midday is an open-source business management tool built specifically for freelancers, contractors, consultants, and solo business owners. It brings together several functions that independent workers typically spread across separate apps: time tracking, invoicing, file storage, and financial overviews, all in one place with an AI assistant layered on top. The time tracking feature lets you log hours against projects and see summaries of where time is going. The invoicing module lets you create web-based invoices and keep them in sync with your project records. A feature called Magic Inbox automatically matches incoming receipts and invoices to the corresponding transactions in your accounts, reducing the manual work of categorizing expenses. There is also a document vault for storing contracts and agreements so they are easy to find later, and an export tool that packages financial data into CSV files formatted for handing off to an accountant. The built-in AI assistant can answer questions about your spending patterns, help you find documents, and provide a picture of your overall financial situation. Bank connections are supported through GoCardless for European accounts and through Plaid and Teller for US and Canadian accounts. The app is structured as a monorepo built with TypeScript, Next.js, React, and Supabase. It runs across a web dashboard, with hosting split across Supabase for the database and auth, Railway for background processing, Vercel for the website, and Cloudflare for the API layer. Midday is licensed under AGPL-3.0 for non-commercial use. Commercial deployments require a separate license from the team.

Copy-paste prompts

Prompt 1
I want to self-host Midday for my freelance business. Walk me through the environment setup covering Supabase, Railway, Vercel, and Cloudflare.
Prompt 2
Show me how to connect a European bank account to Midday using GoCardless and start syncing transactions.
Prompt 3
I need to create a web invoice in Midday, link it to a time-tracking project, and export the data to CSV for my accountant.
Prompt 4
How does Midday's Magic Inbox automatically match incoming receipts to bank transactions? Explain the workflow.
Open on GitHub → Explain another repo

← midday-ai on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.