Relocate | Flutter App Foundation, Maps & Subscriptions by Dusko LicaninRelocate | Flutter App Foundation, Maps & Subscriptions by Dusko Licanin

Relocate | Flutter App Foundation, Maps & Subscriptions

Dusko Licanin

Dusko Licanin

Relocate — school ratings map
Relocate — school ratings map

Role and project status

Relocate is a client-owned mobile product for researching US neighbourhoods, bringing map-based information about schools, demographics, local conditions and moving decisions into one interface.
I contributed the Phase 1 Flutter foundation: app structure, navigation, design system, onboarding, subscription flows, Mapbox integration and crash reporting. I worked as a collaborator and handed the starter kit over to the client, who owns the product and continues development. The work shown here is a prototype and app foundation, with further work required before a public release.

Selected implementation decisions

Map rendering: I changed annotation creation to use the Mapbox batch API, reducing repeated platform-channel calls when a screen displays many locations. The goal was to keep the map interaction usable as the data grows.
Subscription access: I aligned the RevenueCat entitlement identifiers used by the app and dashboard, replacing an ambiguous Unicode character with a clear ASCII identifier and documenting the configuration change.
Trial messaging: the paywall reads introductory-offer information from the subscription SDK before showing trial wording. This keeps the interface aligned with the offer available for the selected product.
Crash reporting: I connected Sentry and Firebase Crashlytics with chained error handlers, so adding one reporter did not replace the other. I also configured filtering for recognised emulator and test-farm crash noise.
Map startup and layout: I addressed token-initialisation timing and theme changes, and worked on responsive behaviour across the app. These are practical integration details that affect the reliability of the first experience.
Relocate — after kill state recovery
Relocate — after kill state recovery

Delivered app foundation

The Flutter codebase uses a feature-first structure with Riverpod state management, GoRouter navigation and Freezed data models. Shared components and feature boundaries give the client a consistent base for continuing development.
Maps and address search: Mapbox integration, batched map annotations, geocoding-driven search and light/dark map styles.
Subscriptions: a RevenueCat paywall, entitlement checks, trial-aware wording and a restore-purchases flow.
Observability: Sentry and Crashlytics integration with error-handler chaining and symbol-upload configuration.
Reusable interface structure: a shared neighbourhood layout, navigation drawer and ten-tab bar for consistent sub-screens.
Design system: complete light and dark themes, bundled typefaces and a responsive layout pass across the app screens.
Product flows: onboarding, phone authentication, checklist, favourites, profile, settings and neighbourhood-research screen flows for the prototype.
Build preparation: iOS and Android release configurations, obfuscation, split debug information and crash-reporting symbol uploads.
Relocate — iPhone Pro screenshot
Relocate — iPhone Pro screenshot
Relocate — iPhone Pro Max screenshot
Relocate — iPhone Pro Max screenshot

Recorded walkthroughs

Handover and next steps

The client received the Phase 1 starter kit with the app structure, interface foundations and configured integration flows. The handover gives the next development phase a shared codebase and clear integration points to build on.
This case study covers my contribution at handover. Relocate remains a prototype and starter kit in this portfolio; it should not be read as a claim that I built or launched the entire client-owned product.

Working with me on a similar build

For a founder or existing product team, I can take responsibility for a defined Flutter milestone: turning a brief into app structure, implementing the agreed user journeys, integrating services and preparing the code for handover. We agree the delivery boundary and what remains for the next phase before the build.
You work directly with me on implementation and review. If you need a mobile-app foundation, a subscription flow or help continuing an existing Flutter product, message me on Contra with your current stage and the next milestone.

Project updates on Contra

Like this project

Posted Jul 1, 2026

Built the Phase 1 Flutter foundation: onboarding, Mapbox, subscriptions and crash reporting. Handed over to the client for continued product development.