mrkeyoor.com_
Tue 01 Sept 17:41 UTC
Self-Hostedevaluationupdated 25 Aug 2026

midday review

Midday is a business-operations app for freelancers, contractors, consultants, and solo owners. It brings time tracking, transactions, receipts, files, financial questions, and data export into one system so a small business has fewer disconnected tools.

+26stars / 7d
Verdict

Midday has an appealing product shape for independent workers, but this repository is a serious platform deployment rather than a weekend self-host. The passing test command is encouraging; the failed email build, large install, licensing ambiguity, sparse local-start guidance, and open authorization report keep it out of our default recommendation. Trial the hosted product or stage a tightly scoped internal deployment before investing in the full stack.

We ran it

Lab card: what happened when we ran middayScreenshot of midday (midday.ai)
Install✓ · 55s2435 packages · 3422 MB
Build✗ · 77s
Tests✓ · 15sran, no count parsed
Repo2508 files~352,123 lines of source · 71 MB · 3 CI workflows

Answers from our run

Does midday build from source?

Dependencies installed in 55 seconds (2435 packages), and the build failed. We cloned commit 5158731 into a clean Debian container with 3 CPUs and no project-specific setup.

Do midday's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use midday?

Operators seeking a compact self-hosted finance app: the README names Supabase, Railway, Vercel, Cloudflare, Trigger.dev, Resend, bank providers, analytics, payments, search, and AI services.

What are the alternatives to midday?

Kimai, Bigcapital, Firefly III. Midday has an appealing product shape for independent workers, but this repository is a serious platform deployment rather than a weekend self-host.

Setup2/5Large install, many services, and email package build failure
Docs2/5Good architecture list, thin local development guidance
Community3/5High interest, but recent serious reports lack visible resolution
Maturity3/5Broad product and release history, with adoption blockers open

Who it’s for

Freelancers and consultants who want business finances, documents, and time records in one interface.
Small teams prepared to run a TypeScript monorepo plus managed database and job services.
Developers who need bank connections for Europe, Canada, or the United States and can configure the relevant provider.
Contributors comfortable with Bun, Next.js, Supabase, Tauri, and Expo in one repository.

Who it’s NOT for

Operators seeking a compact self-hosted finance app: the README names Supabase, Railway, Vercel, Cloudflare, Trigger.dev, Resend, bank providers, analytics, payments, search, and AI services.
Businesses that need clear commercial licensing terms before evaluation: the README calls AGPL-3.0 non-commercial and asks commercial users to contact Midday, while issue 785 disputes that wording against the included AGPL text.
Teams that require a clean production build from a fresh checkout: our build stopped in the email package even though the test command passed.
Organizations considering multi-user deployment without their own security review: open issue 890 reports that a regular member can delete a team, and it says an earlier private report received no response.
Users who need the README's invoicing promise today: the document describes invoicing as an upcoming feature, so that statement should be treated as an aspiration rather than current capability.

Setup reality

Our sandbox installed 2,435 packages in 55 seconds and used 3,422 MB. Tests succeeded in 15 seconds. The build failed after 77 seconds: five of six tasks completed, then @midday/email exited with code 1 while the React Email build path was running. The shown log does not identify the underlying cause.

A useful deployment needs more than Bun. The README lists Supabase for database, storage, realtime, and authentication, plus separate hosting for the API, worker, dashboard, and site. Features can also require bank-provider credentials, email delivery, background jobs, search, analytics, payments, and AI APIs.

The repo is a 2,508-file monorepo with about 352,123 source lines and a 71 MB checkout. Its installed packages occupied 3,422 MB in our container. The README sends local developers to documentation still described as work in progress, so budget time for service configuration and troubleshooting beyond dependency installation.

One workspace for the solo-business back office

Midday aims at the messy collection of tools behind a freelance business. Time tracking lives beside transactions. Receipts and invoices can be matched through the Magic Inbox, contracts can sit in a file vault, and financial data can be exported for an accountant. An assistant answers questions about spending and documents. The intended user is a consultant or small operator who wants one daily workspace instead of several subscriptions and spreadsheets.

The idea is easy to understand because the pain is real. A tracked hour eventually becomes revenue, a bank transaction needs a receipt, and an accountant needs a clean export. Keeping those records connected can remove repeated entry. Midday also lists bank integrations for Europe, Canada, and the United States, although the provider differs by region.

The README is less reliable as a feature contract. It still labels invoicing as upcoming, so readers should not silently convert that wording into a shipped promise. Evaluate the running product and current documentation for the exact workflow you need. The repository is moving, and the short front page does not try to document every current screen.

