finds.dev← search

// the find

directus-labs/agency-os

★ 976 · Vue · MIT · updated Mar 2026

The open source operating system for digital agencies. Built with Directus and Nuxt.

AgencyOS is a full-stack template pairing a Directus backend with a Nuxt 3 frontend to give small agencies a CRM, project tracker, client portal, and marketing site out of one codebase. It's aimed at agencies who'd otherwise be stitching together a CMS, a project tool, and a portal from separate SaaS products.

It's a genuine vertical slice, not a UI kit: proposals, invoicing, task management, and a client-facing portal with Stripe billing are all wired end to end, including webhook handling. Directus does the heavy lifting on the backend — schema changes and business logic (via Directus Flows) are mostly configuration instead of custom API code. The Nuxt layers setup (layers/portal, layers/proposals) keeps the portal and proposal builder as separable modules rather than dumping everything into one pages folder. Bootstrapping a new instance is scripted through directus-template-cli, so you're not hand-seeding collections.

There are no tests anywhere in the tree — CI only runs lint and typecheck, so invoicing math, proposal generation, and Stripe webhook handling have zero automated coverage. The README is upfront that self-hosted Directus gets no support without an Enterprise license, which is a real cost trap for the budget-conscious agencies this is aimed at. Deployment is really only proven on Vercel; Netlify is called out as having build memory issues, and there's no docker-compose for the Nuxt side, only for Directus. You're locked into Stripe and Directus specifically — the portal layer's composables (useStripe, useDirectus) assume their exact API shapes, so swapping either later means touching most of the client-facing code, not a config change.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →