A clone of the observe.nestjs.com product (landing page + dashboard UI), built as a pnpm + Turborepo monorepo with a single AdonisJS 7 + Inertia React app and a shadcn-based design system.
observe-adonisjs/
├── apps/
│ └── web/ # AdonisJS 7 + Inertia React — landing + dashboard in ONE app
│ ├── app/ # controllers, models, middleware, providers
│ ├── inertia/ # React frontend (pages, layouts, components, css)
│ ├── resources/ # Edge views
│ └── public/ # static assets (landing images under /landing)
├── packages/
│ └── ui/ # @devalade/ui — design system
│ ├── src/components/ # full shadcn set (base-nova)
│ ├── src/components/observe # Observe composites
│ └── src/styles/theme.css # dark theme + tokens + utilities
└── docs/
├── FEATURES.md # PRD-style feature extraction (18 modules)
└── UI-INVENTORY.md # dashboard screens to clone from the live reference
- Backend: AdonisJS 7 (Node ≥ 24) + Lucid ORM (SQLite) + session auth
- Frontend: Inertia (v5 adapter) + React 19 + Tailwind CSS v4 + Vite
- Design system:
@devalade/ui— shadcn base-nova full set + Observe composites (TraceTimeline, LogViewer, ErrorCard, MetricChart, SloGauge, DataTable, TimeRangePicker, …) + shared theme - Fonts: Manrope Variable + Geist Mono Variable (self-hosted)
/— landing page (clone of observe.nestjs.com)/login,/signup,/forgot-password— auth (session guard)/app/*— dashboard shell: overview, traces, logs, errors, issues, alerts, slos, metrics, jobs, releases, customers, agent (MCP), team, billing, settings (UI-first placeholders; real data later)
| Token | Value |
|---|---|
| Background | #050305 |
| Card | rgb(25,23,23) + 1px rgba(255,255,255,.08) border, 32px radius |
| Accent | #ea2868 |
| Headings | Manrope, weight 500 |
| Eyebrows / code | Geist Mono, 12px, letter-spacing 1.2px, { LABEL }_ |
pnpm install
pnpm dev # turbo → apps/web dev server on :3333
pnpm build # typecheck + production build
pnpm lint
pnpm typecheck
# Inside apps/web
node ace migration:run # sqlite database
node ace make:controller X- Landing page clone (DOM-metric verified vs original)
- Monorepo (pnpm + Turborepo, single AdonisJS app)
- Design system package (@devalade/ui: shadcn set + Observe composites)
- FEATURES.md feature extraction
- Auth screens + app shell + placeholder routes
- SSR enabled for the landing (client-rendered for now)
- Dashboard UI clone from live reference (needs observe.nestjs.com account)
- Real backend (ingestion, storage, alerting)
- Product screenshots and illustrations are copies of the original site's public assets (Trilon/NestJS property — personal/demo use only).
- All landing CTAs are placeholder anchors; dashboard modules are UI placeholders until the backend exists.