Salary
—
Job Location & type
On-Site / Full time
Experience
2 years
Job Status
Active Job
Mid-Level Flutter Developer — Tanween
Tanween is a production mobile application connecting parents and guardians with their children's schools. Features include real-time bus tracking on Google Maps, academic records and logs, in-app messaging, news feeds, timetables, health profiles, and push notifications — backed by a RESTful API with real-time Socket.IO updates. It serves real users, ships on real deadlines, and is maintained by a small team that values pragmatism over ceremony.
You'll own features end-to-end in an established codebase with strong opinions and working abstractions. The architecture is a deliberate hybrid — Different reactive tools are used for different problems. You need to be someone who can walk into that, understand why things are the way they are, and build on them productively.
Take features from API contract to shipped UI with minimal hand-holding
Integrate RESTful APIs using Retrofit and Dio, working with interceptors, caching, and centralized error handling
Wire reactive data flows using RxDart (BehaviorSubject, stream composition, CompositeSubscription) or composed Cubits
Build responsive interfaces supporting both Arabic (RTL) and English (LTR) layouts
Work within and extend existing abstractions
Maintain code generation workflows
Collaborate directly with backend developers on API design and data models
You read code before you write code. The codebase has established patterns. Some are documented, most live in the code itself. We expect you to study an existing feature, understand how it's built, and follow the same approach — not reinvent the wheel because you didn't look first.
You're pragmatic about tradeoffs. This codebase was built under real delivery pressure by a small team. Some patterns coexist. If your instinct is to stop and rewrite everything into one "correct" pattern, this isn't the right fit. If your instinct is to understand what's there, work with it, and improve incrementally when opportunity arises — it is.
You think in reactive streams, not callbacks. The primary mental model is streams, subscriptions, reactive composition and MVVM. You should be comfortable reasoning about debounced inputs, composed stream transformations, and subscription lifecycle.
You ship. Features have deadlines. We value working software over architectural perfection, and we trust developers to find the balance between speed and quality on their own.
UX/UI Design Fundamentals
Art Studio learnings
Advanced Prototyping Techniques
Interactive Media Workshop
User Research Methods
Market Insights Program
Design Systems and Frameworks
Collaboration Hub