Consumer platform2026
TunisiaFlicks
A film and series discovery platform on every screen: the web, Android phones, Android TV and Windows.
- Role
- Solo: product, design and engineering
- Year
- 2026
- Stack
- Next.js, MongoDB, NextAuth, React Native, Expo, Electron, Sentry, Groq

The problem
Choosing what to watch is scattered: catalogues in one language, Tunisian and Arab titles hard to find, and apps that work on a phone but not on the family TV. People wanted one place to find something good, in their own language, on whatever screen they have.
What I built
- One product on every screen: the website, native Android and Android TV apps from one React Native codebase, a Windows app that updates itself, and an installable web app.
- English, French, Arabic (right to left) and Tunisian Derja. Each page sends only the strings it needs to the browser, and a check fails the build when a translation breaks.
- Profiles with a kids mode, lists and history, friends with private-by-default activity, and Swipe to decide: everyone swipes on their own phone, and the first title you all like wins.
- Sections people asked for: anime, Turkish and Korean dramas, Ramadan series, an Arab cinema map and Tunisian TV.
- Ask: describe a mood in your own words and an LLM finds titles that fit. A Halal mode filters the whole catalogue with one switch.
How it earns trust
Checked on every push
CI runs lint, type checks, 40+ unit and smoke test files, the translation checks and a production build, and builds both Android apps. A broken page, string or app shows up before it ships.
Jobs that are safe to run twice
Release alerts use unique keys and claim markers, so a scheduler that fires twice sends nobody the same alert twice. Failed e-mails are retried on the next run, up to three times.
It fails soft
If the database is down, pages still render instead of crashing. If the day's AI budget is spent, Ask falls back to plain matching and says so.
Private by default
Friends see activity only after a person turns sharing on, and with a delay. Kids profiles have no social features at all, and supporters' e-mail addresses are stored hashed.
By the numbers
- commits, built and run solo
- 380+commits, built and run solo
- native apps: Android, Android TV, Windows
- 3native apps: Android, Android TV, Windows
- languages, with Arabic and Derja
- 4languages, with Arabic and Derja
- test files in CI
- 40+test files in CI
How it fits together
- TMDB + AniListcatalogueNext.js server
- Next.js serverprofiles, lists, followsMongoDB
- Android + TV apps/api/app/v1App API
- App APINext.js server
- Windows appits own windowNext.js server
- Daily cronsafe to repeatRelease alerts
01
Finding something to watch
Films, series and anime from everywhere, with the Tunisian and Arab titles other catalogues miss.




02
Every language, every screen
English, French, Arabic and Tunisian Derja, on the web, Android phones, Android TV and Windows.



What I'd do next
Put a budget on the heaviest routes (posters, share cards and stream lookups) and move them to a CDN, so one busy week can't use up the hosting plan.