Release ownership
Build flavors, environment config, signing, Crashlytics, and submission to both Google Play and the App Store.
Open to full-time remote roles · Algiers (GMT+1)
Flutter Developer · Android & iOS
Production Android and iOS apps, shipped end to end, from Figma file to signed store release.
Three years building Flutter apps across a product studio, freelance clients, and an educational institution. I own the full lifecycle: Clean Architecture and MVVM structure, state with Riverpod and GetX, REST and BaaS integration, offline-first data layers, unit and widget tests, CI/CD, app signing, and store submission. Native Android background in Java.
About me
I'm a Flutter developer in Algiers with three years of production experience across Android and iOS. UI/UX design is one of my core strengths rather than an afterthought. I can build precisely from a handoff, or design the screens myself when a project has no designer. I started in native Android with Java, and that background still shapes how I reason about platform behaviour and performance.
I lead mobile builds end to end: scalable architecture, predictable state, robust API integration, offline-capable flows, and UI/UX considered from the first wireframe rather than bolted on afterwards.
I take products from Figma to signed release: Firebase, Supabase, Appwrite or custom REST on the backend, build flavors and environment config in between, Play Store and App Store submission at the end. The codebase stays understandable after the first launch.
Build flavors, environment config, signing, Crashlytics, and submission to both Google Play and the App Store.
Production right-to-left layout: bidirectional text, mirrored iconography, Hijri calendar conversion. Native Arabic speaker.
SQLite and Hive layers that keep apps usable on intermittent connections and sync queued writes on reconnect.
Unit and widget tests across domain and presentation, run with static analysis and signed builds on every merge.
Skills
Grouped by how much production time each one has actually had, because a flat list of eighty tools tells you nothing.
Native Arabic speaker with a degree in literature and civilisations. I've shipped full bidirectional layouts, mirrored iconography and Hijri calendar conversion to production, not just wrapped a widget in a Directionality.
I've worked in Bloc codebases and can read and extend one, but Riverpod and GetX are where my production hours are. Listing it honestly beats fumbling provider scoping on a screen share.
Experience
Selected work
Projects I can talk through in detail. The ones below are the ones I'd bring to an interview; the rest are smaller but finished.
Client work not shown. Under NDA I've shipped 8+ production apps across education, logistics, health-tech, faith and commerce, including one released to both Google Play and the App Store via TestFlight, and several with offline-first sync layers. Happy to walk through the architecture and the decisions in an interview; source and branding stay private.
Education · Live on Google Play
Learning platform for schools and students. Structured content delivery, school workflows, push notifications, and offline lesson caching so students on intermittent connections keep access to material they've already downloaded.
Faith & daily utility · Live on Google Play
Prayer times and Islamic daily utilities, in full right-to-left Arabic: bidirectional text handling, mirrored iconography and Hijri calendar conversion. Location-aware schedules delivered by local notifications that survive Doze and OEM battery restrictions.
Logistics · Delivery
Two-sided delivery operations platform for stores and drivers across Algeria, built from one codebase and shipped as separate flavors. Sole mobile engineer. The full write-up is below.
B2B commerce · Live on Google Play
B2B platform to discover private-label products, build a branded offering and place bulk orders, with tracking from validation to delivery. Lead mobile developer.
B2B ordering · Live on Google Play
B2B door ordering app: browse the catalog, customize doors to a project's needs and track each order to delivery. Co-developed with another developer.
Commerce · Source on GitHub
Bookstore app with product discovery, reading-oriented UI details and browsing flows. Public source, so it's the easiest place to read how I structure a Flutter codebase.
Smaller apps, built to learn a specific thing and finished properly.
Utility · Live on Google Play
Weather app with concise forecasting and clean API-driven data presentation.
Entertainment · Source on GitHub
Movie discovery app with a strong visual identity and REST-driven browsing.
AI assistant · Source on GitHub
Assistant concept covering voice, sketch and translation workflows on a mobile-first layout.
Everything else, including older experiments, is on GitHub.
github.com/sidali-devCase study
Two audiences with opposite jobs, on the same package. Stores need inventory, delivery-partner management and a live view of what is in transit. Drivers need job discovery, daily operations, earnings, and a way to push a status change in two taps while standing at a door. Both sides have to agree on where a package is, right now.
Every status change is written from a phone in motion, on intermittent mobile data. A “delivered” tap that silently fails (or one that lands out of order behind an older event) corrupts the single fact the whole platform exists to provide. Correctness here mattered more than latency.
Two flavors instead of one app with a role switch. It costs a second store listing and a second release to manage every time, and it rules out a store owner and a driver sharing one install. In exchange each side gets a smaller binary, a narrower permission prompt, and no dead code from the other role.
Engineering decisions
Not a process diagram. The actual calls, with the reasoning attached.
Firebase, Supabase or Appwrite chosen on the data model, the cost curve and the security-rule requirements of that specific product, not on which one I used last.
SQLite and Hive local layers with queued writes that sync on reconnect, because “usable on a bad connection” is a product requirement here, not a nice-to-have.
Cold start cut by deferring service initialisation off the launch path and lazy-loading feature modules, profiled with DevTools rather than guessed at.
Presentation / domain / data boundaries per feature, so a mid-build requirement change lands in days without touching the data layer.
Scheduling that keeps firing under Doze and the aggressive battery managers Xiaomi, Huawei and Oppo ship. It's the failure mode nobody catches in an emulator.
Arabic treated as a direction, not a string swap: bidirectional text, mirrored iconography, Hijri conversion, and layouts designed to survive both directions.
Tech stack
Contact
Mid-to-senior Flutter positions with EU or US-overlapping teams. Based in Algiers (GMT+1), with full overlap of European hours and 4+ hours of US Eastern. Available as a direct employee or through an EOR / contractor arrangement.