Rotterdam · 51°55′N · 4°28′O · Atelier nr. 004
1 plek · start Q4 2026Klantportaal →MMXXVI
CaseDemonstratie · Web app2025

Travela.
Eén flow, offline.

Een reisplanner die van een reisstijl een dag-tot-dag programma maakt. Reisdagen, verplaatsingen, accommodaties en kosten in één visuele lijn, op één pagina per reis, deelbaar met één link. Werkt offline.

Plan een gesprekBekijk de productsiteDie link gaat naar ons eigen product, niet naar een klantomgeving. Publieke productsite. Reizigersaantallen in het product zijn voorbeelddata.
Bestek
Type
Eigen product · Web app
Bewijs
Demonstratie
Jaar
2025
Rol
Concept, interactieontwerp, ontwikkeling en de offline-architectuur
Stack
Next.jsTypeScriptVercel
Doorlooptijd
3 weken
Gebouwd om een techniek te laten zien. Cijfers in het product zijn voorbeelddata, geen gemeten gebruik. Gebouwd om te laten zien dat een web-app offline net zo bruikbaar kan zijn als een native app.
3 wk
Van eerste schets tot live
1
Pagina per reis, één deellink
Offline
De hele app, via een service worker
4
Lagen in één lijn per dag
RondleidingZonder login

Wat een reiziger doorloopt.

De productsite is open en vraagt geen account. Dit is de route van reisstijl naar een programma dat je kunt delen.

travela-amber.vercel.app
Travela: persoonlijke reisplanner met dag-tot-dag programma op basis van reisstijl
Reisstijl kiezen, dagprogramma lezenWeb app · live
  1. Stap 1

    Reisstijl kiezen

    Tempo, budget, interesses en gezelschap. Daaruit volgt het profiel waarop het programma gebouwd wordt.

  2. Stap 2

    Bestemming en dagen

    Aankomst, vertrek en het aantal nachten per plek. Meer vraagt de app niet.

  3. Stap 3

    Dagprogramma lezen

    Per dag verplaatsing, verblijf, activiteiten en kosten in één verticale lijn, per onderdeel aan te passen.

  4. Stap 4

    Delen en offline

    Eén link per reis. Wie hem opent leest hetzelfde programma, en na het eerste bezoek ook zonder verbinding.

Reizigersaantallen en voorbeeldreizen op de productsite zijn voorbeelddata om de interface te tonen, geen gemeten gebruik. Het offline-gedrag is wel zelf te controleren: zet je telefoon in vliegtuigstand en open de app opnieuw.

Aanleiding

Te veel schermen, of helemaal geen structuur.

Reisplanners zijn óf touroperator-tools met te veel stappen, óf een platte lijst in Notion. Frequente reizigers hebben iets ertussenin nodig.

Travela is een eigen product, geen klantopdracht. Het bestaat om te bewijzen dat een web-app in de "breukmomenten" van een reis, wachtend op een vlucht, in de auto, in een hotelkamer zonder wifi, net zo betrouwbaar is als een native app. Dat vraagt een offline-first architectuur, en die is lastig achteraf toe te voegen. Daarom is hij hier vanaf de eerste commit zo ontworpen.

  • 01Reisstijl kiezen: tempo, budget, wat je wel en niet wilt zien.
  • 02Daaruit volgt een dag-tot-dag programma met verplaatsingen, verblijf en kosten.
  • 03Eén pagina per reis, aan te passen en te delen met één link.
  • 04Alles blijft werken zonder verbinding; sync zodra die er weer is.
AanpakDrie sleutelmomenten

Waar het product gewonnen werd.

Week 1 · Interactie

Van reisstijl naar dagprogramma, in één flow.

Geen wizard van twaalf schermen. De reiziger kiest een stijl, geeft bestemming en dagen op en krijgt een programma dat per dag aan te passen is. Reisdagen, verplaatsingen, accommodaties en kosten staan in één verticale lijn, zodat je in één blik ziet waar je morgen bent en wat het kost.

