Documentatie
Documentation
Catch a Break Wiki
Catch a Break Wiki
Catch a Break is een reisplanner die uw vluchten, hotels, restaurants en meer op één plek bewaart. De app werkt op telefoon en in elke moderne webbrowser, en houdt al uw apparaten automatisch synchroon.
Catch a Break is a trip planner that keeps your flights, hotels, restaurants and more in one place. It runs on phone and in any modern browser, and keeps all your devices in sync automatically.
Aan de slagGetting started
U kunt Catch a Break op drie manieren gebruiken:
You can use Catch a Break in three ways:
- Mobiele app (Android) — installeer via de Play Store.Mobile app (Android) — install from the Play Store.
- Web versie — open catch-a-break.web.app in elke browser. Dezelfde Flutter-app, draait online.Web build — open catch-a-break.web.app in any browser. Same Flutter app, online.
- PWA op struisict.com — open de web-app hier en installeer als webapp via uw browser.PWA on struisict.com — open the web app here and install it via your browser's "Install app" option.
Meld u aan met uw Google-account en al uw reizen worden automatisch gesynchroniseerd tussen de drie surfaces.
Sign in with your Google account and all your trips are automatically synced across all three surfaces.
ReizenTrips
Een reis bevat een naam, datums, notities en een lijst van items. Reizen kunnen drie statussen hebben:
A trip has a name, dates, notes and a list of items. Trips have three statuses:
- Aankomend — startdatum ligt in de toekomst.Upcoming — start date is in the future.
- Vorig — einddatum ligt in het verleden.Previous — end date is in the past.
- Gearchiveerd — door u verborgen, maar niet verwijderd.Archived — hidden by you but not deleted.
SjablonenTemplates
Markeer een reis als sjabloon om hem te hergebruiken. Wanneer u een reis dupliceert vanuit een sjabloon, worden alle items meegekopieerd zodat u ze niet opnieuw hoeft in te voeren.
Mark a trip as a template to reuse it. When you duplicate a trip from a template, all items are copied so you don't have to re-enter them.
ReisitemsTrip items
Elke reis bevat items die u op twee assen indeelt: internationaal (vluchten, hotels, …) of lokaal (restaurants, activiteiten, …). De app toont per reistype de juiste velden.
Every trip contains items grouped along two axes: international (flights, hotels, …) or local (restaurants, activities, …). The app shows the right fields for each item type.
✈️ VluchtFlight
Vluchtnummer (autocomplete uit de OpenFlights-database), van/naar, vertrek-/aankomsttijd, stoel.
Flight number (autocomplete from the OpenFlights dataset), from/to, departure/arrival time, seat.
🚆 TreinTrain
Treinnummer, van/naar, vertrek/aankomst, perron.
Train number, from/to, departure/arrival, platform.
🚗 HuurautoCar rental
Type, ophaal- en inleverlocatie, datums.
Type, pickup/dropoff location, dates.
🏨 HotelHotel
Adres (autocomplete via OpenStreetMap), check-in/-out, kamertype.
Address (autocomplete via OpenStreetMap), check-in/out, room info.
🎢 PretparkTheme park
Adres, openingsuren, website, ticket-URL.
Address, opening hours, website, ticket URL.
🍽️ RestaurantRestaurant
Adres, openingsuren, website, reserverings-URL.
Address, opening hours, website, reservation URL.
☕ CaféCafé
Adres, openingsuren, website.
Address, opening hours, website.
🎟️ ActiviteitActivity
Ontmoetingspunt, starttijd, website, tickets.
Meeting point, start time, website, tickets.
🛍️ WinkelenShopping
Adres, openingsuren, website.
Address, opening hours, website.
📌 OverigOther
Vrije tekst voor alles wat niet in een categorie past.
Free-form for anything that doesn't fit a category.
Gemeenschappelijke veldenCommon fields
Elk item heeft naast de typespecifieke velden ook: titel, kosten (met valutakeuze), boekingsreferentie, boekings-URL, notities en een optionele herinnering.
Every item has, in addition to its type-specific fields: title, cost (with currency selector), booking reference, booking URL, notes and an optional reminder.
HerinneringenReminders
Op de mobiele app krijgt u een lokale notificatie op de gekozen tijd. Op web wordt de herinnering opgeslagen, maar niet als push-melding getoond — open de app om hem te zien.
On mobile you get a local notification at the chosen time. On web the reminder is saved but not shown as a push — open the app to see it.
SynchronisatieSync
Synchronisatie verloopt volledig automatisch via Firebase Firestore. Wanneer u op een apparaat een reis of item toevoegt, bewerkt of verwijdert, ziet u de wijziging op alle andere apparaten verschijnen binnen ~5 seconden — zolang u op alle apparaten bent ingelogd met hetzelfde Google-account.
Sync runs fully automatically via Firebase Firestore. When you add, edit or delete a trip or item on one device, the change appears on every other device within ~5 seconds — as long as you're signed in with the same Google account on every device.
| ApparaatDevice | URL |
|---|---|
| Mobiele appMobile app | Play Store |
| Web (Flutter)Web (Flutter) | catch-a-break.web.app |
| Web (PWA)Web (PWA) | struisict.com/catchabreakapp.html |
Geen handmatige uploads of downloads meer. Sinds versie 1.0.5 zijn de oude "upload alles" / "download alles" knoppen verwijderd — alles gaat realtime.
No more manual uploads or downloads. As of version 1.0.5 the old "upload all" / "download all" buttons are gone — everything is real-time.
Offline gebruikOffline use
De mobiele app slaat al uw gegevens lokaal op (SQLite). U kunt zonder verbinding reizen openen, items bekijken en zelfs nieuwe items toevoegen — zodra u weer online bent worden ze gesynchroniseerd.
The mobile app stores everything locally (SQLite). You can open trips, view items and even add new items without a connection — they sync as soon as you're back online.
De PWA-versie op struisict.com werkt grotendeels offline dankzij de service worker; de Flutter web-versie heeft een actieve verbinding nodig om gegevens te laden.
The PWA on struisict.com works largely offline thanks to its service worker; the Flutter web build needs an active connection to load data.
TalenLanguages
De mobiele en Flutter-web app zijn beschikbaar in 8 talen: Nederlands, Engels, Frans, Duits, Spaans, Italiaans, Zweeds en Pools. U vindt de keuze in Instellingen → Taal.
The mobile and Flutter web app ship in 8 languages: Dutch, English, French, German, Spanish, Italian, Swedish and Polish. Pick yours in Settings → Language.
Tips & trucsTips & tricks
- Houd Drag ingedrukt op een item om het te herordenen binnen een reis.Long-press an item to drag-reorder within a trip.
- Op de items-pagina gebruikt u de pijltjes voor één-stap verplaatsen.On the items page use the up/down arrows for single-step moves.
- Type een luchtvaart-IATA (bv.
KL,BA) om vluchtroutes uit een offline-database voor te stellen.Type an airline IATA code (e.g.KL,BA) to suggest flight routes from a built-in offline dataset. - Adresvelden zoeken realtime in OpenStreetMap; klik op een suggestie om alles in te vullen.Address fields search OpenStreetMap as you type; click a suggestion to autofill.
- Het kosten-veld accepteert "€ 1,250.50", "USD 99.99" of vrije tekst — de app extraheert het bedrag voor de totalen.The cost field accepts "€ 1,250.50", "USD 99.99" or free text — the app extracts the amount for the totals.
- Stel een herinnering in om je niet te laten verrassen door een vroege check-in.Set a reminder so an early check-in doesn't catch you off guard.
Veelgestelde vragenFrequently asked questions
Waar worden mijn gegevens opgeslagen?Where is my data stored?
In Firebase Firestore (Google Cloud, Europese regio). Alleen u, ingelogd met uw Google-account, heeft toegang. Zie het privacybeleid voor details.
In Firebase Firestore (Google Cloud, EU region). Only you, signed in with your Google account, can access it. See the privacy policy for details.
Werkt de app op iPhone?Does the app work on iPhone?
De native iOS-app is nog niet gepubliceerd, maar de webversies (catch-a-break.web.app en struisict.com/catchabreakapp.html) draaien probleemloos in Safari en kunnen als webapp aan het beginscherm worden toegevoegd.
A native iOS app isn't published yet, but the web versions (catch-a-break.web.app and struisict.com/catchabreakapp.html) run fine in Safari and can be added to the home screen as web apps.
Worden vluchtprijzen automatisch opgehaald?Are flight prices fetched automatically?
Nee. De app slaat het bedrag op dat u zelf invoert. Vluchtprijzen veranderen voortdurend en koppelingen aan boekingsplatforms zou betaalde API's vereisen — daarom houden we het simpel en handmatig.
No. The app stores the amount you enter yourself. Flight prices change constantly and integrating booking platforms would require paid APIs — so we keep it simple and manual.
Kan ik items delen?Can I share items?
U kunt een hele reis exporteren als PDF (mobiele app) en delen via uw normale deelmenu. Realtime samenwerking met andere accounts staat op de roadmap.
You can export a whole trip as a PDF (mobile app) and share it via the standard share sheet. Real-time collaboration with other accounts is on the roadmap.
Hoeveel kost de app?How much does the app cost?
€0,99 als eenmalige aankoop op de Play Store. Daarna heeft u toegang tot alle huidige en toekomstige functies — geen abonnement.
€0.99 as a one-time purchase on the Play Store. After that you have access to all current and future features — no subscription.
Problemen oplossenTroubleshooting
"Sign-in failed: null check operator on a null value""Sign-in failed: null check operator on a null value"
Dit was een bug in versie 1.0.5+7 op de Flutter-webversie. Hard-refresh (Ctrl/Cmd+Shift+R) om de update te halen — versie 1.0.5+8 of nieuwer lost het op.
This was a bug in version 1.0.5+7 on the Flutter web build. Hard-refresh (Ctrl/Cmd+Shift+R) to fetch the update — version 1.0.5+8 or newer fixes it.
Items verschijnen niet op een ander apparaatItems don't appear on another device
Controleer dat u op beide apparaten bent ingelogd met hetzelfde Google-account. Ververs de app of herlaad de pagina. Als het probleem aanhoudt, log uit en weer in.
Make sure you're signed in with the same Google account on both devices. Refresh the app or reload the page. If the problem persists, sign out and back in.
De mobiele app crasht direct na het openenThe mobile app crashes right after launch
Dit kan voorkomen na een upgrade vanaf een oude versie. Verwijder en herinstalleer de app — uw cloud-gegevens worden automatisch teruggehaald.
This can happen after an upgrade from an old version. Uninstall and reinstall the app — your cloud data will be restored automatically.
Contact
Vragen, bugs of verzoeken? Stuur een mail naar dstruis@gmail.com of bezoek struisict.com.
Questions, bugs or requests? Email dstruis@gmail.com or visit struisict.com.