Problem
A biolink platform needed to turn public interactions into useful signals for analyzing and improving conversion.
Context and constraints
The product separates the public frontend, dashboard, and API, while event processing must not couple background work to the public experience.
Architecture
The solution combines a Next.js public frontend at the edge, a Node.js API, and asynchronous processing through RabbitMQ and Rust workers. MongoDB receives bulk writes after events are grouped in memory; deployments use Vercel and Railway.
Key engineering decisions
- Separate the public frontend, dashboard, and API to keep responsibilities clear.
- Use queues and workers to decouple event ingestion from asynchronous processing.
- Batch events in memory and use bulk writes to reduce individual database operations.
Challenges
- Coordinate the event path across components with different responsibilities and processing times.
Development approach
Development focused on splitting the system by responsibility and designing an explicit pipeline from ingestion to persistence.
Technologies
- Next.js
- TypeScript
- Node.js
- Rust workers
- RabbitMQ
- MongoDB
- Cloudflare Edge
- Vercel
- Railway