Skip to content

vanxioussss/SMG

Repository files navigation

🏡 Real Estate Application

🎯 An Android application for real estate listings

🎥 Demo

Screen_Recording_20250615_155123_realestate.1.mp4

📁 Project Structure

📦 pexels/
├── 📂 app/                         # Main application module
├── 📂 core/                        # Core utilities and shared logic
│      └── 📂 common/               # Common module shared between modules
│      └── 📂 data/                 # Data module which provides repositories, paging sources
│      └── 📂 database/             # Database module
│      └── 📂 datastore/            # Datastore module    
│      └── 📂 domain/               # Domain module which provides use cases, repositories
│      └── 📂 model/                # Model module
│      └── 📂 network/              # Network module
│      └── 📂 testing/              # Testing module
├── 📂 features/                    # Features module
│      └── 📂 listproperties/       # Real estate list feature
└── 📂 gradle/                      # Gradle wrapper and build scripts

🔧 Prerequisites

  • 🧑‍💻 Android Studio: Meerkat
  • 🛠️ Android Gradle Plugin: 8.9.0
  • ⚙️ Gradle: 8.13

✨ Key Features

  • 🏘️ Property Listings with Pagination — Browse a large catalog of real estate properties efficiently using Paging 3.
  • ⭐ Bookmarks — Mark favorite properties and access them anytime, even offline.
  • 📶 Offline-first — Property Listings & bookmarked are stored locally to ensure availability offline.
  • 🗂️ Modular Architecture — Designed for scalability with clean architecture principles.

🏗️ How to Build

  1. Clone the repository:

    git clone https://github.com/vanxioussss/SMG.git
  2. Sync the build project as usual.

📦APK File

In case you can't build the project,
Check the release here

🛠️ Tech Stack

🧠 Decision Making

This section outlines the rationale behind key architectural and UX decisions made during the development of this application.

🏗️ Architecture:

  • Clean Architecture + MVVM
    Ensures clear separation of concerns across layers: UI, Domain, and Data. Each layer has a well-defined responsibility, improving testability and maintainability.

  • Modularization
    Even though the app requirements are simple, the project is modularized to support scalability. This allows different features to be developed in isolation without conflicts, making the codebase future-proof and team-friendly.

  • Single Activity with Jetpack Compose & Navigation Compose
    The app uses a single-activity architecture, with features separted into submodules. This centralizes navigation and simplifies lifecycle handling across screens. Even if there is only one feature now, Navigation will help for future growth of the project.

  • Offline-first with Pagination and RemoteMediator
    Even though the current API does not support pagination, Paging 3 with RemoteMediator is already integrated into the architecture to ensure offline-first behavior and future scalability.

🚀 Future Improvements

Some planned or possible enhancements:

Improve image loading performance
Currently the time to load each image is still high.

Support Build variants
Due to time constraint, I don't have enough time to support build variance but it will be a good improvements in the future.

Improve Code quality

About

An Android app that lists real estate properties

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages