Implementation Status

What ships today, what is intentionally left for you to bring, and what is planned.

What ships

  • Full marketing surface: hero, services, case studies, portfolio, pricing, testimonials, FAQ, CTA, blog, contact, legal, docs, SEO landing pages.
  • 3 locales (English, French, Spanish: all LTR) via next-intl middleware.
  • Directus 11 CMS with 18 pre-provisioned collections, their translation children, relations, permissions, and EN/FR/ES seeded content. All created by a programmatic bootstrap.mjs + seed.mjs: no clicking through the admin to model data.
  • GraphQL consumption: frontend fetchers hit Directus /graphql directly with unauthenticated Public-role reads.
  • Pre-bundled @directus-labs/seo-plugin: the SEO interface (live Search Preview, character hints, Open Graph, canonical, robots) is wired to every seo field out of the box.
  • Zero-command stack: docker compose up -d --build boots Postgres + Redis + Directus + init sidecar; init provisions schema and seeds content, then exits.
  • Fallback content in frontend/src/config/ui/* so the frontend renders even if Directus is offline or a collection is empty.
  • Admin UX polish: collection groups (Pages / Blog / Marketing / Navigation / System), color coding, Material icons, display templates using non-translation fields, archive/status UX on collections with status.
  • Contact form with honeypot spam protection and optional Resend delivery. Submissions persist to form_submissions via public-create permission.
  • SEO primitives: canonical URLs, hreflang alternates, Organization + LocalBusiness JSON-LD, sitemap.xml, robots.txt.
  • 31+ shadcn/ui components with dark mode.

Bring your own

Agency is a marketing site. It deliberately does not ship:

  • Auth / user accounts: use SaaSForge Core if you need workspaces and RBAC.
  • Subscription billing: use SaaSForge Core if you need Stripe subscriptions.
  • Product app: if your buyer signs in and uses a dashboard, Agency isn't the right shell.

If you only need to capture leads and sell services, Agency is complete as-is.

Env vars buyers need to supply

VarWhySource
DIRECTUS_ADMIN_EMAIL / DIRECTUS_ADMIN_PASSWORDAdmin loginPick your own
POSTGRES_*DB credentialsPick your own
DIRECTUS_KEY / DIRECTUS_SECRETDirectus signing secretsuuidgen × 2
NEXT_PUBLIC_DIRECTUS_URLFrontend → CMSYour Directus URL
NEXT_PUBLIC_SITE_URLCanonical + sitemapYour public domain
RESEND_API_KEY (optional)Contact form emailresend.com
NEXT_PUBLIC_GTM_ID / NEXT_PUBLIC_GA_ID (optional)AnalyticsGoogle
NEXT_PUBLIC_BOOKING_URL (optional)Floating booking CTACalendly / Cal.com

On the roadmap

  • Additional locale seeds (DE, PT) wired in the same pattern as EN/FR/ES.
  • Richer case-study templates with comparison sliders.
  • Optional Formspree / Tally fallback for the contact form.
  • Optional draft preview flow via DIRECTUS_PREVIEW_TOKEN.

File an issue or email support if something on the roadmap is blocking you: we prioritize buyer requests.