Struktur Project Phoenix
Penjelasan
Project Phoenix punya dua folder utama di dalam lib: lib/nama_app berisi business logic murni (context, schema Ecto), sedangkan lib/nama_app_web berisi semua yang berhubungan dengan web seperti controller, view/component, template, dan router.ex. Pemisahan ini membuat logic aplikasi tidak bergantung pada detail web, sehingga bisa dipakai ulang lewat CLI atau job background tanpa masalah. File router.ex di dalam nama_app_web adalah pusat routing, tempat semua endpoint didefinisikan beserta pipeline plug yang akan dilewati. File endpoint.ex mengatur konfigurasi server seperti session, static assets, dan plug bawaan Phoenix. Memahami struktur ini penting karena Phoenix sangat konvensional — hampir semua file baru ditempatkan sesuai pola folder yang sudah ada.
Contoh Konsep
toko_app/
lib/
toko_app/ # business logic (context, schema)
accounts.ex
accounts/user.ex
toko_app_web/ # lapisan web
controllers/
page_controller.ex
components/
core_components.ex
router.ex
endpoint.ex
telemetry.ex
priv/
repo/migrations/ # file migration Ecto
config/
dev.exs
prod.exs
mix.exs # daftar dependency & konfigurasi mix
Praktikum
Jelajahi project blog_app yang sudah dibuat sebelumnya, identifikasi file mana yang termasuk business logic dan mana yang termasuk lapisan web.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan taruh query Ecto langsung di controller, letakkan di modul context (lib/nama_app/) supaya controller tetap tipis dan logic bisa dites terpisah dari HTTP.