It started with one drive
In June 2023 CIDIX built a small app with a single purpose: during a driving tour, the phone should know where a car is and play a story at exactly that spot. The first working state carries the note “position tracking working” in the code. An early station list runs a test loop through Aachen, past the Tivoli stadium, the CHIO grounds and Merzbrück airfield.
That experiment became sector_tour, the app for the Great Porsche 914 Three-Country Tour. CIDIX organised the tour from 24 to 26 May 2024 together with the Porsche 914 community 914 SECTOR. Six stages and 362 kilometres led through Germany, Belgium and the Netherlands: across the Börde, through the Eifel and the Ardennes to Liège and Maastricht, with stops including Vogelsang and the Spa-Francorchamps circuit.
More than 60 Porsche 914s took part. On the way, the app told 358 short stories about the places the cars were passing. Instead of a roadbook on the passenger seat and explanations in the evening, the teams heard the story of a place at the moment they saw it. Television and radio reported on the tour.
Stories that know their place
The idea is simple; the implementation had to be robust. Every station has coordinates and an audio text. The app does not watch all stations at once, only the next one. When the car enters its radius, 30 metres at first and 50 metres for the 2024 tour, the app moves on and plays the text. If a story is still running, the next one waits until it has finished. Progress is saved, so a drive continues at the same point after the app restarts.
Mobile coverage in the Eifel and the Ardennes is not a given. In the first version the audio files were therefore bundled in the app. For the 2024 tour, participants downloaded a language pack before the start, in German, English or Dutch, and playback then ran without a network. The interface itself was also translated into French.
To keep the group from spreading out along the route, the stages were timed. After each stage the app showed “stage complete” and a countdown until the next departure. The map followed the car and adjusted zoom and tilt to its speed. Anyone who took a wrong turn could recalculate the route, and in case of a breakdown a dedicated screen sent the position by text message to the service car.
From response to product
The response to the tour was clear enough to turn it into a product. In November 2024 CIDIX started CHRONICLE: GO as the app for participants, STUDIO as the organisers’ tool in the browser.
The step was bigger than it sounds. sector_tour knew exactly one event. Its stations were maintained directly in the database, and its administration covered little more than the registration form. CHRONICLE had to let any organiser build their own tour without a line of code: route, stages, texts, media, tasks, participants and documents, for drives, rallies, explorations and scavenger hunts.
What CHRONICLE is today
In STUDIO, organisers plan a tour in the browser. The route is built section by section from points and stages, with date and time. Each point gets a trigger: a GPS radius between 10 and 500 metres, a hidden location, or a code that is only checked on the server. Texts are voiced by AI, with 30 voices and optionally as a dialogue between two speakers; jingles are added automatically, and the map shows where along the route audio is playing.
The same data produces print-ready documents. The roadbook editor sets logbook tables with distances and direction symbols, derives pace notes from the elevation profile and works with templates, custom fonts and sponsor logos. For the authorities there is the permit application under § 29 of the German road traffic regulations with maps per stage; for participants, a liability waiver and a participant list.
For the day itself, STUDIO manages participants, teams, start numbers and roles such as organiser or service car. Tasks in six types are scored on the server and appear in a live leaderboard; rallies get control points with target times and penalty seconds. A live map shows participants’ positions, and messages reach everyone by push notification. Several people can work on a tour at the same time, with change history and automatic backups.
GO accompanies participants from registration to the finish. Joining works with a code, the liability waiver is signed in the app with place and time, and before the start GO downloads all media for offline use. On the road the app gives spoken turn-by-turn directions but always lets a story finish first. Add detours, puzzles and tasks, breakdown help with the service car, a diary, results with badges and a card to share.
Organisers buy a tour individually through Stripe; a trial tour is free. Every tour gets a public page with a preview image and a flyer with a QR code. GO has been available in the App Store and on Google Play since summer 2026. Behind it all are about 88,000 lines of code in STUDIO with 147 test files, about 31,000 lines in GO with 51 test files and around 55 Cloud Functions.
What remains of sector_tour
Some of it can be traced directly in today’s code. GO’s breakdown help names the old tour app’s breakdown screen as its model and keeps its format for the map link. The camera uses the same speed thresholds. And the default radius of 30 metres comes from the first version.
That radius shows how the product has grown. During a Porsche 914 drive in September 2026, a point with a fixed ring could not be reached. Since then GO adapts the radius to speed, GPS accuracy and the distance to the previous point; a section further down explains how. The 358 texts of the 2024 tour also serve as the reference for an automatic tour draft that is still in development: for example for the speaking rate and the rule that a story starts two to ten kilometres before its place.
A moved point should not rebuild the whole tour
STUDIO does not store a tour as one finished line. It stores neighbouring points and the segments between them. An organiser can calculate only missing segments, a selected range, one stage, or the last five or ten segments. Moving one point therefore stays local instead of automatically requesting the entire route again.
Each segment keeps geometry, roads, distance, duration, instructions, warnings and transport mode. Segment data and aggregate tour totals are written separately. This was a deliberate failure boundary: a permission failure on the tour document must not discard already paid routing results that succeeded locally. The trade-off is that totals can temporarily lag behind segments.
Stable guidance from imperfect GPS
GO builds one continuous navigation path from stored polylines. Instructions sit on cumulative route distance. Pure departure steps and meaningless arrivals at intermediate points are removed, while real turns remain. Each GPS fix produces a domain update with route position, off-route state and due announcements; widgets do not implement those decisions.
The snapper first searches within a moving window around previous progress. Backwards jumps and segments against the direction of travel receive penalties. Heading is only trusted above a profile-specific speed. If the local window finds nothing plausible, a global reacquisition runs. This balances calm behaviour at intersections with recovery after a tunnel or detour.
Round trips need additional context because start and finish can share nearly the same coordinates. A seeded expected progress prevents waiting at the start from looking like a completed route. Existing regression cases cover that failure, starts away from the route and resuming later.
Waypoint detection is separate from route projection. Its radius combines a base distance, speed and reported GPS accuracy, then contracts for tightly spaced points. A scavenger hunt deliberately uses different rules: fixed radius, no speed look-ahead and no automatic skipping. That difference is product behaviour, not a theme setting.
Offline is a verified state
GO plans media downloads with audio before images and several workers. Empty or symbolic URLs never become file requests. A file only counts after a successful response and a non-empty local result; partial files are removed.
The outcome distinguishes missing mandatory audio from missing images. Audio determines whether a tour can start, while images can remain as named gaps. Reopening the tour checks the files again rather than trusting an old flag after cache loss.
Route recording follows an explicit cross-app contract. Points use one-based document IDs while route segments use zero-based IDs because that is what STUDIO reads. Contract tests also cover older documents with absent media fields and coordinates stored as strings. Replacing a scavenger-hunt recording is blocked because it would destroy puzzles, triggers and secret answers.
Validate meaning before participants leave
STUDIO has a pure readiness function with no database access. Every finding has severity, a stable identifier, an explanation and optionally a destination in the editor. The UI can take an organiser from a problem to the exact place that fixes it.
Rules differ by tour type. An experience requires a calculated route; free exploration does not. A rally without a checkpoint, a puzzle without an answer, overlapping triggers or a walking stage still calculated for cars receive different findings. If point data was not loaded, the check says so instead of claiming full readiness.
What this demonstrates for client work
CHRONICLE joins a domain-specific web tool, mobile runtime and backend as one product. Its strongest evidence sits at the boundaries: a partial recalculation remains coherent, noisy GPS becomes stable progress, and offline readiness can be reconstructed from actual files.
For related work, CIDIX can design the authoring tool and field application together. Critical rules are separated from UI, tested against historical formats and explained through concrete failure cases. Success metrics for a new product would be agreed explicitly; this case study does not manufacture commercial outcomes.
And CHRONICLE shows how a single project becomes a product. What worked for one drive was not simply copied but generalised so that organisers can use it for their own tour without programming.







