RealEstate Manager

A modern Android application aimed at helping real estate agents manage exceptional property listings from their mobile device. Built to support a digital transformation for an agency, the app allows agents to browse, add, edit, and geolocate real estate properties even in offline mode.

This project is developed using modern Android architecture principles, with a focus on local data persistence, modular code, and responsive design. It evolves from a legacy intern prototype and will be gradually refactored and extended.

Project link

Features

Properties listing :
Create and manage property listings, view detailed information and photos, assign availability status, and associate each listing with a dedicated real estate agent.

Geolocation :
Maps properties, displays nearby listings as map pins, retrieves the user’s current location, and generates static map previews that are stored locally, remain available offline, and are restored after synchronization.

User authentication :
User accounts created and authenticated online via Firebase Authentication, with profile data cached locally in Room to enable offline access for already authenticated users.

Global data sync :
Complete offline-first synchronization architecture ensures consistency across all entities through bidirectional Firebase sync, modular entity managers, timestamp-based conflict resolution, background execution with WorkManager, and safe deferred deletion mechanisms.

Media management :
Photos and static maps are fully managed and synchronized with Firebase Storage, with local caching for offline use and automated file cleanup.


Search :
Advanced multi-criteria search, sorting, and filtering enable efficient property discovery.


Offline mode :
Complete offline-first experience ensures full data access and seamless synchronization when connectivity returns.


Online mode :
Data and media are securely synchronized using Firebase Firestore and Storage, with centralized sync orchestration and strict ownership-based access control.


Data deletion and lifecycle management :
Data and media are securely synchronized using Firebase Firestore and Storage, with centralized sync orchestration and strict ownership-based access control.


Interoperability :
Read-only ContentProvider, enabling permission-controlled, URI-based access to properties, photos, users, points of interest, and cross-linked data for external components or applications.


Utilities :
Features include currency conversion, date handling, network monitoring, and robust testing support.


Navigation :
Centralized navigation system ensures smooth transitions between list and detail screens, with optimized two-pane support for tablet devices.


Modern and fluid interface :
Material Design 3 interface delivers smooth navigation, adaptive layouts, light and dark modes, and a fully customized visual identity.


Preferences and settings :
Language and currency can be changed dynamically, with real-time UI updates and automatic price conversion.


Real-time status management :
Reactive UI state management is achieved using StateFlow, ViewModels, and Kotlin Coroutines.


Architecture and code structure :
Clean MVVM architecture replaces legacy Java code, featuring modular components, Hilt-based dependency injection, and consistent synchronization patterns across the codebase.


Testing and quality assurance :
Robust testing suite ensures reliability across utilities, data layers, repositories, synchronization logic, and network handling.


Responsive multi-device experience :
The application features a fully responsive UI with dedicated smartphone and tablet layouts, including adaptive navigation and a master–detail tablet experience that maximizes screen space while preserving a consistent and intuitive user workflow.

Tech stack

Java & kotlin :
Language (Java legacy + Kotlin migration).

SQLite / room :
Local persistence.

MVVM :
Architecture separation.

ViewModel :
Lifecycle-aware logic.

LiveData/flow :
Reactive data Updates.


ContentProvider :
External data access layer.


State management:
Handle states with MutableStateOf and StateFlow.


Navigation component :
Screen transitions.


Coroutines :
Background processing.


Jetpack compose :
UI enhancements.


Material 3:
Modern, accessible user interface.


Retrofit :
Networking client for API calls.


Kotlinx serialization :
JSON serialization/deserialization.


Google maps static API :
Used to render static images of property locations.


Dagger hilt : 
Dependency injection framework for the entire app.


Internal storage API :
Used to persist static map images locally for offline access.


BuildConfig / secure API key handling : Prevent exposing secrets via Gradle-based injection.


Google play services (maps & location) :
For real-time location tracking and interactive map display.


Kotlinx coroutines play services :
To integrate Google Play Services APIs with Kotlin coroutines for asynchronous tasks.


ThreeTenABP :
Backport of Java Time API (LocalDate, etc.) for Android API 21+, enabling modern date/time handling on older devices.


Firebase authentication :
Secure user login using email/password and Firebase Identity platform.


Firebase firestore :
Scalable NoSQL cloud database used for syncing property data online.


SyncManager / userSyncManager : Synchronization layer for uploading modified Room data to Firestore.


MapperUtils :
Convert between model (User) and storage representations (UserEntity, UserOnlineEntity).


Room cursor support :
Custom DAO queries returning Cursor for inter-process access through ContentProvider.


Jetpack dataStore (preferences) :
Modern, asynchronous key-value storage used for persisting user preferences (language, currency, etc.).


Firebase cloud functions (v2) :
Server-side scheduled jobs for data lifecycle management and cleanup.


Firebase admin SDK :
Privileged backend access to Firestore and Storage (bypasses client security rules).


Cloud scheduler :
Time-based execution of backend cleanup tasks.


WindowSizeClass & windowInsets : Responsive UI adaptation across smartphones and tablets.

