Case study

Etivon

Website, API and dashboard for an educational travel company: tours, bookings and payments for schools, independent travelers and staff.

2026, Sole developer

Etivon home page

Etivon

What it is

Etivon is an educational travel company. The platform is a monorepo with three deployed pieces: a public website, a JSON API, and a customer dashboard.

The public site at etivon.com presents school tours and international competitions across 60 plus destinations, with an interactive world map and a quote request form. It is a static Astro 5 build with React islands, served as Cloudflare Workers static assets.

The dashboard at app.etivon.com is where schools, independent travelers and staff manage trips, bookings and payments. It talks to api.etivon.com, a Hono application on Cloudflare Workers backed by D1 through Drizzle and two R2 buckets.

My role

I am the sole developer. I designed the schema, wrote all three applications and the types shared between them, and shipped the platform to production between August and September 2026.

Stack

  • Astro 5
  • React 19
  • React Router 7
  • Vite
  • Tailwind CSS 3.4
  • Hono
  • Cloudflare Workers
  • D1
  • Drizzle
  • R2
  • TypeScript

Highlights

  • Built the whole platform as a monorepo with three deployed pieces: a public marketing site, a JSON API, and a customer dashboard, all running on Cloudflare.
  • Implemented api.etivon.com as a Hono application on Cloudflare Workers backed by D1 (SQLite through Drizzle) and two R2 buckets.
  • Built etivon.com as a static Astro 5 site with React islands, served as Workers static assets, covering school tours and international competitions across 60 plus destinations, an interactive world map, and a quote request form.
  • Built app.etivon.com as a React 19 and React Router 7 dashboard on Vite and Tailwind 3.4, where schools, independent travelers and staff manage trips, bookings and payments.
  • Designed the relational schema, the TypeScript types shared across all three applications, and the deployment pipeline for each Worker.

Gallery

Next project

OfferTrail

Read the case study