Mockup for reviewTech-stack demonstration. Not affiliated with Nebius and not the live Builders Network.About this build →

About this build

This site is a tech-stack mockup of opencolin/nebius-builders rebuilt on Nebius.com's exact stack — Next.js Pages Router, Gravity UI + Page Constructor, Directus CMS, Typesense, Azure Front Door deploy. The goal is to make the Nebius web team comfortable adopting and maintaining the Builders portal without context-switching from how nebius.com works today.

What you're looking at

Brand chassis

Mirrors nebius.com: warm off-white surface, navy text + buttons, Inter type, lime joy color on selection. Same g- and pc- class signatures.

CMS-driven

Five marketing pages (home, builders, office-hours, localhosts, signup) live as Page Constructor JSON in Directus. Edit them in the Directus admin and ISR republishes.

Bespoke pages

Eight data-driven pages (events, leaderboard, library, projects, team and detail routes) read directly from Directus collections via the typed SDK.

The five layers

1. Edge

Azure Front Door — global CDN with route-shape cache rules. /_next/static/* one-year immutable, HTML 60s + 5min SWR, /api/* no-store. Mirrors nebius.com's x-azure-ref topology.
Front Door Standard profile
Custom domain + managed cert
az afd endpoint purge for cache busts

2. Application

Next.js 14.2 Pages Router on Container Apps. Webpack (not Turbopack) + React 18. Standalone output for the prod image; default output for `next start` locally.
Single /[[...slug]] catch-all for CMS pages
Bespoke Pages Router files for data-driven views
ISR via revalidate: 60 in getStaticProps

3. Content

Directus 11.17 self-hosted with Postgres 16 + PostGIS for the events.location field, Redis for the cache. Schema is hand-authored YAML and applied via the SDK.
7 user collections + Directus internals
Page Constructor JSON in pages.blocks
Idempotent seed script via npm run seed

4. Search

Typesense Cloud in prod, Docker container locally. The admin key never leaves the indexer; the browser hits /api/search which talks to Typesense with a search-only key.
Single nebius_builders collection
Indexer pulls library, events, builders
Header search box debounced at 150ms

5. Auth

Directus's built-in JWT auth, three roles. Tokens stored in httpOnly cookies; access token rotates transparently via the refresh token in getServerSession.
Roles: public, builder, admin
/api/auth/login,/logout,/me proxy routes
requireRole helper for getServerSideProps

Repository layout

apps/web/

The Next.js Pages Router app. pages/ for routes, src/components/chrome for the layout primitives (PublicNav, Footer, MockupBanner), src/lib for typed Directus and Typesense clients, src/styles/globals.scss for the Nebius brand layer over Gravity tokens.

apps/directus/

Directus tooling. snapshots/schema.yaml is the versioned schema. scripts/{apply-schema,snapshot,seed}.mjs handle apply, regenerate, and idempotent seeding. seed/ holds JSON fixtures + ported markdown for library articles.

infra/

docker-compose.yml for local dev (Postgres, Redis, Directus, Typesense, mailcatcher). Dockerfile.web is the multi-stage standalone build. azure/ has Bicep skeleton and a README walking through the az deployment commands. typesense/sync.mjs is the indexer.

What's real in this mockup

Live data layer

Directus is fully wired. Schema applied, content seeded, every page reads through the typed SDK.
12 builders, 8 projects, 8 events, 11 library articles
Idempotent seed script (re-run safely)
Schema versioned at apps/directus/snapshots/schema.yaml

Auth

Login flow ends at Directus's /auth/login with HTTP-only cookies and transparent refresh.
/api/auth/{login,logout,me} routes
requireRole('builder' / 'admin') in getServerSideProps
Three roles: public, builder, admin

Search

Typesense client + indexer + /api/search proxy.
Search-only API key never leaves the server
Indexer pulls from Directus collections
Header search box hits the proxy

Local dev

Docker Compose brings up Postgres, Redis, Directus, Typesense, mailcatcher.
One docker compose up command
Schema apply + seed scripts ready
Mailcatcher captures Directus emails

What's still stubbed

Portal & admin pages

One worked example for each (/portal, ready for the requireRole('admin') admin pages). The remaining 14 portal + 8 admin pages from the upstream repo aren't ported yet — the patterns are set, the work is mechanical.

Marketing analytics

GTM bootstrap with consent gating is wired in _app.tsx, but no GTM container ID is set. Drop NEXT_PUBLIC_GTM_ID in env to fire it. HubSpot/Demandbase/Hotjar/Clarity placeholders sit in CSP.

Hero decoration

Nebius.com's hero has a custom lime-and-green wave SVG overlay. We use a clean Page Constructor header-block instead — adding the wave as a custom block is a future polish task.

Azure deploy

Bicep skeleton at infra/azure/main.bicep with inline notes for the resources to define (Container Apps, Postgres Flexible, Redis, Front Door cache rules). Needs a real subscription + region + image registry to deploy.

Where to send feedback

GitHub issues

Open an issue on opencolin/nebius-builders. Tag @opencolin for routing.

DM the maintainer

Open a GitHub issue and @-mention @opencolin for anything time-sensitive or scoped to this build specifically.

Pull requests

Direct edits welcome — the build is opinionated but every choice is documented inline. CONTRIBUTING.md will land alongside the next port.