gitmyhub

midday

TypeScript ★ 15k updated 7d ago

Invoicing, Time tracking, File reconciliation, Storage, Financial Overview & your own Assistant made for Freelancers

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.

TypeScriptNext.jsReactSupabaseCloudflaresetup: hardcomplexity 4/5

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.

Where it fits