Abroad
A student-platform prototype on a non-Next.js server runtime.
- Role
- Engineer
- Period
- Jun 2025 – Jul 2025
- Status
- Prototype
- Stack
- ElysiaJS on Bun, Next.js, Expo, Docker Compose.
5
Apps in the monorepo
146
Source files
~10,546
Lines of code
12
Commits, all Adam
The problem
A study-abroad program needed a platform spanning a marketing site, a student-facing mobile app, and internal business/admin portals — five apps sharing one backend.
Constraints
- A short engagement window, with interns onboarding onto the codebase partway through.
- The backend needed to run outside the Next.js request lifecycle, since it served multiple frontends including a mobile app.
What I built
A Bun-workspace monorepo with five apps: a Next.js marketing site, an ElysiaJS API on Bun, an Expo/React Native mobile app, and admin/business portals, backed by Postgres and Supabase, containerized locally with Docker Compose, Nginx, and Redis. I also authored an 846-line intern onboarding guide covering the codebase and local setup.
Architecture
ElysiaJS on Bun was chosen as a dedicated API runtime rather than Next.js Server Actions, so the same backend could serve the marketing site, the mobile app, and the admin portals without coupling any of them to Next.js's request model.
Decisions and tradeoffs
Decision
Run the API on ElysiaJS/Bun instead of folding it into the Next.js app.
Because
Five apps, including a mobile client, needed one backend that wasn't tied to a single frontend's framework.
Trade-off
It's the only project in this history on a non-Next.js server runtime, which meant less reusable tooling from other projects and a second stack to maintain expertise in.
Outcome
- Status
- Prototype, never shipped
- Source files
- 146, ~10,546 lines
- Apps in the monorepo
- 5
As of 2026-08-24
Constraint
The project's own status notes recorded unresolved errors in the admin and business portals at the time development paused. It's presented here honestly as a prototype, not a finished product.Related work
Want the full picture, or open to talking about your own project?