The official Android client for Peer Network, built with modern Android development standards.
📱 Get it on Google Play
https://play.google.com/store/apps/details?id=eu.peernetwork.app
- Language: Kotlin (100%)
- UI Framework: Jetpack Compose
- Architecture:
- Clean Architecture
- MVVM + MVI (State Pattern)
- Multi-Module (Feature-driven)
- Dependency Injection: Dagger 2 via direct Component construction
- Asynchronicity: Coroutines & Flow
- Data Loading: Paging 3
The project is highly modularized to ensure separation of concerns and scalability. Each high-level feature (e.g., Social, User, Wallet) is split into four distinct sub-modules:
-
:domain- Responsibility: Business logic, pure Kotlin.
- Contents: Use Cases, Repository Interfaces, Domain Models.
- Dependencies: None (or pure Java/Kotlin libraries).
-
:data- Responsibility: Data retrieval and management.
- Contents: Repository Implementations, API definitions, Data Sources.
- Dependencies:
:domain, Networking libraries.
-
:ui- Responsibility: Rendering UI and handling user interaction.
- Contents: Jetpack Compose Screens, ViewModels, DI Components (
UiComponentProvider). - Dependencies:
:domain,:core:ui.
-
:remote- Responsibility: Network communication specifics (DTOs, Services).
:core:common: Shared utilities, extensions, and base classes (e.g.,Resulttypes).:core:ui: Design System (Luna), shared Composables, and Theme definitions.
peer_android_frontend/
├── app/ # Application module (DI root, manifest)
│
├── core/
│ ├── common/ # Utils, extensions, logging
│ └── ui/ # Design system, base components, theme
│
├── feature/
│ ├── social/ # Feed, connections, interactions
│ │ ├── domain/
│ │ ├── data/
│ │ └── ui/
│ │
│ ├── user/ # Auth, profile, account
│ │ ├── domain/
│ │ ├── data/
│ │ └── ui/
│ │
│ ├── wallet/ # Tokens, balance, transactions
│ │ ├── domain/
│ │ ├── data/
│ │ └── ui/
│ │
│ ├── messaging/ # Chats, threads, messages
│ │ ├── domain/
│ │ ├── data/
│ │ └── ui/
│
└── ...
The UI acts as a composition of three distinct layers:
- Stateful Components (Screens): Composition roots (e.g.,
LoginScreen) responsible for Dependency Injection, ViewModel creation, and state collection. - Stateless Components: Complex UI compositions (e.g.,
LoginPage) that define the layout and behavioral contracts. They are pure functions receiving state and event callbacks. - View Components: Reusable, atomic building blocks (e.g.,
DesignTextField,DesignButton) shared across the application.
-
Prerequisites:
- Android Studio Iguana or later.
- JDK 17.
-
Build:
./gradlew assembleDebug
-
Run Tests:
./gradlew test