SYS.OP
L_BTM_FRAME
R_TOP_FRAME
HomeProjectsAbout
Availability
Available for work

ERNESTO.LV

Full-stack software engineer focused on end-to-end product delivery across GraphQL platforms, CMS workflows, booking logic, and local-first AI tooling.

SYSTEM ONLINE//V.1.0.0

Directory

>01_HOME>02_PROJECTS>04_ABOUT

Comms_Link

Display_Mode
ESTABLISH CONNECTION:
[email protected]
GITHUBLINKEDIN

© 2026 ERNESTO.LV // ALL PROTOCOLS RESERVED

Rīga, Latvia NODE
System Control
CORE_STATUS
ONLINE
UPTIME: 00:00:00
Availability
Available for work
Display
Display_Mode
HOMEPROJECTS
ABOUT
WEB-APP

Zepup.lv

Booking engine and platform setup for a water adventure park

Zepup.lv is a mobile-first website and booking platform for a Latvian water adventure park. The important part was not just showing availability, but making reservations work reliably when people want more than one hour and multiple visitors may be trying to book the same slot at once.

Booking had to be the product

My role here was hands-on product and software implementation for the booking flow and the underlying platform setup. The finished booking-engine scope covers the guest reservation flow, consecutive hourly reservations, server-side enforcement of an 80-person limit per slot, and the supporting reservation storage behind it.

That meant treating booking logic as the core product surface instead of a thin form on top of a brochure site. People need to understand what they are reserving, select time in a way that works on mobile, and get a clear path through the flow without capacity rules becoming confusing.

The main engineering decision: capacity lives on the server

The riskiest part of this project is overselling time slots. Availability checks that only happen in the browser are not enough when two people can submit overlapping reservations seconds apart, so the platform keeps capacity enforcement on the server.

The booking flow also supports consecutive-hour selection, which makes slot handling more complicated than a single isolated reservation. Capacity has to stay consistent across the selected time range, not just on one click. That decision shaped the implementation more than any visual detail did.

Platform setup mattered too

The current stack uses Next.js, Payload CMS, Postgres on Neon, Cloudflare R2, and Vercel. Another important choice was separating environment resources so staging and production do not share the same database, storage, or app configuration. For a booking system, that kind of separation is basic operational safety, not optional polish.

Current status

The booking engine itself is done. The current phase is admin polish, slot-management work, and SEO. Verification by email or SMS and some anti-abuse work are part of the active scope, but I would describe those as current work rather than finished public features.

Project facts

Stack
Next.js · Payload CMS v3 · Postgres · Neon · Cloudflare R2 · Vercel
Services
  • Product engineering
  • Full-stack development
Related // More Work
AI Clip Assembler landing page hero with the headline about turning drone footage into a cut worth keeping

AI Clip Assembler

Open-source, local-first desktop video editor foundation for turning long raw footage into reviewable clip candidates instead of starting from an empty timeline.

Case study →Live site ↗View source ↗

Darbe.lv

Job-search and recruitment product focused on vacancy discovery and matching between candidates and employers.

Case study →Live site ↗

Darbe Mobile

Mobile job-search product work for the Darbe ecosystem, focused on keeping vacancies and applications in one place.

Case study →