A modern Android application aimed at helping real estate agents manage exceptional property listings from their mobile device. Built to support a digital transformation for an agency, the app allows agents to browse, add, edit, and geolocate real estate properties even in offline mode.

This project is developed using modern Android architecture principles, with a focus on local data persistence, modular code, and responsive design. It evolves from a legacy intern prototype and will be gradually refactored and extended.

Project link

Features

Properties listing :
Create and manage property listings, view detailed information and photos, assign availability status, and associate each listing with a dedicated real estate agent.

Geolocation :
Maps properties, displays nearby listings as map pins, retrieves the user’s current location, and generates static map previews that are stored locally, remain available offline, and are restored after synchronization.

User authentication :
User accounts created and authenticated online via Firebase Authentication, with profile data cached locally in Room to enable offline access for already authenticated users.

Global data sync :
Complete offline-first synchronization architecture ensures consistency across all entities through bidirectional Firebase sync, modular entity managers, timestamp-based conflict resolution, background execution with WorkManager, and safe deferred deletion mechanisms.

Media management :
Photos and static maps are fully managed and synchronized with Firebase Storage, with local caching for offline use and automated file cleanup.


Search :
Advanced multi-criteria search, sorting, and filtering enable efficient property discovery.


Offline mode :
Complete offline-first experience ensures full data access and seamless synchronization when connectivity returns.


Online mode :
Data and media are securely synchronized using Firebase Firestore and Storage, with centralized sync orchestration and strict ownership-based access control.


Data deletion and lifecycle management :
Data and media are securely synchronized using Firebase Firestore and Storage, with centralized sync orchestration and strict ownership-based access control.


Interoperability :
Read-only ContentProvider, enabling permission-controlled, URI-based access to properties, photos, users, points of interest, and cross-linked data for external components or applications.


Utilities :
Features include currency conversion, date handling, network monitoring, and robust testing support.


Navigation :
Centralized navigation system ensures smooth transitions between list and detail screens, with optimized two-pane support for tablet devices.


Modern and fluid interface :
Material Design 3 interface delivers smooth navigation, adaptive layouts, light and dark modes, and a fully customized visual identity.


Preferences and settings :
Language and currency can be changed dynamically, with real-time UI updates and automatic price conversion.


Real-time status management :
Reactive UI state management is achieved using StateFlow, ViewModels, and Kotlin Coroutines.


Architecture and code structure :
Clean MVVM architecture replaces legacy Java code, featuring modular components, Hilt-based dependency injection, and consistent synchronization patterns across the codebase.


Testing and quality assurance :
Robust testing suite ensures reliability across utilities, data layers, repositories, synchronization logic, and network handling.


Responsive multi-device experience :
The application features a fully responsive UI with dedicated smartphone and tablet layouts, including adaptive navigation and a master–detail tablet experience that maximizes screen space while preserving a consistent and intuitive user workflow.

Tech stack

Java & kotlin :
Language (Java legacy + Kotlin migration).

SQLite / room :
Local persistence.

MVVM :
Architecture separation.

ViewModel :
Lifecycle-aware logic.

LiveData/flow :
Reactive data Updates.


ContentProvider :
External data access layer.


State management:
Handle states with MutableStateOf and StateFlow.


Navigation component :
Screen transitions.


Coroutines :
Background processing.


Jetpack compose :
UI enhancements.


Material 3:
Modern, accessible user interface.


Retrofit :
Networking client for API calls.


Kotlinx serialization :
JSON serialization/deserialization.


Google maps static API :
Used to render static images of property locations.


Dagger hilt : 
Dependency injection framework for the entire app.


Internal storage API :
Used to persist static map images locally for offline access.


BuildConfig / secure API key handling :
Prevent exposing secrets via Gradle-based injection.


Google play services (maps & location) :
For real-time location tracking and interactive map display.


Kotlinx coroutines play services :
To integrate Google Play Services APIs with Kotlin coroutines for asynchronous tasks.


ThreeTenABP :
Backport of Java Time API (LocalDate, etc.) for Android API 21+, enabling modern date/time handling on older devices.


Firebase authentication :
Secure user login using email/password and Firebase Identity platform.


Firebase firestore :
Scalable NoSQL cloud database used for syncing property data online.


SyncManager / userSyncManager : Synchronization layer for uploading modified Room data to Firestore.


MapperUtils :
Convert between model (User) and storage representations (UserEntity, UserOnlineEntity).


Room cursor support :
Custom DAO queries returning Cursor for inter-process access through ContentProvider.


Jetpack dataStore (preferences) :
Modern, asynchronous key-value storage used for persisting user preferences (language, currency, etc.).


Firebase cloud functions (v2) :
Server-side scheduled jobs for data lifecycle management and cleanup.


Firebase admin SDK :
Privileged backend access to Firestore and Storage (bypasses client security rules).


Cloud scheduler :
Time-based execution of backend cleanup tasks.


WindowSizeClass & windowInsets : Responsive UI adaptation across smartphones and tablets.