What we shipped and when. Subscribe via RSS for updates.
Phase 5 ships the public-facing surfaces that turn the boilerplate into a usable SaaS template.
Phase 4 adds the production-grade primitives that show up in every SaaS — audit trails, AI cost control, tenant-safe uploads, and a recurring digest job.
/pricing page with monthly/yearly toggle, free/basic/pro
comparison, and a single shared plan config in @nextmonorepo/shared/plans.<details>), and Newsletter sections./settings/team (members,
invites, role changes), and /invite/[token] accept flow./cookies policy page, GET /user/export for portability,
consent versioning with auto-reprompt on bumps./onboarding that walks new users through profile +
workspace./contact backed by a rate-limited POST /api/contact.<CookieConsent /> now stores { version, choice, acceptedAt } instead of a
bare string, so consent migrations are explicit.next build --webpack
doesn't trip on dynamic({ ssr: false }) in a Server Component.audit_log table (RLS-scoped, FORCE ROW LEVEL SECURITY) with an Elysia
plugin that auto-records 2xx mutations and exposes auditLog.record() for
nuanced cases.ai_usage table and ai-rate-limit plugin enforcing a rolling 30-day
token cap per organization (PLAN_LIMITS.aiTokens). Records usage from
streamText's onFinish callback.{orgId}/{uuid}.{ext}), plan-bounded
size via assertUploadSize, streaming straight to Bunny via uploadStream,
one audit row per successful upload.scheduleDigest() registers a daily
9am UTC job with a stable jobId so restarts stay idempotent.attempts: 3, exponential backoff from 1s. Redis client
enforces maxRetriesPerRequest: null (BullMQ requirement).