Context
Launching a niche marketplace required a single profile for both buyers and sellers, simple passwordless registration, and a simultaneous web + mobile presence. A map with geo-based listings was a mandatory part of the UX.
Solution
A single User model with three sign-in methods: email code, Google OAuth, Yandex OAuth. On top of it, a 1:N store model so a seller can run several storefronts. The web build proxies the API through Next.js rewrites; the mobile build does a static export and reaches the backend by an absolute URL through a single api() wrapper. The map is MapLibre GL.
Stack and architecture
- Backend: Spring Boot, Spring Data MongoDB, Spring Mail (email OTP), Spring Security OAuth2, Spring Actuator.
- Frontend: Next.js 16 (App Router), React 19.
- Mobile: Capacitor 7 (
@capacitor/{core,ios,android,app,browser,geolocation,splash-screen}). - Geo: MapLibre GL +
react-map-gl. - API transport: env-aware fetch wrapper, dev rewrites in
next.config.ts.
Role and outcome
We designed the unified auth, the store domain model, and a network layer that works identically on web and mobile. The MVP included scaffolding, registration, profile, and store creation — a foundation for expansion (items / search / payments / chat).