The architecture is much larger than the pitch

Midday is a TypeScript monorepo built around Bun, React, Next.js, Supabase, Tailwind CSS, Tauri, and Expo. That spans web, desktop, and mobile surfaces. Hosting is split across Supabase, Railway, Vercel, and Cloudflare in the project's own deployment. Background work uses Trigger.dev, email uses Resend, search uses Typesense, payments use Polar, and analytics use OpenPanel. Gemini and OpenAI are also named services.

This matters more than the friendly product screenshots. Self-hosting the code means deciding which parts of that topology to reproduce and which providers to replace. Bank connectivity adds GoCardless, Plaid, or Teller credentials depending on geography. A team can run only the features it needs, but it must understand the boundaries between the dashboard, API, worker, database, storage, authentication, and external callbacks.

The README sends local developers to docs.midday.ai and says that getting-started documentation is being worked on. It provides the technology and service inventory, yet no complete local recipe on the page itself. That is a weak handoff for a project with this many moving parts. Experienced platform engineers can follow the monorepo and environment templates; a freelancer expecting a Docker Compose file will find a different class of project. There is no Dockerfile in the measured checkout.

What happened when we ran it

We cloned commit 5158731 into a fresh Debian container with three CPUs, 8 GB of RAM, no secrets, and an unprivileged user. The repository contained 2,508 files, roughly 352,123 lines of source, and took 71 MB before dependency installation. It uses Bun workspaces. Installing 2,435 packages succeeded in 55 seconds, but the installed tree occupied 3,422 MB.

The test command succeeded in 15 seconds. Our measurement did not provide a test count, so that result should be read only as a successful repository test target. The checkout has three CI workflow files and no top-level tests directory. Tests may live with packages in the workspace, which is normal for a monorepo.

The build did not finish. It exited with code 1 after 77 seconds. Five of six tasks succeeded, and the failing task was @midday/email#build. The final lines show React Email calling through nypm, followed by the package's build script exiting with code 1. They do not include the first error or name a missing dependency, so blaming a system package, network restriction, or code defect would be guesswork. The actionable fact is simpler: the fresh checkout installed and tested, then failed to produce a complete build.

For a prospective operator, that is a meaningful warning. The basic dependency step is repeatable, yet the repository consumes several gigabytes and a production build needs investigation. Reproduce the email package failure with the full log before planning deployment work.

Licensing and security need decisions before launch

The repository contains an AGPL-3.0 license, while the README says it is licensed under AGPL-3.0 for non-commercial use and asks commercial deployments to contact Midday. Open issue 785 argues that this wording conflicts with the standard AGPL text. We are not resolving that legal question here. A business should ask Midday for written terms or have counsel review the repository license before building a paid service around it.

A separate open report, issue 890, alleges that an ordinary team member can call the team deletion procedure because the relevant access check does not require the owner role. The reporter supplies affected paths and a reproduction, and says a May email received no response before the public June report. Another August issue presents several static-analysis findings, including a claimed webhook verification fallback. These are user reports, not maintainer-confirmed advisories, but the team-deletion claim is serious enough to verify before any multi-user deployment.

Project health and the buying decision

The last repository push was June 13, 2026. The latest tagged release, midday-v0.5.0, arrived February 15 and added a desktop download. GitHub reported 16 open issues and pull requests combined. Issue updates continued after the last push, including the licensing discussion in July and a security-audit post in August. That mix suggests continuing outside interest, while the visible code and release activity is slower than the project's audience size might imply.

Midday is most convincing as a product concept and a codebase for teams that want its exact combination of banking, documents, time, and assistant features. It is less convincing as a turnkey self-hosted package. The infrastructure list, build failure, unresolved license wording, and authorization report all create work before launch. Use a staged environment, begin with one bank region and one worker path, and require a clean build plus targeted authorization tests before importing real financial records.

Alternatives

ProjectWhat it isPick it when
KimaiA self-hosted time-tracking and invoicing application with a narrower operational scope.pick this instead when time sheets and invoices matter more than bank feeds, receipt matching, and an AI assistant.
BigcapitalAn open-source accounting and inventory platform for businesses that need formal books.pick this instead when double-entry accounting and inventory are the main jobs.
Firefly III gh↗A mature self-hosted manager for transactions, budgets, accounts, and reports.pick this instead when personal or household finance tracking is enough and business operations are out of scope.

What people are saying

  1. [github-trending] midday-ai/midday

Sources

  1. Midday repository
  2. Midday README
  3. Midday v0.5.0 release
  4. License wording issue 785
  5. Team deletion authorization report 890
  6. Security audit report 903
  7. Midday documentation

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →