Skip to content
pmLet’s talk
All projects

Hedge Parking

A rush-hour parking and valet app built in one hackathon day

I built Hedge Parking at the EAFIT Vibethon on October 30, 2026. The brief described a real campus problem. At rush hour two gates, Las Vegas and Regional, feed the same lot and nobody coordinates them, so a stall can be promised twice and students wait without knowing how long.

Hedge Parking: project preview
Role
Hackathon build · design + engineering
Year
2026
Platform
Software project
Status
prototype

The problem

Two entrances fill one lot with no shared view. Gate staff can hand out the same stall twice, one gate can starve the other, and drivers idle in line with no estimate while their first class starts. The challenge also required the organizers' maps and events to load from JSON, with all cameras, plates and payments simulated.

What I built

The work includes Parking engine, Scenario loader, Driver view.

The choices behind it.

Hackathon build · design + engineering

One owner for every state change

src/parqueadero/motor.ts runs each of 17 command types on a copy of the state and returns a reason in Spanish when it refuses, so a rejected action never changes anything.

A fairness rule across both gates

src/parqueadero/asignador.ts gives the next free stall to the car that arrived first at either entrance, and on a tie to the gate that has received fewer stalls.

Waits from what the lot is actually doing

src/parqueadero/espera.ts places each car in the combined order of both gates and turns the gaps between the last 8 stall movements into a minute range.

Allowed transitions only

src/parqueadero/transiciones.ts allows 4 stall moves and 4 valet moves; anything else is refused with its reason.

One store behind the views

src/routes.ts lists driver, gate, valet, office, phone, mockups, a step simulator and a four-panel flow, and every view except the static mockups reads src/parqueadero/tienda.ts.

Built and logged in one day

403 commits and 74 merged pull requests on October 30, 27 Vitest checks, and 26 typed prompts recorded in docs/prompting.raw.md.

gates, 12 stalls
2
command types
17
tests
27
commits in one day
403

Under the surface.

Parking engine

library

Commands, transitions, the fairness rule and wait estimates over one state, refusing with a reason.

Scenario loader

library

Validates the organizers' JSON maps, gates, valets and events, and builds the seed state.

Driver view

app

Place in line, estimated wait, stall reservation on the map, and the valet ticket.

Gate and valet views

app

Each gate's passage and turn, plus the valet's next step, tickets and key board.

Office view

app

The whole lot live, simulated events up to a chosen minute, the log and a reset to the seed.

Build details Stack, scope, and implementation

Built with

  • React 19
  • TypeScript 7
  • Vite 8
  • Vitest 5
  • lucide-react
  • Playwright
  • localStorage

Areas

  • hackathon
  • operations
  • fair queueing
  • valet
  • simulation
  • Spanish UI

More about the project

The app gives the driver, both gates, the valets and the parking office one shared state. A driver sees their place in line and an estimated wait, reserves the free stall when it is their turn, or hands the keys to a valet for a numbered ticket and walks to class. Everything runs in the browser from one scenario file, and every rejected action explains itself in Spanish.

Try the product.

Interactive demo · Open full screen