Social-first onboarding
OAuth signup → provisionSelf backend → username/languages/phone wizard → Goodreads CSV import → first personalized recommendations.
Case study — Portfolio
The social network for real readers — no ads, no tracking, no infinite feed
iOS · Android · Web — shipped solo in ~8 weeks by a hands-on CTO/PO/RSSI
Lirix is a social reading tracker: no infinite feed, no ads, no tracking. MAG&Cie designed, coded, secured and shipped everything solo — TypeScript monorepo with Expo for mobile + web, Fastify + Prisma for the API, BullMQ workers for cron jobs, all in production on Fly.io, Vercel and Supabase.
Why Lirix is an end-to-end demonstration of what a fractional CTO can ship without a team.
Single TypeScript monorepo for mobile, web, API, workers and shared packages. Full GitHub Actions CI/CD (lint, typecheck, tests, migrations, deploys). EAS Build cloud, Fly.io for the API, Vercel for the web, Supabase for the database.
Free Solo + Premium (monthly or lifetime), Gamification 2.0 (XP, levels, quests, badges, 30-day reading duels), sprint-driven roadmap, UX refined through 5 consecutive App Store rejections up to build 34 in re-review.
Instant soft-delete + automatic purge after 30 days, JWT + JWKS with HS256 fallback, OAuth PKCE, phone-number hashing (SHA-256) for contact matching, strict CSP, secrets only in GitHub secrets and Fly secrets.
Lirix is a social reading tracker for French- and English-speaking readers: personal library, multi-catalog search (OpenLibrary + Google Books + BnF SRU), notes and reviews, consistency stats, friend feed, gamification quests and reading duels. MAG&Cie designed, coded, secured and shipped everything solo — TypeScript monorepo with Expo for mobile + web, Fastify + Prisma for the API, BullMQ workers for cron jobs, all in production on Fly.io, Vercel and Supabase. Automated distribution: every push triggers lint, tests, DB migration, API + workers + web deploy and mobile OTA via EAS Update. Started as a side project, turned into an end-to-end demonstration of what a fractional CTO can ship without a team.
person — design, code, security, distribution
weeks of intense dev from idea to stores
lines of TypeScript across the monorepo
simultaneous platforms (iOS, Android, Web) — a single codebase
gamification quests + XP, levels, badges and duels
OAuth providers (Apple, Google, Microsoft/Entra, email…)
Every layer picked to keep the promise: one person, three platforms, production from day one.
| Mobile | Expo SDK 54, React Native 0.81, Hermes, Fabric (New Architecture), Expo Router 6 |
|---|---|
| Web | Same Expo codebase → static SPA export, Vercel deploy |
| Styling | NativeWind (Tailwind on React Native), declarative dark mode |
| Client state | Zustand + TanStack Query + AsyncStorage persister |
| Backend | Fastify, Prisma, Zod, RFC 9457 problem+json, Fly cdg region |
| Database | Supabase Postgres (transaction pooler 6543) |
| Cron workers | BullMQ + Redis, node-cron: release scan, weekly digest, monthly recos, streak-at-risk, reading-duels tally |
| Auth | Supabase JWT + JWKS + HS256 fallback, PKCE OAuth |
| CI/CD | GitHub Actions: lint + typecheck + tests + i18n parity + DB migration + prod deploy |
| Distribution | EAS Build cloud, App Store Connect API auto-submit, Google Play internal track |
| Observability | Fly logs, Supabase logs, GitHub Actions run history |
OAuth signup → provisionSelf backend → username/languages/phone wizard → Goodreads CSV import → first personalized recommendations.
23 claim-based quests, XP per action, level chip visible on friends, level-up modal, 30-day reading duels between friends.
Client-side SHA-256 hashing of phone numbers, server-side matching without ever storing plain values — security and GDPR from day one.
Parallel fan-out OpenLibrary + Google Books + BnF SRU, 15-min Redis cache, bidirectional ISO 639-1/639-3 language filter.
Instant soft-delete + 30-day purge worker, CSV library export, account resurrection on re-login within 30 days.
5 consecutive rejections on Guideline 2.1a (Fabric + iPadOS 26.5) fixed via documented iterative patches: Sign in with Apple custom button, splash resilience, orphan sessions. Build 34 in re-review.
Free Solo + Premium €3.99/month or €49 lifetime, RevenueCat for iOS/Android IAP, Stripe on web, Fnac/Amazon affiliation with an anti-bias charter.
Excerpts from the user journey — library, search, notes and stats.




Treated like a real SaaS product from the very first line of code.
Four back-to-back phases, one operator, an architecture designed to keep the promise.
Clear positioning (no infinite feed, no ads, no tracking), Free Solo + Premium business model, Gamification 2.0 (XP, quests, duels), sprint-driven Notion roadmap.
Single TypeScript monorepo for mobile (Expo/RN New Arch), web (SPA from the same codebase), backend Fastify + Prisma + Supabase, BullMQ + Redis cron workers. NativeWind design system, Zustand + TanStack Query state.
GDPR by design: instant soft-delete + automatic purge after 30 days, SHA-256 hashed phone numbers for contact matching, OAuth PKCE + JWT verified via JWKS, strict CSP, secrets only in GitHub secrets and Fly secrets.
EAS Build cloud + App Store Connect API auto-submit + Google Play internal track. End-to-end GitHub Actions (lint, typecheck, tests, DB migration, API + workers + web deploy + mobile OTA via EAS Update). Observability via Fly logs, Supabase logs, Actions history.
Commercial translation: if Lirix is what he ships for himself in his own time, imagine what he ships on a paid engagement.
What we get asked most about Lirix — and what we can say about it.
About 8 weeks of intense development, from idea to stores. One person: product design, code, security, deployment, distribution — a fractional CTO wearing the Product Owner and RSSI hats at the same time.
Single TypeScript monorepo. Mobile: Expo SDK 54 + React Native 0.81 New Architecture. Web: same Expo codebase exported as a static SPA and deployed on Vercel. Backend: Fastify + Prisma + Zod, Fly cdg region. Database: Supabase Postgres (transaction pooler 6543). Workers: BullMQ + Redis. CI/CD: GitHub Actions. Distribution: EAS Build cloud.
GDPR by design from the very first commit. Instant user-side soft-delete + automatic purge worker after 30 days (executable right to be forgotten). Phone numbers hashed with SHA-256 client-side — never stored in plain text. OAuth PKCE + JWT verified via JWKS with signed HS256 fallback. Strict CSP, HSTS, secrets only in GitHub secrets and Fly secrets.
Three simultaneous platforms — iOS, Android, Web — from a single TypeScript codebase. iOS via the App Store, Android via Google Play, Web at lirix.club. Automated distribution: every push updates the API, workers, web and pushes a mobile OTA via EAS Update.
That MAG&Cie can ship solo a complete product — mobile + web + backend + infra + security — without spinning up a team. That the firm owns the entire chain: product, tech, security, deployment, store distribution (5 App Store rejections overcome). Automation and GDPR designed for upfront.
Yes. Every engagement is scoped bespoke. Whether it's a fractional CTO, an end-to-end product + tech + security engagement or a feasibility audit, the starting point is a conversation about scope and ambition. Contact us via /contact or book a call directly.
Looking for a fractional CTO who can ship a complete product — mobile + web + backend + infra + security — without spinning up a team? Let's talk.