Skip to content
BoringStack
Star

Point your agent at this stack

Point your agent at this stack. Auth, billing, queues, and deploys are already wired.
Agent-first · Open source · MIT

Point your agent at this stack.

Auth, billing, queues, and deploys are already wired. Your agent builds the feature; lint and CI check that it fits the architecture.

Paste this into your coding agent
>
Set up boringstack.xyz for me

It reads /agents.md and runs the installer. Five phases, no prompts.

React + ViteBun + ElysiaPostgresCompose
BORINGSTACK, TAKEN APARTFOLLOW A CHANGE
THE BORING MACHINESMALL PARTS. EXPLICIT CONNECTIONS.
Interfaceapps/uiReact + Vitetyped clientAPIaccountIdApplicationapps/apiBun + Elysia + Drizzletenant scopeSQLServicesinfra/composePostgres + Valkeydata + jobsInfrastructureinfra/bootstrapOpenTofu + cloud-initCHECKEXAMPLE: ACCOUNT-SCOPED QUERY VALIDATIONILLUSTRATION

Bun + Elysia · auth, billing, tenant boundaries

accountId filter removed

Example: SELECT against accountPlans without tenant scope.

01 / THE GUARDRAILS

Move fast. Keep the boundaries.

Your agent writes the code. Lint and CI check the contracts it has to preserve. Remove a boundary below and see what catches the change.

INTERACTIVE / 001

Go on. Try breaking it.

Illustrative demo · real repository checks
account-plans.query.tsORIGINAL
await db.select()
  .from(accountPlans)
  .where(eq(accountPlans.accountId, accountId));
ESLint / EXAMPLE RESULT

✓ Boundary intact.

drizzle-conventions/account-scoped-tables-require-where

The example preserves the contract. Remove it and see what catches the change.

Account-scoped queries need a tenant boundary. This rule catches the missing filter before the change ships.

Inspect the check ↗
02 / INSIDE THE STACK

One repo. All the moving parts.

Explore the layers. Auth, billing, queues, and deploys are already connected, with explicit contracts between them.

BORINGSTACK / REPOSITORYFOUR LAYERS. ONE SYSTEM.
⌂ boringstack/
scaffold-manifest.json ↗

Configuration is part of the contract. Your agent can read it, too.

LAYER / 02Bun / Elysia / Drizzle

The difficult parts, wired in.

Tenant-aware data, auth, and billing belong in the first clone. The API brings them together with rules that check the boundaries.

Accounts & permissions

Memberships, roles, and account-scoped queries.

Billing & webhooks

Stripe hooks, signature verification, and plan features.

Background work

BullMQ workers and retry-aware job handling.

Audit & email

Audit trails and transactional email integrations.

RequestAuth + tenant scopeData / jobs
Explore apps/api
03 / FIRST CONTACT

One instruction. Then your first feature.

The setup is documented for your agent and readable by you. Start with the map; pull in the details as you build.

Prefer to run the installer yourself?
curl -fsSL https://boringstack.xyz/install.sh | sh -s -- --project acme

GitHub auth is optional. Without it, the installer clones the public repository. Five phases, no prompts.