This is a product platform, not a monolith. The architecture is intentionally boring: reverse proxy routing, a fast core API, dedicated auth, background ingestion, and standard storage/cache/eventing.
Routing model
Public traffic terminates at TLS and is routed to the public website and the operator console. Internals remain behind the proxy.
Ingestion pipeline
The worker pulls and normalizes provider data, then the core API exposes catalog and SEO surfaces. Provider health and freshness are visible to operators.
SEO surfaces
The core produces discovery routes and segmented sitemaps designed for crawl budget and canonical hygiene.
Optional AI
AI modules are optional. When enabled, they assist catalog quality and content workflows under admin control.
Stack summary
Web: Next.js
Admin: Next.js
Core API: Rust (api-core)
Auth: auth-service
Worker: ingestion/refresh
Storage: Postgres
Cache: Redis
Eventing: NATS (JetStream)
Proxy: Apache/Nginx/DirectAdminWhy this layout
- Public UX and operator UX are separate.
- Ingestion runs in background workers, not request paths.
- SEO routes and sitemaps are first-class surfaces.
- Optional AI stays optional and operator-controlled.