flow1 scherm per stap
01Reisstijltempo, budget, interesses, gezelschap
02Bestemming en dagenaankomst, vertrek, aantal nachten per plek
03Dagprogrammaper dag: verplaatsing, verblijf, activiteiten, kosten
OKEén pagina per reisaanpasbaar, deelbaar met één link
Week 2 · Offline-first

Een service worker voor de hele app.

De hele app draait vanuit de cache, en de lokale state is de waarheid. Bewerkingen gebeuren eerst op het apparaat; een cloud-kopie is optioneel en synct zodra er verbinding is. Die keuze bepaalde de complete architectuur, van datamodel tot routing.

sw.jsoffline-first
01App-shell gecachetalle routes en assets bij eerste bezoek
02Lokale state is de bronelke wijziging eerst op het apparaat
03Sync bij verbindingoptioneel, naar de cloud-kopie van de reis
OKGeen spinner zonder wifilezen en bewerken werkt altijd
Week 3 · Delen

Eén link, één pagina, geen account voor de lezer.

Een reis is één pagina met één link. Wie de link heeft ziet hetzelfde programma en dezelfde kosten, ook zonder verbinding na het eerste bezoek. Geen exports, geen pdf die na de eerste wijziging verouderd is.

/reis/[id]deelbaar
01Reis krijgt een publieke linkalleen wie de link heeft kan lezen
02Reisgenoot opent op de telefoonzelfde dagprogramma, zelfde kosten
03Wijzigingen komen meena sync, zonder opnieuw delen
OKWerkt ook offline bij de anderna het eerste bezoek gecachet
Resultaat

Wat het bewijst.

Een eigen product heeft geen opdrachtgever die een cijfer bevestigt. Wat wel te controleren is: zet je telefoon in vliegtuigstand en open de app.

Offline
Lezen én bewerken zonder verbinding
Service worker voor de hele app, lokale state als bron. Te testen in de live versie.
1
Pagina per reis, deelbaar met één link
Geen account nodig om te lezen.
3 wk
Van eerste schets tot live
Inclusief de offline-architectuur en het deelmechanisme.

Wat hier niet staat. Beschrijft de opgeleverde flow. Eigen product zonder externe opdrachtgever, dus zonder gemeten klantresultaat.

Voor klanten is dit het bewijs voor elke app die in het veld gebruikt wordt: inspecties, evenementen, bezorging, zorg aan huis. Dezelfde offline-architectuur, dezelfde sync-logica, zonder app-store.

Stack

Vier lagen, bewust klein gehouden.

LaagKeuzeWaarom
FrameworkNext.js + TypeScript op VercelStatische app-shell, typed datamodel voor de reis
StylingTailwind CSSEén verticale lijn per dag, leesbaar op een telefoon
OfflineService worker + lokale stateWerkt zonder verbinding, geen spinner
SyncOptionele cloud-kopieDelen en bewaren zodra er verbinding is; niet verplicht
Geleerd

Voor een tool die mensen in de breukmomenten gebruiken, is offline-first geen feature die je later toevoegt. Het bepaalt het datamodel, de routing en de manier van delen. Die keuze in week 1 maken kostte een dag; hem in week 3 alsnog maken had het hele project gekost.

Eerstvolgende start: Q4 2026

Plan een vergelijkbaar project.
Een web-app die ook zonder wifi werkt.

Een gesprek van 45 minuten: je hoort of jouw app zonder app-store kan, wat offline-first voor jouw proces betekent en wat er in 1–6 weken live staat. Vaste offerte binnen 48 uur.

01Maatwerk websites: 1–6 weken, vaste prijs na gesprek.
02Code in jouw repo, infrastructuur op jouw accounts.
03Lighthouse 95+ bij oplevering, gemiddeld 98.
04Reactie binnen 24 uur.

Laatst bijgewerkt: 8 september 2026.