lib/
│
├── main.dart # Entry point aplikasi
├── app.dart # Konfigurasi dasar aplikasi
│
├── core/
│ ├── config/
│ │ ├── api_config.dart # Konfigurasi endpoint API
│ │ ├── environment.dart # Konfigurasi lingkungan (development, production)
│ │ ├── app_config.dart # Konfigurasi aplikasi (misalnya, tema global)
│ │ └── firebase_config.dart# Konfigurasi Firebase (jika diperlukan)
│ │
│ ├── constants/
│ │ ├── app_colors.dart # Konstanta warna
│ │ ├── app_text_styles.dart# Gaya teks yang digunakan di seluruh aplikasi
│ │ └── app_strings.dart # Teks yang digunakan di seluruh aplikasi
│ │
│ ├── utils/
│ │ ├── helpers.dart # Fungsi helper umum
│ │ ├── validators.dart # Fungsi validasi input
│ │ └── notification_helper.dart # Pengaturan notifikasi lokal
│ │
│ └── services/
│ ├── api_service.dart # Layanan untuk panggilan API
│ ├── auth_service.dart # Layanan otentikasi
│ └── database_service.dart # Layanan akses database lokal
│
├── data/
│ ├── models/
│ │ ├── user_model.dart # Model untuk pengguna
│ │ ├── therapy_model.dart # Model untuk terapi
│ │ └── response_model.dart # Model untuk data respon API
│ │
│ ├── repositories/
│ │ ├── auth_repository.dart # Repositori untuk otentikasi
│ │ ├── therapy_repository.dart # Repositori untuk data terapi
│ │ └── user_repository.dart # Repositori untuk data pengguna
│ │
│ └── datasources/
│ ├── local/
│ │ ├── local_data_source.dart # Data source untuk penyimpanan lokal
│ │ └── database_helper.dart # Helper database untuk penyimpanan lokal
│ └── remote/
│ ├── remote_data_source.dart # Data source untuk penyimpanan remote (API)
│ └── api_client.dart # Klien API untuk koneksi server
│
├── features/
│ ├── auth/
│ │ ├── models/
│ │ │ └── auth_model.dart # Model khusus untuk data login/signup
│ │ ├── views/
│ │ │ ├── login_screen.dart # Layar login
│ │ │ └── signup_screen.dart # Layar signup
│ │ ├── controllers/
│ │ │ └── auth_controller.dart # Controller untuk login/signup
│ │ └── repositories/
│ │ └── auth_repository.dart # Repositori untuk otentikasi
│ │
│ ├── home/
│ │ ├── models/
│ │ │ └── therapy_model.dart # Model terapi (jika belum ada)
│ │ ├── views/
│ │ │ ├── home_screen.dart # Layar utama (daftar terapi)
│ │ │ ├── therapy_card.dart # Card untuk terapi
│ │ │ └── therapy_detail_screen.dart # Detail terapi, misalnya untuk Art Therapy atau CB Therapy
│ │ ├── controllers/
│ │ │ └── home_controller.dart # Controller untuk halaman utama
│ │ └── repositories/
│ │ └── therapy_repository.dart # Repositori untuk data terapi
│ │
│ └── catharsis/
│ ├── models/
│ │ └── catharsis_model.dart # Model khusus untuk Catharsis Therapy
│ ├── views/
│ │ ├── catharsis_screen.dart # Layar Catharsis Therapy
│ │ └── voice_recorder_widget.dart # Widget untuk perekaman suara di Catharsis Therapy
│ ├── controllers/
│ │ └── catharsis_controller.dart # Controller khusus untuk Catharsis Therapy
│ └── repositories/
│ └── catharsis_repository.dart # Repositori khusus untuk Catharsis Therapy
│
├── widgets/
│ ├── custom_button.dart # Widget tombol khusus
│ ├── custom_text_field.dart # Widget untuk input teks
│ └── therapy_filter_chip.dart # Widget untuk filter kategori terapi (All, Calm, Anxious, Relax)
│
└── resources/
├── images/
│ ├── logo.png # Logo aplikasi
│ ├── therapy_icons.png # Ikon-ikon untuk kategori terapi
│ └── user_avatar_placeholder.png # Placeholder avatar pengguna
└── fonts/
Folder Utama (lib/)
main.dart: Entry point aplikasi Flutter, berisi runApp() yang memanggil App sebagai widget utama.
app.dart: Mengonfigurasi widget aplikasi utama, termasuk MaterialApp dan navigasi dasar aplikasi.
Folder Core (core/)
• config/: Berisi konfigurasi-konfigurasi penting aplikasi.
o api_config.dart: Menyimpan konfigurasi endpoint API (URL dasar, endpoint-endpoint penting).
o environment.dart: Menyimpan informasi lingkungan (development, testing, production).
o app_config.dart: Pengaturan global aplikasi (tema global, pengaturan tampilan standar).
o firebase_config.dart: Konfigurasi Firebase (jika digunakan), seperti Google Services JSON.
• constants/: Menyimpan konstanta-konstanta yang sering digunakan di aplikasi.
o app_colors.dart: Konstanta warna (e.g., warna primer, sekunder, warna latar).
o app_text_styles.dart: Gaya teks standar yang sering digunakan.
o app_strings.dart: Teks atau label aplikasi yang sering digunakan untuk menghindari hardcoding.
• utils/: Menyediakan fungsi utilitas yang digunakan di banyak tempat dalam aplikasi.
o helpers.dart: Fungsi-fungsi kecil untuk berbagai keperluan umum.
o validators.dart: Fungsi validasi, seperti validasi email atau password.
o notification_helper.dart: Mengelola notifikasi lokal dan push notifikasi.
• services/: Layanan untuk mengakses data atau otentikasi.
o api_service.dart: Mengatur panggilan API, menangani metode HTTP seperti GET, POST.
o auth_service.dart: Layanan otentikasi (login, registrasi, logout).
o database_service.dart: Layanan untuk mengakses database lokal (misal menggunakan SQLite).
Folder Data (data/)
• models/: Menyimpan model data yang merepresentasikan struktur data aplikasi.
o user_model.dart: Model untuk data pengguna.
o therapy_model.dart: Model data untuk informasi terapi.
o response_model.dart: Model standar untuk menangani respon dari API.
• repositories/: Berisi logika bisnis untuk pengelolaan data.
o auth_repository.dart: Mengelola data terkait otentikasi.
o therapy_repository.dart: Mengelola data terapi, seperti mengambil daftar terapi.
o user_repository.dart: Mengelola data pengguna.
• datasources/: Menyediakan sumber data untuk aplikasi.
o local/: Sumber data lokal.
local_data_source.dart: Implementasi sumber data dari database lokal.
database_helper.dart: Helper untuk mengelola operasi database lokal.
o remote/: Sumber data dari server.
remote_data_source.dart: Implementasi sumber data dari API.
api_client.dart: Klien API yang menangani koneksi dan autentikasi.
Folder Features (features/)
Menampung setiap fitur utama aplikasi dalam sub-foldernya sendiri. Setiap fitur berisi folder models, views, controllers, dan repositories untuk modularitas dan keteraturan.
• auth/: Fitur otentikasi.
o views/: Berisi login_screen.dart dan signup_screen.dart.
o controllers/: auth_controller.dart mengatur logika bisnis otentikasi.
o repositories/: auth_repository.dart berisi data otentikasi dari local storage atau API.
• home/: Fitur utama yang berisi daftar terapi.
o views/:
home_screen.dart: Layar utama yang menampilkan berbagai jenis terapi.
therapy_card.dart: Widget khusus untuk menampilkan informasi singkat tiap terapi.
therapy_detail_screen.dart: Menampilkan detail dari tiap terapi.
o controllers/: home_controller.dart menangani logika bisnis untuk halaman home.
o repositories/: therapy_repository.dart berisi logika untuk mengambil data terapi dari API.
• catharsis/: Fitur untuk Catharsis Therapy.
o views/:
catharsis_screen.dart: Layar Catharsis Therapy dengan fitur rekaman suara.
voice_recorder_widget.dart: Widget untuk perekaman suara yang terintegrasi.
o controllers/: catharsis_controller.dart menangani logika perekaman suara.
o repositories/: catharsis_repository.dart mengelola data khusus untuk terapi ini.
Folder Widgets (widgets/)
• custom_button.dart: Widget tombol yang digunakan di seluruh aplikasi (misalnya tombol sign up atau record di Catharsis Therapy).
• custom_text_field.dart: Widget untuk input teks (misalnya input nama pengguna atau password).
• therapy_filter_chip.dart: Chip filter yang digunakan untuk memilih jenis terapi di halaman home (seperti "All", "Calm", "Anxious", dll).
Folder Resources (resources/)
• images/: Menyimpan aset gambar (e.g., logo, avatar placeholder).
• fonts/: Menyimpan file font yang digunakan di aplikasi untuk konsistensi tampilan teks.
link design https://dribbble.com/shots/25088170-Mental-Health-Mobile-App
struktur layoting aplikasi
lib/ │ ├── main.dart # Entry point aplikasi ├── app.dart # Konfigurasi dasar aplikasi │ ├── core/ │ ├── config/ │ │ ├── api_config.dart # Konfigurasi endpoint API │ │ ├── environment.dart # Konfigurasi lingkungan (development, production) │ │ ├── app_config.dart # Konfigurasi aplikasi (misalnya, tema global) │ │ └── firebase_config.dart# Konfigurasi Firebase (jika diperlukan) │ │ │ ├── constants/ │ │ ├── app_colors.dart # Konstanta warna │ │ ├── app_text_styles.dart# Gaya teks yang digunakan di seluruh aplikasi │ │ └── app_strings.dart # Teks yang digunakan di seluruh aplikasi │ │ │ ├── utils/ │ │ ├── helpers.dart # Fungsi helper umum │ │ ├── validators.dart # Fungsi validasi input │ │ └── notification_helper.dart # Pengaturan notifikasi lokal │ │ │ └── services/ │ ├── api_service.dart # Layanan untuk panggilan API │ ├── auth_service.dart # Layanan otentikasi │ └── database_service.dart # Layanan akses database lokal │ ├── data/ │ ├── models/ │ │ ├── user_model.dart # Model untuk pengguna │ │ ├── therapy_model.dart # Model untuk terapi │ │ └── response_model.dart # Model untuk data respon API │ │ │ ├── repositories/ │ │ ├── auth_repository.dart # Repositori untuk otentikasi │ │ ├── therapy_repository.dart # Repositori untuk data terapi │ │ └── user_repository.dart # Repositori untuk data pengguna │ │ │ └── datasources/ │ ├── local/ │ │ ├── local_data_source.dart # Data source untuk penyimpanan lokal │ │ └── database_helper.dart # Helper database untuk penyimpanan lokal │ └── remote/ │ ├── remote_data_source.dart # Data source untuk penyimpanan remote (API) │ └── api_client.dart # Klien API untuk koneksi server │ ├── features/ │ ├── auth/ │ │ ├── models/ │ │ │ └── auth_model.dart # Model khusus untuk data login/signup │ │ ├── views/ │ │ │ ├── login_screen.dart # Layar login │ │ │ └── signup_screen.dart # Layar signup │ │ ├── controllers/ │ │ │ └── auth_controller.dart # Controller untuk login/signup │ │ └── repositories/ │ │ └── auth_repository.dart # Repositori untuk otentikasi │ │ │ ├── home/ │ │ ├── models/ │ │ │ └── therapy_model.dart # Model terapi (jika belum ada) │ │ ├── views/ │ │ │ ├── home_screen.dart # Layar utama (daftar terapi) │ │ │ ├── therapy_card.dart # Card untuk terapi │ │ │ └── therapy_detail_screen.dart # Detail terapi, misalnya untuk Art Therapy atau CB Therapy │ │ ├── controllers/ │ │ │ └── home_controller.dart # Controller untuk halaman utama │ │ └── repositories/ │ │ └── therapy_repository.dart # Repositori untuk data terapi │ │ │ └── catharsis/ │ ├── models/ │ │ └── catharsis_model.dart # Model khusus untuk Catharsis Therapy │ ├── views/ │ │ ├── catharsis_screen.dart # Layar Catharsis Therapy │ │ └── voice_recorder_widget.dart # Widget untuk perekaman suara di Catharsis Therapy │ ├── controllers/ │ │ └── catharsis_controller.dart # Controller khusus untuk Catharsis Therapy │ └── repositories/ │ └── catharsis_repository.dart # Repositori khusus untuk Catharsis Therapy │ ├── widgets/ │ ├── custom_button.dart # Widget tombol khusus │ ├── custom_text_field.dart # Widget untuk input teks │ └── therapy_filter_chip.dart # Widget untuk filter kategori terapi (All, Calm, Anxious, Relax) │ └── resources/ ├── images/ │ ├── logo.png # Logo aplikasi │ ├── therapy_icons.png # Ikon-ikon untuk kategori terapi │ └── user_avatar_placeholder.png # Placeholder avatar pengguna └── fonts/
Folder Utama (lib/)