Arsitektur
Makarya berjalan sebagai satu aplikasi Next.js App Router. Tiap layer punya tanggung jawab sendiri, meski nama direktorinya tidak selalu sama.
| Layer | Lokasi aktual | Tanggung jawab |
|---|---|---|
| Presentation | src/app, src/features, src/components | Read projection, navigasi, formulir, UI status |
| Application | src/lib/data dan handler src/app/api | Command/query, pemeriksaan aktor, transaksi, proyeksi |
| Domain | src/domain | Matching, readiness, izin, kelayakan Proyek singkat, kebijakan upload |
| Infrastructure | src/lib/database.ts, src/lib/auth, src/lib/storage, src/lib/security | Database, sesi, file privat, request boundary |
Jalur baca
Server component memeriksa sesi dan peran sebelum memanggil query aplikasi. Query hanya mengambil data yang boleh dilihat aktor, lalu menyiapkan proyeksi untuk UI. Menyembunyikan menu tidak menggantikan pemeriksaan izin di server.
Jalur command
Form mengirim request ke route handler. Handler memeriksa sesi, origin, rate limit, dan schema input. Sebelum mengubah data, fungsi aplikasi memastikan aktor memiliki resource, organisasi, grant, dan penugasan yang sesuai.
Saat penilai menyelesaikan atau mencabut assessment, satu transaksi menyimpan hasil dan dampaknya pada requirement match, readiness, audit, serta command receipt. Domain tidak mempercayai status yang dikirim browser.
File privat
Route memeriksa izin sebelum storage adapter mengirim stream file. URL Blob sendiri tidak membuka akses publik.
Dokumentasi dan orientasi
Nextra menyajikan src/content di /docs. Help membaca artikel lokal tanpa database. Driver.js dimuat saat workspace dibuka dan hanya menyimpan preferensi seen. Ketiganya tidak menjalankan command domain.
Peta direktori aktual tersedia pada struktur proyek. Jalur offline belum tersedia pada runtime.