Software Studio · Vienna
Software-Studio · Wien
Built, not talked about.
Gebaut, nicht geredet.
Software with purpose. And beauty.
Software mit Sinn und Nutzen. Und schön.
None of these started as a plan. They started because I needed them.
Keines dieser Projekte war geplant. Sie sind entstanden, weil ich sie gebraucht habe.
I wanted to know what finish time I could realistically aim for on race day, so I built Run with Alva. And I was tired of calling around to find out which tennis court was free, so I built the MTV Hernals app to just book one and see what's open. Both began as my own small annoyance, and then I started building — talking through the idea, trying things, watching it actually come together on screen. What got me hooked was the pace: ten or fifteen features in an afternoon, fixing bugs, tweaking the branding and cleaning up the UI as I went. But the best part was learning a whole new area step by step, figuring out how it really works while I built it.
Ich wollte wissen, welche Zielzeit am Renntag realistisch ist — also habe ich Run with Alva gebaut. Und ich hatte es satt, herumzutelefonieren, um herauszufinden, welcher Tennisplatz frei ist — also habe ich die MTV-Hernals-App gebaut, um einfach einen Platz zu buchen und zu sehen, was offen ist. Beides begann als eigene kleine Frustration, und dann habe ich angefangen zu bauen: die Idee durchsprechen, Dinge ausprobieren, zusehen, wie am Bildschirm wirklich etwas entsteht. Was mich gepackt hat, war das Tempo: zehn oder fünfzehn Features an einem Nachmittag, Bugs beheben, am Branding feilen und nebenbei das UI aufräumen. Am schönsten war aber, ein völlig neues Gebiet Schritt für Schritt zu lernen und beim Bauen zu verstehen, wie es wirklich funktioniert.
But the tools are not the point. The point is staying close to the real problem you set out to solve — not losing your time hunting for the ten killer prompts that will supposedly change everything. The fastest way to learn is to build. So I build. Digital products in days, not quarters. That's the whole idea behind staying curious: stop reading about it, and start.
Aber die Tools sind nicht der Punkt. Der Punkt ist, nah am eigentlichen Problem zu bleiben, das man lösen will — und nicht seine Zeit damit zu verlieren, nach den zehn Killer-Prompts zu suchen, die angeblich alles verändern. Der schnellste Weg zu lernen ist zu bauen. Also baue ich. Digitale Produkte in Tagen, nicht Quartalen. Genau darum geht es bei stay curious: nicht länger darüber lesen, sondern anfangen.
Run with Alva — Race Prognosis & Training Planning
Run with Alva — Wettkampfprognose & Trainingsplanung
A personal running-analytics web app that turns scattered training data into a clear answer to one question: can I actually hit my race goal? A full training history flows in automatically via Strava — every run with its splits, heart rate and temperature — alongside real race results and daily readiness values, feeding a VDOT-based prediction engine that projects finish times for 5K, 10K, and half-marathon — and shows the gap to your target. A race-day correction adjusts the forecast for the weather and terrain you'll actually run in, and the result sits next to Garmin's and Runalytics' estimates — as a deviation, not a verdict, because only real races settle who was closer. Designed, developed, and deployed end-to-end as a solo project.
Eine persönliche Lauf-Analytics-Web-App, die verstreute Trainingsdaten in eine klare Antwort auf eine Frage verwandelt: Kann ich mein Wettkampfziel tatsächlich erreichen? Die komplette Trainingshistorie fließt automatisch über Strava ein — jeder Lauf mit Splits, Puls und Temperatur — dazu echte Wettkampfergebnisse und tägliche Readiness-Werte, in eine VDOT-basierte Prognose-Engine, die Zielzeiten für 5 km, 10 km und Halbmarathon hochrechnet und die Lücke zum Ziel sichtbar macht. Eine Renntag-Korrektur passt die Prognose an Wetter und Streckenprofil an, die dich tatsächlich erwarten, und das Ergebnis steht neben den Schätzungen von Garmin und Runalytics — als Abweichung, nicht als Wertung, denn welche näher lag, zeigen erst echte Rennen. Von Anfang bis Ende selbst konzipiert, entwickelt und deployt.
Why I built this
Warum ich das gebaut habe
Run with Alva is really just everything I love about running in one place — tracking, chasing goals, the insights, building a plan, working backwards from a race date, running it, and then starting over. Every race becomes the starting point for the next one. Funnily enough, that's also how I build: try something, test it, do it again. For me the app sits on two things I genuinely enjoy: taking my own training seriously, with a clean and simple design, and getting AI to be useful rather than chatty — Alva answers questions about my training, but only from data that's actually there, and says so when it isn't. Honestly, the app itself is only half of it. The part I keep coming back for is the process — getting completely absorbed in it, head down, solving something that actually matters to me. That's why I want to keep building. A domain, a mail service, an app, whatever it is, it's never far from being real.
Run with Alva ist eigentlich nur alles, was ich am Laufen liebe, an einem Ort — tracken, Ziele verfolgen, die Insights, einen Plan bauen, vom Renndatum rückwärts rechnen, das Rennen laufen und dann wieder von vorn. Jedes Rennen wird zum Startpunkt für das nächste. Komischerweise baue ich genauso: etwas ausprobieren, testen, nochmal machen. Für mich steht die App auf zwei Dingen, die mir wirklich Spaß machen: mein eigenes Training ernst zu nehmen, mit einem klaren, schlichten Design, und KI dazu zu bringen, nützlich statt geschwätzig zu sein — Alva beantwortet Fragen zu meinem Training, aber nur aus Daten, die wirklich da sind, und sagt es, wenn sie fehlen. Ehrlich gesagt ist die App selbst nur die halbe Sache. Worauf ich immer wieder zurückkomme, ist der Prozess — völlig darin zu versinken, den Kopf unten, und etwas zu lösen, das mir wirklich wichtig ist. Deshalb will ich weiterbauen. Eine Domain, ein Mail-Service, eine App, was auch immer — es ist nie weit davon entfernt, real zu werden.
Features
Funktionen
- ·VDOT prediction engine — three-pillar model (VDOT, Riegel, lactate threshold) weighting real race times, threshold pace, and VO₂max
- ·VDOT-Prognose-Engine — Drei-Säulen-Modell (VDOT, Riegel, Laktatschwelle), gewichtet aus echten Wettkampfzeiten, Schwellen-Pace und VO₂max
- ·Three-way forecast comparison — Garmin, Runalytics and Run with Alva side by side per distance, shown as a deviation, not a verdict: only real races settle who was closer
- ·Drei-Wege-Prognosevergleich — Garmin, Runalytics und Run with Alva nebeneinander je Distanz, als Abweichung ausgewiesen, nicht als Wertung: welche Schätzung näher lag, zeigen erst echte Rennen
- ·Race-day correction — live weather and terrain adjust the forecast for the conditions you'll actually run in
- ·Renntag-Korrektur — aktuelles Wetter und Streckenprofil passen die Prognose an die realen Bedingungen an
- ·Condition-adjusted form — one race, two VDOT values: a 28 °C race read as 38.0 raw scores 43.8 once heat and elevation are accounted for. The chart plots both.
- ·Bedingungsbereinigte Form — ein Rennen, zwei VDOT-Werte: ein Rennen bei 28 °C ergibt roh 38,0, hitze- und höhenbereinigt 43,8. Der Chart zeigt beide Verläufe.
- ·Readiness score (0–100) from training load, sleep, stress, and VO₂max — recalculated on every login
- ·Readiness-Score (0–100) aus Trainingslast, Schlaf, Stress und VO₂max — bei jedem Login neu berechnet
- ·Blood markers as health context only — ferritin, haemoglobin and more tracked over time, deliberately kept out of the forecast: no single lab value proves fitness, and the app says so
- ·Blutwerte als reiner Gesundheits-Kontext — Ferritin, Hämoglobin und mehr im Verlauf, bewusst außerhalb der Prognose: kein einzelner Laborwert beweist Fitness, und die App sagt das auch
- ·Base data with honest caveats — weight, VO₂max, threshold pace and BMI in trend, each with a note on what it does and doesn't say (BMI can't tell muscle from fat)
- ·Grunddaten mit ehrlicher Einordnung — Gewicht, VO₂max, Schwellen-Pace und BMI im Verlauf, jeweils mit Hinweis, was der Wert aussagt und was nicht (BMI unterscheidet nicht Muskel und Fett)
- ·Race lifecycle — planned goals move to history automatically on race day; every upcoming race shows the forecast and the gap to target, across 18 years of results
- ·Wettkampf-Lebenszyklus — geplante Ziele wandern am Renntag automatisch in die Historie; jedes kommende Rennen zeigt Prognose und Lücke zum Ziel, über 18 Jahre Ergebnisse hinweg
- ·AI-generated training plans — periodised backwards from race day into blocks and taper, with weekly volume and HR zones
- ·KI-generierte Trainingspläne — vom Renntag rückwärts periodisiert in Blöcke und Taper, mit Wochenvolumen und HF-Zonen
- ·Every plan explains itself — target pace checked against your threshold, recovery and weight read from real values, not assumptions
- ·Jeder Plan begründet sich selbst — Zielpace gegen die Schwelle geprüft, Erholung und Gewicht aus echten Werten gelesen, nicht angenommen
- ·Automatic Strava sync (OAuth) — full history, 200+ runs and 1,200+ km, each with splits, heart rate, temperature and indoor/outdoor
- ·Automatischer Strava-Sync (OAuth) — komplette Historie, 200+ Läufe und 1.200+ km, jeweils mit Splits, Puls, Temperatur und drinnen/draußen
- ·Nine sports tracked alongside running — tennis, strength, cycling, swimming and more — filterable by period, distance, environment and races only
- ·Neun Sportarten neben dem Laufen — Tennis, Kraft, Radfahren, Schwimmen und mehr — filterbar nach Zeitraum, Distanz, Umgebung und nur Rennen
- ·Personalized insights across 18 categories from real data
- ·Personalisierte Insights über 18 Kategorien aus realen Daten
- ·Ask Alva — ask anything about your training in plain language; answers draw only on your stored data, and say so honestly when something's missing rather than guessing
- ·Frag Alva — Fragen zum eigenen Training in natürlicher Sprache; die Antwort stützt sich ausschließlich auf gespeicherte Daten und sagt ehrlich, wenn etwas fehlt, statt zu schätzen
- ·GDPR-compliant, hosted on EU infrastructure (Supabase Paris)
- ·DSGVO-konform, Hosting auf EU-Infrastruktur (Supabase Paris)
- ·A dark interface with monospaced figures, because times are taken in at a glance, not read
- ·Dunkles Interface mit Monospace-Ziffern, weil Zeiten im Blick erfasst werden, nicht gelesen
Methodology — 15 chapters in the app explain every formula and cite their sources. No black box.Methodik — 15 Kapitel in der App erklären jede Formel und nennen ihre Quellen. Keine Black Box.
The VDOT model
Das VDOT-Modell
the base formula every time prognosis is built on
die Basisformel, auf der jede Zeitprognose aufbaut
Three data sources
Drei Datenquellen
why race, threshold, and Garmin are computed together
warum Wettkampf, Schwelle und Garmin gemeinsam berechnet werden
Time weighting
Zeitgewichtung
why an older race counts less than a recent one
warum ein älteres Rennen weniger zählt als ein aktuelles
VDOT trend
VDOT-Trend
your personal fitness development, charted
deine persönliche Fitnessentwicklung, visualisiert
Negative split
Negative Split
how the pace table distributes your target time across kilometers
wie die Pace-Tabelle deine Zielzeit über die Kilometer verteilt
Temperature & topography
Temperatur & Topografie
how heat and elevation affect the prognosis and VDOT
wie Hitze und Höhenmeter Prognose und VDOT beeinflussen
Raw vs. adjusted VDOT
Roher vs. adjustierter VDOT
why one and the same race can yield two VDOT values
warum ein und dasselbe Rennen zwei VDOT-Werte ergeben kann
Race weighting
Wettkampf-Gewichtung
what percentage each race contributes to the prognosis, and why
welcher Prozentsatz jedes Rennen zur Prognose beiträgt, und warum
Forecast comparison
Prognosevergleich
what Garmin, Runalytics and Run with Alva each estimate — and why the gap is not a verdict
was Garmin, Runalytics und Run with Alva jeweils schätzen — und warum die Lücke keine Wertung ist
Age correction
Alterskorrektur
when and why the model factors in your age
wann und warum das Modell dein Alter einrechnet
Training readiness
Training-Readiness
how sleep, stress, and fitness produce the readiness score
wie Schlaf, Stress und Fitness den Readiness-Score ergeben
BMI
BMI
what the value says, and what it doesn't
was der Wert aussagt, und was nicht
Race lifecycle
Wettkampf-Lebenszyklus
how a goal becomes a result without double entry
wie aus einem Ziel ein Ergebnis wird, ohne Doppeleingabe
Dashboard overview
Dashboard-Übersicht
what the readiness card and weekly card show in detail
was die Readiness-Karte und die Wochen-Karte im Detail zeigen
Second opinion
Zweitmeinung
the Riegel formula as an independent cross-check on the forecast
die Riegel-Formel als unabhängige Zweitmeinung zur Prognose
Built with
Gebaut mit
Frontend & Design
Frontend & Design
Backend & Data
Backend & Data
AI & Analytics
KI & Analytics
DevOps & Quality
DevOps & Quality
Domain Knowledge
Domänenwissen
What's next for Run with Alva
Wie es mit Run with Alva weitergeht
Forecast, plan, race-day correction and the health context are shipped. One thing is still open — and it's the one where the science demands the most care.
Prognose, Plan, Renntag-Korrektur und der Gesundheits-Kontext laufen. Eines ist noch offen — und ausgerechnet dort verlangt die Studienlage die meiste Sorgfalt.
Body composition, done honestly
Körperzusammensetzung, ehrlich gemessen
Weight and BMI are tracked, but BMI can't tell muscle from fat. Real body-fat data — measured under steady conditions, read as a trend — would give a fairer picture, fed in only where the science supports it.
Gewicht und BMI werden erfasst, aber der BMI unterscheidet nicht Muskel und Fett. Echte Körperfett-Daten — unter gleichen Bedingungen gemessen, als Trend gelesen — gäben ein faireres Bild, eingerechnet nur dort, wo die Wissenschaft es stützt.
MTV Hernals — Tennisplatz Buchung
A full-stack court booking system built pro bono for my tennis club MTV Hernals — replacing paper lists and phone calls with a self-service web app. Members book courts, manage fixed weekly slots, and receive opt-in email reminders. An admin panel handles member management, PDF export, and booking oversight. Built from scratch in my spare time: designed, developed, and deployed end-to-end.
Ein vollständiges Platzbuchungssystem, ehrenamtlich für den MTV Hernals Tennisverein entwickelt — als Ersatz für Papierlisten und Telefonanrufe. Mitglieder buchen Plätze selbst, verwalten Fixstunden und erhalten optionale E-Mail-Erinnerungen. Ein Admin-Panel deckt Mitgliederverwaltung, PDF-Export und Buchungsübersicht ab. Von Anfang bis Ende selbst konzipiert, entwickelt und deployt.
Features
Funktionen
- ·Flexible bookings (max. 2/week, resets Monday)
- ·Flexible Buchungen (max. 2/Woche, Reset montags)
- ·Weekly fixed slots with admin override
- ·Wöchentliche Fixstunden mit Admin-Override
- ·Opt-in email notifications (confirmation, cancellation, 24h reminder)
- ·Opt-in E-Mail-Benachrichtigungen (Bestätigung, Stornierung, 24h-Erinnerung)
- ·Admin panel: member management, PDF export, full booking oversight
- ·Admin-Panel: Mitgliederverwaltung, PDF-Export, vollständige Buchungsübersicht
- ·GDPR-compliant data handling, hosted on EU infrastructure (Supabase Frankfurt)
- ·DSGVO-konformes Datenschutzkonzept, Hosting auf EU-Infrastruktur (Supabase Frankfurt)
Alvida — Family Calendar & Shared Lists
Alvida — Familienkalender & geteilte Listen
A mobile-first calendar and list app for families: appointments colour-coded per person, shared lists, push notifications. Every family is its own tenant — row-level security on all six data tables means one family can never see another's data, and each member has their own account rather than a shared login. Founding a family, invite links and roles all happen inside the app. Installable as a PWA and usable offline.
Eine mobile-first Kalender- und Listen-App für Familien: Termine farbcodiert pro Person, geteilte Listen, Push-Benachrichtigungen. Jede Familie ist ein eigener Mandant — Row-Level-Security auf allen sechs Datentabellen sorgt dafür, dass keine Familie die Daten einer anderen sieht, und jedes Mitglied hat ein eigenes Konto statt eines geteilten Logins. Familie gründen, Einladungslinks und Rollen laufen komplett in der App. Als PWA installierbar und offline nutzbar.
Features
Funktionen
- ·Multi-tenancy from the ground up — every row carries a family id, enforced by RLS rather than by client-side filtering
- ·Mandantenfähig von Grund auf — jede Zeile trägt eine Family-ID, durchgesetzt per RLS statt durch Filtern im Client
- ·Push via ntfy — immediately when an appointment is created, plus a scheduled reminder 15 to 120 minutes before it starts
- ·Push über ntfy — sofort beim Anlegen eines Termins, dazu eine geplante Erinnerung 15 bis 120 Minuten vorher
- ·Weekly digest every Sunday as a Vercel cron job — timezone-aware, so “next week” means local time, not UTC
- ·Wochen-Digest sonntags als Vercel-Cron — zeitzonenbewusst, damit „kommende Woche“ nach lokaler Zeit gilt, nicht nach UTC
- ·Recurring events stored as a rule, not as rows — expanded only for the visible date range, so a weekly series stays one record
- ·Serientermine als Regel gespeichert, nicht als Zeilen — expandiert nur für den sichtbaren Zeitraum, eine Wochenserie bleibt ein Datensatz
- ·Runs without a backend too — no keys means demo mode with sample data, which keeps the UI workable on its own
- ·Läuft auch ohne Backend — ohne Keys startet ein Demo-Modus mit Beispieldaten, damit das UI eigenständig bedienbar bleibt
- ·Its own colour world and serif typography instead of stock components — a family calendar is opened every day, not once a quarter
- ·Eigene Farbwelt und Serif-Typografie statt Standard-Komponenten — ein Familienkalender wird täglich geöffnet, nicht einmal im Quartal
MyPocket — Conversation Notes from Recordings
MyPocket — Gesprächsnotizen aus Aufnahmen
Recordings and transcripts from a Pocket voice recorder are synced into my own database and post-processed with Claude in three modes: summary, action items, and a cleanup pass that strips filler words and fixes punctuation without shortening anything. Every result is cached under a key built from the recording, the mode, a hash of the raw transcript and the prompt version — so reopening costs nothing, and a re-synced transcript invalidates the old answer instead of quietly serving it.
Aufnahmen und Transkripte eines Pocket-Recorders laufen in eine eigene Datenbank und werden mit Claude in drei Modi nachbearbeitet: Zusammenfassung, Action-Items und Glätten — Füllwörter raus, Satzzeichen korrigiert, ohne zu kürzen. Jedes Ergebnis wird unter einem Schlüssel aus Aufnahme, Modus, Hash des Roh-Transkripts und Prompt-Version gecacht — erneutes Öffnen kostet nichts, und ein neu synchronisiertes Transkript macht die alte Antwort ungültig, statt sie stillschweigend weiter auszuliefern.
Features
Funktionen
- ·Cleanup is not summarisation — long transcripts are cut into overlapping chunks, processed one by one and reassembled in order
- ·Glätten ist keine Kürzung — lange Transkripte werden in überlappende Abschnitte geschnitten, einzeln verarbeitet und in Originalreihenfolge zusammengefügt
- ·A result is only cached once it validates — if the word count falls short of the source, it counts as truncated and is generated again
- ·Gecacht wird erst, was die Validierung besteht — liegt die Wortzahl unter der Vorlage, gilt das Ergebnis als abgeschnitten und wird neu erzeugt
- ·Search with a score threshold — the API always returns as many hits as asked for, so without a floor “no results” would never happen
- ·Suche mit Score-Schwelle — die API liefert immer so viele Treffer wie angefragt, ohne Untergrenze gäbe es nie ein „keine Treffer“
- ·Key facts are only pulled from the text when they are actually in it — no invented figures, and no empty placeholder when there is nothing to show
- ·Eckdaten werden nur aus dem Text gezogen, wenn sie wirklich drinstehen — keine erfundenen Werte und kein leerer Platzhalter, wenn nichts da ist
- ·Both API keys stay server-side in Vercel functions and never reach the browser
- ·Beide API-Schlüssel bleiben serverseitig in Vercel-Functions und erreichen den Browser nie
staycurious is my software studio in Vienna. I build apps that solve a real problem — mine, or yours.
staycurious ist mein Software-Studio in Wien. Ich baue Apps, die ein echtes Problem lösen — meins oder deins.
It didn't start with a business plan. It started with two annoyances. I wanted to know what finish time I could realistically aim for on race day — that became Run with Alva. I was tired of calling around to find out which tennis court was free — that became the MTV Hernals app. Both shipped, both get used. At some point this stopped being a side thing and became the work itself: staycurious.
Angefangen hat es nicht mit einem Businessplan, sondern mit zwei Ärgernissen. Ich wollte wissen, welche Zielzeit am Renntag realistisch ist — daraus wurde Run with Alva. Ich hatte es satt herumzutelefonieren, um herauszufinden, welcher Tennisplatz frei ist — daraus wurde die MTV-Hernals-App. Beides ist live, beides wird benutzt. Irgendwann war das kein Nebenbei mehr, sondern die Arbeit selbst: staycurious.
Before that: close to twenty years of product and platform work — regulated banking at Erste Bank, crypto operations at Bitpanda, enterprise software at Cisco. That background is why the studio builds the way it does. I start from the user's problem, the data model and the edge cases, not from a feature list. The difference rarely shows on the first screen. It almost always shows in the second month.
Davor: knapp zwanzig Jahre Produkt- und Plattformarbeit — reguliertes Banking bei der Erste Bank, Krypto-Operations bei Bitpanda, Enterprise-Software bei Cisco. Dieser Hintergrund ist der Grund, warum hier so gebaut wird, wie gebaut wird. Ich beginne beim Problem der Nutzer, beim Datenmodell und bei den Grenzfällen, nicht bei einer Feature-Liste. Der Unterschied zeigt sich selten am ersten Screen. Fast immer im zweiten Monat.
What decides whether something gets built: does it solve a problem someone actually has? Everything else is busywork. And if it does solve one, it may as well look good — software you open every day shapes that day. That isn't decoration, it's part of the use. So nothing gets built here that nobody uses — and nothing gets promised that the data can't carry. In Run with Alva every number traces back to a formula and a source, and where data is missing the app says so instead of guessing. Software with a point to it, in other words.
Woran sich entscheidet, ob etwas gebaut wird: Löst es ein Problem, das jemand wirklich hat? Alles andere ist Beschäftigung. Und wenn es das tut, darf es auch gut aussehen. Software, die man jeden Tag öffnet, prägt den Tag — das ist kein Beiwerk, das ist Teil des Nutzens. Deshalb entsteht hier nichts, das niemand benutzt — und nichts wird versprochen, was die Daten nicht hergeben. In Run with Alva lässt sich jede Zahl auf eine Formel und eine Quelle zurückführen, und wo Daten fehlen, sagt die App das, statt zu raten. Software mit Sinn und Nutzen, kurz gesagt.
And it goes fast. Digital products in days, not quarters — not because quality is negotiable, but because you only really understand a product once it runs. If you have an idea that feels like that: the fastest way to learn is to build it.
Und es geht schnell. Digitale Produkte in Tagen, nicht Quartalen — nicht weil Qualität verhandelbar wäre, sondern weil man ein Produkt erst versteht, wenn es läuft. Wenn du eine Idee hast, die sich so anfühlt: Der schnellste Weg zu lernen ist zu bauen.
The thread
Der rote Faden
Three things haven't changed in twenty years, and they decide how the studio works today: what I get stuck into, who I want to do it with, and when I move on.
Drei Dinge haben sich in zwanzig Jahren nicht geändert — und sie entscheiden bis heute, wie im Studio gearbeitet wird: woran ich mich festbeiße, mit wem ich das am liebsten tue, und wann ich weiterziehe.
01 ·The work
01 ·Die Arbeit
Complex domains pull me in. Read until the mechanics make sense, then build something that proves I understood them.
Komplexe Domänen ziehen mich an. Lesen, bis die Mechanik Sinn ergibt — dann etwas bauen, das beweist, dass ich sie verstanden habe.
02 ·The people
02 ·Die Menschen
Looking back, every one of my best memories at work is a relationship — meeting as equals, a good boss, mentoring someone. Not a product.
Rückblickend ist jede meiner besten Erinnerungen an die Arbeit eine Beziehung — Augenhöhe, ein guter Chef, jemanden zu begleiten. Kein Produkt.
03 ·The time
03 ·Die Zeit
I move when the novelty fades, not when things get hard. That same impatience is what makes the studio fast.
Ich wechsle, wenn die Neuheit verblasst — nicht, wenn es schwierig wird. Dieselbe Ungeduld steckt heute im Tempo des Studios.
Use before features
Nutzen vor Funktionen
What gets built is what someone actually uses. Features that only fill a roadmap don't happen here.
Gebaut wird, was jemand wirklich benutzt. Features, die nur eine Roadmap füllen, entstehen hier nicht.
Traceable, not magic
Nachvollziehbar statt magisch
Every number has a formula and a source. Where data is missing, the product says so instead of guessing.
Jede Zahl hat eine Formel und eine Quelle. Fehlen Daten, sagt das Produkt es — statt zu raten.
Days, not quarters
Tage statt Quartale
From idea to a running version in days. You only understand a product once it's live.
Vom Gedanken zur laufenden Version in Tagen. Ein Produkt versteht man erst, wenn es läuft.
Beauty isn't a bonus
Schön ist keine Zugabe
Something you use every day is allowed to look good. Form and function aren't a trade-off.
Etwas, das man täglich benutzt, darf gut aussehen. Form und Funktion sind kein Tauschgeschäft.
Your idea. I'll build it.
Deine Idee. Ich baue sie.
New domains are the reason I do this. Telco processes, crypto operations, regulated banking — every time the field was foreign to me, and every time something got built. Tell me about your problem, even if I know nothing about it yet. People deserve software that solves their problem — useful, good-looking, and simple enough that nobody has to explain it.
Neue Domänen sind der Grund, warum ich das mache. Telco-Prozesse, Krypto-Operations, reguliertes Banking — jedes Mal war das Fachgebiet fremd und am Ende stand etwas Gebautes. Erzähl mir von deinem Problem, auch wenn ich davon noch nichts weiß. Menschen verdienen Software, die ihr Problem löst — sinnvoll, schön und einfach genug, dass man sie nicht erklären muss.
No briefing template, no discovery phase. A message with what you have in mind — that's all it takes.
Kein Briefing-Formular, keine Discovery-Phase. Eine Nachricht mit dem, was du dir vorstellst — mehr brauchst du nicht.
Danke — die Nachricht ist unterwegs.
Thank you — your message is on its way.
Ich antworte an , meist noch am selben Tag.
I'll reply to , usually the same day.
Phone
Telefon
+43 676 388 93 85Studio
Studio
Vienna, Austria
Wien, Österreich
Information pursuant to § 5 of the Austrian E-Commerce Act (ECG) and § 25 of the Austrian Media Act (MedienG).
Offenlegung gemäß § 5 E-Commerce-Gesetz (ECG) und § 25 Mediengesetz (MedienG).
Media owner, publisher and responsible for content
Medieninhaber, Herausgeber und für den Inhalt verantwortlich
staycurious — sole proprietorship
Mag. (FH) Christoph Freh, MSc
Lange Gasse 65/10, 1080 Vienna, Austria
staycurious — Einzelunternehmen
Mag. (FH) Christoph Freh, MSc
Lange Gasse 65/10, 1080 Wien, Österreich
Contact
Kontakt
Phone: +43 676 388 93 85
Email: christoph@staycurious.art or christophfreh@gmail.com
Telefon: +43 676 388 93 85
E-Mail: christoph@staycurious.art oder christophfreh@gmail.com
Business activity and regulatory information
Unternehmensgegenstand und behördliche Angaben
- Business activity: development of my own web and mobile applications
- Unternehmensgegenstand: Entwicklung eigener Web- und Mobile-Anwendungen
- Trade: services in automatic data processing and information technology (free trade)
- Gewerbe: Dienstleistungen in der automatischen Datenverarbeitung und Informationstechnik (freies Gewerbe)
- GISA number: 39950901
- GISA-Zahl: 39950901
- Trade authority: Magistratisches Bezirksamt für den 1./8. Bezirk, Wipplingerstraße 8, 1010 Vienna
- Gewerbebehörde: Magistratisches Bezirksamt für den 1./8. Bezirk, Wipplingerstraße 8, 1010 Wien
- Chamber membership: Wirtschaftskammer Wien (Vienna Chamber of Commerce), professional group UBIT (management consultancy, accounting and information technology)
- Kammerzugehörigkeit: Wirtschaftskammer Wien, Fachgruppe UBIT (Unternehmensberatung, Buchhaltung und Informationstechnologie)
- Professional law: Austrian Trade Act 1994 (Gewerbeordnung 1994), available at ris.bka.gv.at
- Berufsrecht: Gewerbeordnung 1994 (GewO), abrufbar unter ris.bka.gv.at
- VAT ID: none — small business exemption pursuant to § 6 (1) 27 of the Austrian VAT Act (UStG); no VAT is charged.
- UID-Nummer: keine — Kleinunternehmerregelung gemäß § 6 Abs. 1 Z 27 UStG; es wird keine Umsatzsteuer ausgewiesen.
- Place of jurisdiction: Vienna, Austria
- Gerichtsstand: Wien, Österreich
Editorial line (§ 25 MedienG)
Blattlinie (§ 25 MedienG)
Information about the studio, its products and the way it works.
Information über das Studio, seine Produkte und seine Arbeitsweise.
Liability for links
Haftung für Links
This site links to external websites whose content is outside my control. No liability is accepted for such third-party content. The provider of the linked page is solely responsible for it. Links were checked for legal violations at the time of publication; no violations were apparent. Should a violation come to my attention, the link will be removed.
Diese Seite verlinkt auf externe Websites, deren Inhalte außerhalb meines Einflussbereichs liegen. Für diese fremden Inhalte wird keine Haftung übernommen; verantwortlich ist ausschließlich der jeweilige Anbieter. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf Rechtsverstöße geprüft, solche waren nicht erkennbar. Wird mir eine Rechtsverletzung bekannt, entferne ich den Link.
Copyright
Urheberrecht
Texts, images and layout of this site are protected by copyright. Reuse beyond what the law permits requires written consent.
Texte, Bilder und Gestaltung dieser Seite sind urheberrechtlich geschützt. Eine Verwendung über die gesetzlich erlaubten Fälle hinaus bedarf der schriftlichen Zustimmung.
Consumer dispute resolution
Verbraucherstreitbeilegung
I am neither obliged nor willing to participate in dispute resolution proceedings before a consumer arbitration board.
Zur Teilnahme an einem Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle bin ich weder verpflichtet noch bereit.
Status: July 2026
Stand: Juli 2026
Information pursuant to Articles 13 and 14 GDPR. In short: this site sets no cookies and uses no analytics or tracking tools. It has one contact form, and what happens to what you enter there is described below.
Information gemäß Art. 13 und 14 DSGVO. Kurz gefasst: Diese Seite setzt keine Cookies und verwendet keine Analyse- oder Tracking-Werkzeuge. Es gibt ein Kontaktformular; was mit dem passiert, was du dort einträgst, steht unten.
Controller
Verantwortlicher
Christoph Freh, staycurious
Lange Gasse 65/10, 1080 Vienna, Austria
christoph@staycurious.art
Christoph Freh, staycurious
Lange Gasse 65/10, 1080 Wien, Österreich
christoph@staycurious.art
Hosting and server logs
Hosting und Server-Protokolle
The site is hosted by Vercel Inc. and delivered from a European edge location (Frankfurt). When a page is requested, the host processes access data: IP address, time of request, the file requested, referrer and browser identifier. This serves the secure and stable operation of the site — legal basis: Art. 6(1)(f) GDPR (legitimate interest). These access data remain visible in the hosting account for no longer than one hour and are then discarded automatically; they are not merged with other data, not analysed and not used to identify anyone. I do not store them beyond that. A data processing agreement is in place with the host. Vercel is based in the USA; transfers are covered by the standard contractual clauses and the EU-US Data Privacy Framework.
Die Seite wird von Vercel Inc. gehostet und über einen europäischen Standort (Frankfurt) ausgeliefert. Beim Aufruf verarbeitet der Hoster Zugriffsdaten: IP-Adresse, Zeitpunkt der Anfrage, abgerufene Datei, Referrer und Browserkennung. Das dient dem sicheren und stabilen Betrieb der Seite — Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse). Diese Zugriffsdaten sind im Hosting-Konto höchstens eine Stunde einsehbar und werden danach automatisch verworfen; sie werden nicht mit anderen Daten zusammengeführt, nicht ausgewertet und nicht zur Identifizierung verwendet. Eine darüber hinausgehende Speicherung durch mich findet nicht statt. Mit dem Hoster besteht ein Auftragsverarbeitungsvertrag. Vercel hat seinen Sitz in den USA; die Übermittlung stützt sich auf Standardvertragsklauseln und das EU-US Data Privacy Framework.
Typefaces
Schriftarten
The typefaces (DM Serif Display, Inter) are served from the same server as the site itself. No connection to Google Fonts or any other font provider is made, and no IP address is passed on to a third party.
Die Schriftarten (DM Serif Display, Inter) werden vom selben Server ausgeliefert wie die Seite. Es wird keine Verbindung zu Google Fonts oder einem anderen Schriftanbieter aufgebaut, und es wird keine IP-Adresse an Dritte weitergegeben.
Storage on your device
Speicherung auf deinem Gerät
The site stores a single entry in your browser's local storage: staycurious.lang, holding the language you selected. It is purely functional, never leaves your device, is not evaluated and is not linked to any person. You can delete it at any time via your browser settings. There are no cookies beyond that.
Die Seite speichert einen einzigen Eintrag im lokalen Speicher deines Browsers: staycurious.lang mit der gewählten Sprache. Er ist rein funktional, verlässt dein Gerät nie, wird nicht ausgewertet und keiner Person zugeordnet. Du kannst ihn jederzeit über die Browsereinstellungen löschen. Darüber hinaus werden keine Cookies gesetzt.
Getting in touch
Kontaktaufnahme
If you write or call, I process what you send me in order to answer — legal basis: Art. 6(1)(b) GDPR for a contractual relationship or steps prior to it, otherwise Art. 6(1)(f). Your message stays with me only as long as the matter requires, unless statutory retention periods apply.
Wenn du schreibst oder anrufst, verarbeite ich, was du mir übermittelst, um zu antworten — Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO bei einem Vertragsverhältnis oder dessen Anbahnung, sonst Art. 6 Abs. 1 lit. f. Deine Nachricht bleibt nur so lange bei mir, wie der Vorgang es erfordert, sofern keine gesetzlichen Aufbewahrungsfristen gelten.
Contact form
Kontaktformular
The contact form asks for three things: your name, your email address and your message. All three go into an email to me and serve no other purpose — no newsletter, no profile, no forwarding to anyone else. Legal basis is Art. 6(1)(b) GDPR where the enquiry concerns a contract or steps prior to it, otherwise Art. 6(1)(f) (legitimate interest in answering enquiries). Providing the data is voluntary; without it I cannot reply.
Das Kontaktformular fragt drei Dinge ab: deinen Namen, deine E-Mail-Adresse und deine Nachricht. Alle drei landen in einer E-Mail an mich und dienen keinem anderen Zweck — kein Newsletter, kein Profil, keine Weitergabe an Dritte. Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO, wenn die Anfrage einen Vertrag oder dessen Anbahnung betrifft, sonst Art. 6 Abs. 1 lit. f (berechtigtes Interesse an der Beantwortung von Anfragen). Die Angabe ist freiwillig; ohne sie kann ich nicht antworten.
The message is delivered by Resend (Resend Inc., 2261 Market Street, San Francisco, CA 94114, USA), acting as a processor on my behalf under a data processing agreement. Resend sees name, email address and message content for the purpose of delivery. The transfer to the USA is based on the standard contractual clauses. To limit automated abuse, the server briefly holds the requesting IP address in memory — at most fifteen minutes, only to count submissions, never stored on disk and never sent by email.
Der Versand läuft über Resend (Resend Inc., 2261 Market Street, San Francisco, CA 94114, USA) als Auftragsverarbeiter in meinem Auftrag, auf Grundlage eines Auftragsverarbeitungsvertrags. Resend sieht Name, E-Mail-Adresse und Nachrichtentext zum Zweck der Zustellung. Die Übermittlung in die USA stützt sich auf die Standardvertragsklauseln. Um automatisierten Missbrauch zu begrenzen, hält der Server die anfragende IP-Adresse kurz im Arbeitsspeicher — höchstens fünfzehn Minuten, ausschließlich zum Zählen der Absendungen, nie auf Datenträger geschrieben und nie mitversendet.
Your message reaches me as an email and stays in my mailbox as long as the matter requires — as a rule no longer than two years after the exchange ends, unless statutory retention periods apply. You can ask for earlier erasure at any time.
Deine Nachricht erreicht mich als E-Mail und bleibt in meinem Postfach, solange der Vorgang es erfordert — in der Regel nicht länger als zwei Jahre nach Ende des Austauschs, sofern keine gesetzlichen Aufbewahrungsfristen gelten. Du kannst jederzeit früher die Löschung verlangen.
Your rights
Deine Rechte
You have the right to information (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18), data portability (Art. 20) and to object (Art. 21). One email to christoph@staycurious.art is enough.
Du hast das Recht auf Auskunft (Art. 15), Berichtigung (Art. 16), Löschung (Art. 17), Einschränkung der Verarbeitung (Art. 18), Datenübertragbarkeit (Art. 20) und Widerspruch (Art. 21). Eine E-Mail an christoph@staycurious.art genügt.
Right to complain
Beschwerderecht
If you believe your data is being processed unlawfully, you can complain to the Austrian Data Protection Authority: Barichgasse 40–42, 1030 Vienna, dsb@dsb.gv.at.
Wenn du der Ansicht bist, dass deine Daten unrechtmäßig verarbeitet werden, kannst du dich bei der Österreichischen Datenschutzbehörde beschweren: Barichgasse 40–42, 1030 Wien, dsb@dsb.gv.at.
Status: July 2026
Stand: Juli 2026