Overview
Flutter Intern
Engineering · Frontend Team · Bengaluru, India
About the Role
We're looking for a Flutter intern who genuinely enjoys building mobile apps, someone who cares about clean code, good UX, and writing software that's easy for others to understand and maintain.
You'll join our frontend engineering team and work on a production app with real users. You'll contribute to features, learn how we structure and scale a Flutter codebase, and grow alongside experienced engineers who are happy to mentor and collaborate.
What You'll Work On
- Build and maintain UI screens and features across Android and iOS
- Integrate REST APIs using Dio and handle real-time data via WebSockets
- Manage app state with Riverpod across different parts of the app
- Implement in-app and push notifications (local and FCM)
- Navigate multi-screen flows using GoRouter — including deep links and route guards
- Work within a clean, layered architecture (data / domain / presentation)
- Build responsive layouts that work well across phone and tablet screen sizes
- Work with local databases for offline support and caching (Hive / SQLite / Drift)
- Write well-documented code following Dart documentation guidelines
- Write unit and widget tests for your features
- Debug issues across Android and iOS
Tech Stack
- State Management — Riverpod
- Navigation — GoRouter
- Networking — Dio
- Realtime — WebSockets
- Local Storage — Hive / Drift / SQLite
- Notifications — Firebase Cloud Messaging + local notifications
- Architecture — Clean Architecture (Repository pattern, layered separation)
Architecture
We follow a layered clean architecture across all features.
lib/
├── core/
│ ├── network/ # Dio client, interceptors, WebSocket manager
│ ├── notifications/ # FCM + local notification service
│ └── router/ # GoRouter config, route definitions
│
├── features/
│ └── [feature]/
│ ├── data/
│ │ ├── datasources/ # Remote + local data sources
│ │ ├── models/ # JSON serialisable models
│ │ └── repositories/
│ ├── domain/
│ │ ├── entities/
│ │ ├── repositories/ # Abstract contracts
│ │ └── usecases/
│ └── presentation/
│ ├── providers/ # Riverpod providers and notifiers
│ ├── screens/
│ └── widgets/
Requirements
Must Have
- Solid experience with Dart and Flutter — you've built apps, not just followed along
- Working knowledge of Riverpod for state management
- Familiarity with GoRouter for navigation
- Experience calling REST APIs with Dio, handling errors, and managing response models
- Understanding of clean architecture — keeping data, business logic, and UI clearly separated
- Experience with WebSockets for real-time data
- Ability to build responsive UIs that adapt to different screen sizes
- Experience with at least one local database (Hive, Drift, or SQLite)
- Comfortable implementing push and local notifications
- Writes well-documented Dart code — meaningful dartdoc comments, clear naming, readable structure
- Comfortable with Git and working in a collaborative codebase
- Good grasp of data structures and algorithms — you can reason through a problem before jumping to code
Good to Have
- Experience with BLE (Bluetooth Low Energy) — scanning, connecting, and communicating with devices
- Experience with WiFi connectivity — network-aware features, connectivity detection
- Published apps on the Play Store or App Store
- Familiarity with platform channels (native Android / iOS interop)
What We Value
- Code that's clean, readable, and well-documented — not just code that works
- Strong problem-solving mindset — breaking down complex problems into manageable pieces
- Curiosity and a willingness to learn from the team
- Taking ownership of your work from design to delivery
- Communicating clearly when you're stuck or need help