Skip to content
malekverse
All work

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
TunisiaFlicks cover: the live product on screen, above a dotted planet

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

  1. TMDB + AniListcatalogueNext.js server
  2. Next.js serverprofiles, lists, followsMongoDB
  3. Android + TV apps/api/app/v1App API
  4. App APINext.js server
  5. Windows appits own windowNext.js server
  6. 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.

TunisiaFlicks home page with the number-one trending series as a billboard, quick chips such as Ask, Halloween and Under 90 min, and the start of Top 10 this week
The home page: today's top title, quick ways in (including Ask, in your own words), then the week's top 10.
TunisiaFlicks film page for Dune: Part Two with rating, runtime, tagline, Play and Trailer buttons, and tabs for more like this, extras, cast and details
A film page: everything about one title, and what to watch after it.
TunisiaFlicks Arab cinema map: a tile for every Arab country showing its film of the day, beside a list of countries with film and series counts
The Arab cinema map: a film of the day for every country, and the full catalogue per country.
TunisiaFlicks Swipe to decide: start a room with a type and genre, or join one with a code
Swipe to decide: everyone swipes on their own phone, and the first title you all like wins.

02

Every language, every screen

English, French, Arabic and Tunisian Derja, on the web, Android phones, Android TV and Windows.

TunisiaFlicks home page in Arabic, laid out right to left with the sidebar on the right
In Arabic, the whole layout mirrors, not just the text.
TunisiaFlicks about page: Every film. Every series. The Tunisian ones too., over a wall of posters
The landing page a first visit opens on.
TunisiaFlicks home on a phone with a poster card, chips, Top 10 and a bottom tab bar
On a phone: the same product, with a tab bar under the thumb.

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.

malekverse

© 2026 Malek Maghraoui. Built with Next.js, three.js and GSAP.

Every color on this site is a star temperature, from 3,200 K to 30,000 K. There are no green stars.