Rafanovation Docsš Standar Dokumentasi Proyek
Dokumen ini adalah standar wajib untuk semua proyek yang dibuat di bawah naungan Rafanovation. Setiap proyek, tanpa terkecuali, harus memenuhi standar ini agar bisa dipahami, dilanjutkan, dan dikembangkan oleh siapa pun ā termasuk anggota yang baru bergabung.
"Kode yang tidak terdokumentasi adalah kode yang mati setelah penulisnya pergi."
I. Prinsip Dokumentasi Rafanovation
- Handover-First: Tulis dokumentasi seolah-olah besok kamu akan digantikan oleh orang yang tidak mengenalmu.
- Living Document: Dokumentasi diperbarui setiap kali ada perubahan signifikan ā bukan hanya saat proyek selesai.
- Plain Language: Hindari jargon yang tidak perlu. Dokumentasi harus bisa dipahami oleh anggota baru sekalipun.
- Single Source of Truth: Satu proyek = satu lokasi dokumentasi utama. Tidak ada informasi yang tersebar di chat pribadi.
II. Struktur Folder Proyek Wajib
Setiap repositori proyek Rafanovation wajib memiliki struktur berikut:
nama-proyek/
āāā README.md ā Pintu masuk utama (WAJIB)
āāā .env.example ā Template environment variables (WAJIB)
āāā docs/
ā āāā architecture.md ā Arsitektur sistem & diagram (WAJIB)
ā āāā database.md ā Skema database / ERD (jika ada)
ā āāā api.md ā Dokumentasi endpoint API (jika ada)
ā āāā deployment.md ā Panduan deploy ke production
ā āāā decisions/ ā Catatan keputusan arsitektur penting (ADR)
āāā CHANGELOG.md ā Riwayat perubahan versi
āāā CONTRIBUTING.md ā Panduan kontribusi untuk anggota baru
III. Template README.md Wajib
Setiap proyek wajib memiliki README.md dengan seksi berikut (hapus yang tidak relevan):
# [Nama Proyek]
> [Satu kalimat deskripsi: apa proyek ini dan masalah apa yang dipecahkan]
## šÆ Tujuan Proyek
[Jelaskan mengapa proyek ini dibuat. Masalah apa yang diselesaikan untuk siapa?]
## ⨠Fitur Utama
- Fitur 1
- Fitur 2
- Fitur 3
## š ļø Tech Stack
- **Frontend**: [contoh: Vue 3, Nuxt, TailwindCSS]
- **Backend**: [contoh: Express, Laravel, Supabase]
- **Database**: [contoh: PostgreSQL, MongoDB]
- **Hosting**: [contoh: Vercel, Railway, VPS]
## š Cara Menjalankan Lokal
### Prasyarat
- Node.js v18+
- [Tools lain yang dibutuhkan]
### Instalasi
```bash
# 1. Clone repository
git clone [url-repo]
cd nama-proyek
# 2. Install dependencies
npm install
# 3. Setup environment
cp .env.example .env
# Edit .env sesuai kebutuhan
# 4. Jalankan dev server
npm run dev
š Link Penting
- Production: URL live
- Staging: URL staging jika ada
- Design (Figma): URL Figma jika ada
š Struktur Proyek
Jelaskan singkat struktur folder utama
š Environment Variables
| Variabel | Keterangan | Contoh |
|---|---|---|
DATABASE_URL | Koneksi database | postgresql://... |
API_KEY | API Key layanan X | sk-... |
š„ Tim & Kontak
| Peran | Nama | Kontak |
|---|---|---|
| Maintainer | Nama | Email/WA |
| Designer | Nama | Email/WA |
š Status Proyek
- MVP selesai
- Fitur X dalam pengerjaan
- Deployment ke production
ā ļø Hutang Teknis (Technical Debt)
Hal-hal yang perlu diperbaiki di masa depan tapi belum sempat dikerjakan
- Item 1
- Item 2
---
## **IV. Standar Penamaan & Versioning**
### Nama Branch (Git)
main ā Production-ready, selalu stabil develop ā Branch pengembangan utama feature/nama-fitur ā Fitur baru fix/nama-bug ā Perbaikan bug hotfix/nama-fix ā Perbaikan darurat di production
### Commit Message
Gunakan format **Conventional Commits**:
feat: menambahkan fitur login dengan Google fix: memperbaiki bug kalkulasi di halaman kalkulator docs: memperbarui README dengan instruksi setup baru refactor: menyederhanakan logika autentikasi chore: memperbarui dependensi ke versi terbaru
### Versioning (MAJOR.MINOR.PATCH)
1.0.0 ā Rilis perdana / MVP 1.1.0 ā Tambah fitur baru (backward-compatible) 1.1.1 ā Perbaikan bug kecil 2.0.0 ā Perubahan besar yang tidak backward-compatible
---
## **V. Kewajiban Dokumentasi Per Fase Proyek**
| Fase | Dokumentasi Wajib |
| :--- | :--- |
| **Memulai Proyek Baru** | README.md (minimal), `.env.example`, `docs/architecture.md` |
| **Setiap Sprint/Iterasi** | Update `CHANGELOG.md`, update status di README |
| **Menambah Fitur Baru** | Update README bagian fitur, update API docs jika relevan |
| **Sebelum Serah Terima** | Semua docs harus lengkap, `docs/deployment.md` wajib ada |
| **Saat Offboarding** | Isi `Project Handover Document` (lihat SOP Offboarding) |
---
## **VI. Dokumentasi Keputusan Arsitektur (ADR)**
Untuk setiap keputusan teknis besar (memilih database, memilih framework, mengubah arsitektur), buat file di `docs/decisions/`:
```markdown
# ADR-001: Menggunakan Supabase sebagai Backend
**Tanggal**: 2025-01-15
**Status**: Diterima
## Konteks
[Apa situasi/masalah yang membutuhkan keputusan ini?]
## Keputusan
[Apa yang diputuskan?]
## Alasan
[Mengapa keputusan ini diambil? Opsi apa saja yang dipertimbangkan?]
## Konsekuensi
[Apa dampak positif dan negatif dari keputusan ini?]
Mengapa ADR penting? Karena 6 bulan kemudian, anggota baru tidak akan tahu mengapa sebuah keputusan teknis dibuat. ADR mencegah pertanyaan "kenapa kita pakai ini?" tanpa jawaban.
VII. Standar Dokumentasi API
Jika proyek memiliki API, wajib mendokumentasikan di docs/api.md:
## POST /api/auth/login
**Deskripsi**: Autentikasi pengguna dan mendapatkan token akses.
**Request Body**:
```json
{
"email": "user@example.com",
"password": "password123"
}
Response Sukses (200):
{
"token": "eyJ...",
"user": {
"id": 1,
"name": "Adib"
}
}
Response Error (401):
{
"message": "Email atau password salah"
}
---
## **VIII. Checklist "Proyek Siap Diserahterimakan"**
Sebelum meninggalkan sebuah proyek, pastikan semua ini sudah selesai:
**Dokumentasi:**
- [ ] `README.md` lengkap dan up-to-date
- [ ] `.env.example` ada dan semua variabel terdokumentasi
- [ ] `docs/architecture.md` menjelaskan gambaran besar sistem
- [ ] `CHANGELOG.md` mencatat semua perubahan signifikan
**Kode:**
- [ ] Tidak ada `console.log` debug yang tertinggal
- [ ] Semua fungsi kompleks ada komentar penjelasannya
- [ ] Dependensi terbaru dan tidak ada yang deprecated
- [ ] Tidak ada credential/secret yang ter-hardcode di kode
**Akses:**
- [ ] `.env` asli tersimpan di tempat aman organisasi (bukan hanya di komputer pribadi)
- [ ] Akses repo sudah diserahkan ke maintainer baru
- [ ] Akses server/hosting sudah diserahkan
---
::alert{type="success"}
Proyek yang memenuhi standar ini adalah **aset permanen Rafanovation**, bukan sekadar tugas kuliah yang berakhir di semester ini. Setiap baris dokumentasi yang kamu tulis adalah investasi untuk anggota generasi berikutnya.
::
---
**Work Modern. Solve Real.**