Skip to content

Project structure

Anaf Naufalian edited this page Jun 18, 2023 · 8 revisions

data

datasource

package ini berisi sumber data

local

sumber data atau penyedia data lokal, misalnya database

remote

sumber data atau penyedia data remote, misalnya dari API

model

berisi data class model / POJO

networking

model untuk networking

request_body

model untuk RequestBody saat ingin berinteraksi dengan API (GET,PUT,POST,DELETE)

response

result model dari API (API response)

repository

berisi class repository (implementasi dari interfacenya), contoh class UserCredentialRepository: IUserCredentialRepository, interfacenya berada di package domain/repository

domain

repository

berisi interface repository (untuk diimplementasikan ke classnya), contoh class UserCredentialRepository: IUserCredentialRepository, classnya berada di package data/repository

use_case

berisi class untuk mewakili logika bisnis (business logic), seperti CRUD data dari database, api, dll

foundation

package foundation berisi class2 atau function sbg pondasi dari aplikasi, seperti reusable logic, reusable component, dll

base

package base berisi class BaseViewModel dan composable function BaseScreenWrapper, kalo kamu mau bikin destinasi baru, misalnya chart Jadi di ChartScreen nya itu di awalanya pake BaseScreenWrapper, contoh

@Composable
fun ChartScreen(...) {
    BaseScreenWrapper(...) {
        // UI nya disini, misalnya tombol, text, dll
    }
}

nah di chart screen ini kan juga butuh ViewModel, view modelnya itu dibikin gini

class ChartViewModel: BaseViewModel<...>() {...}

jadi di view modelnya itu jangan nge extend ViewModel, pakenya BaseViewModel

extension

unutk package extension itu isinya buat extension function aja, contoh

misal kita pengen bikin function buat nge sum int habis itu dikali, jadi kita bisa bikin gini

fun Int.sumAndTimes(other: Int) = (this + other) * other

jadi simpelnya package extension isinya itu kumpulan2 extension function

common

untuk package common, itu diisi sama class2 umum aja, kalo misalnya kamu bikin class tapi bingung mau di taruh di package mana, taruh di sini