Haithem Nini
All work

Case study

Badilk

A phone spare-parts compatibility finder for the Algerian and wider Arab market.

Co-Founder & CTO · Live on Android & iOS

phone models in the catalogue
2,500+
compatibility records
36,000+

Problem

In the spare-parts market it is hard to know whether a given part is actually compatible with a given phone. Buyers and repair shops rely on guesswork, and mistakes cost money.

Solution

A comprehensive compatibility search platform backed by an automated data discovery engine that keeps the catalogue current without manual entry.

My role

As Co-Founder & CTO I own the full product stack: Flutter apps, .NET 8 APIs, the data discovery engine, Ops dashboard and CI/CD on VPS.

Hardest problem solved

Keeping a live spare-parts catalogue accurate without manual entry — a discovery engine with rate limiting, proxy pool, circuit breaker and incremental discovery so search stays fresh under real traffic.

Tech

  • .NET 8 / ASP.NET Core backend built on Clean Architecture
  • Data discovery engine with 6 components: rate limiter, proxy pool, header randomization, caching, incremental discovery, circuit breaker
  • Optimized search through PostgreSQL GIN trigram indexes
  • Redis, HybridCache, Play Integrity API, OneSignal, MaxMind GeoLite2, JWT revocation
  • Full CI/CD with GitHub Actions on a Vultr VPS behind Nginx + Let's Encrypt

Flutter​.NET 8​PostgreSQL​Redis​Nginx​GitHub Actions​

Result

  • Received an innovation certificate from the Algerian government
  • Product family: the official app, an internal Studio app for phone data, the Badilk Ops dashboard (Next.js + .NET Core / PostgreSQL) and the official website

Screens

Links

Building something like this?

Tell me what you are building and the outcome you want.

Build my app