logo

Juniper - Apartment Rental & Investment Platform

Published Jul 24, 2025

Updated Jul 24, 2025

Description

Juniper is a mobile app concept designed to simplify the way renters, landlords, and investors interact with apartments.

Role

Product Designer, Developer

Links

Tools

Figma, Flutter, Dart, BLoC, Clean Architecture, SQLite

Juniper

Juniper is a mobile app concept designed to simplify the way renters, landlords, and investors interact with apartments. Whether you're looking for a place to live, listing your property, or investing in real estate, Juniper aims to centralize that experience through a clean, user-friendly interface.

Juniper

I started Juniper to explore how I might streamline the fragmented rental and investment process into a single mobile experience. The idea was to give:

  • Renters a place to find and organize listings
  • Landlords tools to publish and manage listings (planned)
  • Investors a dashboard to track real estate portfolios (planned)

I focused on building:
  • A smooth onboarding flow
  • Favorites and smart search for apartment comparison
  • Scaffolding for investment tracking and future AI recommendations

JuniperJuniperJuniperJuniperJuniperJuniperJuniperJuniper

Architecture & Implementation

Built with Flutter, I followed a Clean Architecture approach to keep things modular and scalable.

File Structure:

  • lib/
    • core/ # Constants, themes, shared components
    • features/
      • home/
        • data/
          • datasources/
          • models/
          • repositories/
          • datasource.dart
        • domain/
          • entities/
          • repositories/
          • usecases/
          • entities.dart
        • presentation/
          • blocs/
          • pages/
          • widgets/
          • home_page.dart
        • index.dart
        • types.dart
      • onboarding/ # Welcome flow
      • search/ # Apartment discovery
      • favorites/ # Saved listings
      • investment/ # Portfolio tracking (future)
    • presentation/ # Reusable widgets and screens

To ensure platform adaptability, I created custom responsive components using platform checks to dynamically switch between Material and Cupertino elements depending on the OS.

Challenges & Lessons

Initially, I tried to build too much — search, investment, landlord dashboards, and AI. I learned to focus on smaller use cases and solve one problem really well before expanding.

Performance Issues
Image-heavy screens were laggy, so I explored:

  • Image caching
  • Shimmer states for loading
  • Optimizing data queries to reduce network overhead
  • Optimizing data queries to reduce network overhead


iOS Limitations
Not having a Mac made iOS testing a challenge. To account for this, I designed platform-specific UI components that dynamically adapt — ensuring a smooth experience even without real device testing.

What I Learned
  • How to build large features modularly within a scalable architecture
  • The value of designing for performance, especially with visuals and data-heavy UIs
  • Why scoping matters — keep your MVP lean and learn from it
  • How to think in terms of cross-platform design, even when testing tools are limited

I didn't finish every feature, but the foundation is strong — and something I'd love to revisit, scale, or rebuild with better tooling in the future.

Last visitor from: ...