Skip to content
Bruno Lucildo
Back to projects
Personal projectIn development

Reelix

An app to discover and track movies and series, record what you have watched and share authorized activity with friends.

Technologies

  • React Native
  • Expo
  • TypeScript
  • ASP.NET Core (.NET 10)
  • PostgreSQL
  • Entity Framework Core
  • Supabase Auth
  • TMDB
Reelix home screen on a phone: the Series tab with "Continue watching" and "Start watching" rows of series posters and the start of the release calendar. The app interface is in Portuguese.
Reelix home screen on a phone, Movies tab: a "Quero assistir" row with one movie poster, a row of featured movies and the start of the favorites row. The app interface is in Portuguese.
Reelix catalog search on a phone: the Movies and Series tabs, a search field with "Interestelar" and two results with poster and year. The app interface is in Portuguese.
Reelix title screen for the series Breaking Bad on a phone: a backdrop image, the release date, action buttons, the synopsis and the seasons and episodes tabs with watched progress. The app interface is in Portuguese.
Reelix reviews and comments section on a phone: a half-star rating control with a private or public choice, and a comment box with a spoiler checkbox and a visibility choice. The app interface is in Portuguese.
Reelix watchlist screen on a phone: tabs for favorites, watchlist and my lists, a catalog search field, a sort option and two titles with poster, type, year and genre. The app interface is in Portuguese.
Reelix profile screen on a phone: avatar choices (initials and illustrated characters) and a row of achievement badges with a link to progress and statistics. The app interface is in Portuguese.
Reelix achievements and statistics screen on a phone: totals of episodes, series, movies and records, estimated viewing time and the current month's activity. The app interface is in Portuguese.
Reelix sign-in screen on a phone: the reelix logo, the headline "Suas histórias começam aqui." and e-mail and password fields. The app interface is in Portuguese.
Screens from the development build. The app interface is in Portuguese. Movie and series data and images from TMDB. This product uses TMDB and the TMDB APIs but is not endorsed, certified, or otherwise approved by TMDB.

Overview

Reelix is an app to discover and track movies and series, record what you have watched and share authorized activity with friends. The repository holds a React Native mobile app and an ASP.NET Core API. It is a personal project.

Challenge

A viewing diary is personal data. Sharing it with friends only works if each person controls what is shared, and comments and ratings must not spoil a plot for someone who has not watched yet. The challenge was to build social features on top of that, with privacy and spoiler control as rules of the product rather than afterthoughts.

Solution

Sharing is opt-in and split into separate consents for history, ratings and favorites. Comments are private by default, can be flagged as spoilers and stay hidden until the reader chooses to reveal them. Progress tracking, lists, achievements and a monthly ranking among friends are built on the same rules.

Architecture

The API is a modular monolith in ASP.NET Core (.NET 10), organized in Domain, Application, Infrastructure and Api projects so that business rules do not depend on frameworks or the database. Data lives in PostgreSQL through Entity Framework Core. Supabase Auth handles sign-in, and the API validates its tokens and maps them to the internal account. Movie and series metadata comes from TMDB, behind an adapter, with provider credentials kept on the server. The mobile app uses React Native with Expo, strict TypeScript, Expo Router and TanStack Query. A GitHub Actions workflow runs the backend tests, the mobile lint and type checks, dependency audits and secret scanning.

Technical decisions

  • A modular monolith before microservices.

    The design stays simple until real usage justifies more infrastructure.

  • One identity system.

    Supabase Auth is the only provider, and a second system such as ASP.NET Identity was deliberately not added.

  • Providers behind an adapter.

    The catalog integration can be replaced without touching business rules, and provider keys never reach the app.

  • AI kept off until decided.

    An automatic spoiler classifier exists on the server but is disabled by default while cost and data policy are decided; manual spoiler flagging works without it.

Current state

In development. The code covers accounts, onboarding, discovery, tracking, lists, ratings and comments, friends, notifications and achievements, but the repository itself states that this describes the implementation and does not confirm a production deployment. Remote push notifications are disabled, the Android widget is not implemented and the mobile app has no automated tests yet.