Terima kasih telah tertarik untuk berkontribusi pada NextA-API! Kami senang Anda ingin membantu membuat proyek API modular ini menjadi lebih baik.
Dokumen ini berisi panduan untuk membantu Anda memulai kontribusi, mulai dari setup lingkungan pengembangan lokal hingga cara menambahkan endpoint baru agar terdeteksi otomatis oleh sistem dokumentasi.
Sebelum memulai, pastikan Anda telah menginstal:
- Node.js (Versi 18+ direkomendasikan)
- PostgreSQL (Untuk database fitur Chat, Blog, dan Temp Storage)
- Git
- Fork repositori ini ke akun GitHub Anda.
- Clone repositori fork tersebut ke komputer lokal Anda:
git clone https://github.com/USERNAME-ANDA/NextA-API.git cd NextA-API - Install Dependencies:
npm install
- Konfigurasi Environment Variables:
Buat file
.env.localdi root folder dan isi variabel berikut:# Koneksi Database PostgreSQL PURUBOY_PG_URL="postgres://user:password@host:port/database" # Password Admin untuk Blog/CMS PURUBOY_ADMIN_KEY="password_rahasia_anda"
- Jalankan Server Development:
Akses di
npm run dev
http://localhost:3000.
Proyek ini menggunakan struktur Next.js App Router dengan pemisahan logika bisnis yang ketat:
app/api/: Hanya berisi Route Handlers (entry point). Hindari menulis logika bisnis yang kompleks di sini.lib/controllers/: Berisi logika utama endpoint. Setiap endpoint baru wajib memiliki controller di sini.lib/: Helper functions, koneksi database, dan utilitas (scraper, third-party API wrapper).components/: Komponen React untuk Frontend/Dokumentasi.public/: Aset statis.scripts/: Skript utilitas (sepertigenerate-docs.js).
Sistem dokumentasi (/docs) di proyek ini dibuat secara otomatis dengan memindai file di dalam lib/controllers. Agar endpoint Anda muncul di dokumentasi, ikuti langkah ini:
-
Buat Controller: Buat file baru di
lib/controllers/<kategori>/<nama-fitur>.js. Contoh:lib/controllers/tools/myFeature.js. -
Tulis Logika & JSDoc: Anda WAJIB menambahkan komentar JSDoc khusus di atas fungsi controller. Sistem akan membaca tag ini untuk membuat file
docs.json./** * @title Nama Fitur * @summary Ringkasan singkat. * @description Penjelasan detail tentang apa yang dilakukan endpoint ini. * @method GET * @path /api/tools/my-feature * @response json * @param {string} query.text - Parameter text yang dibutuhkan. * @example * async function test() { * const res = await fetch('/api/tools/my-feature?text=halo'); * console.log(await res.json()); * } */ const myFeatureController = async (req) => { // Logika Anda di sini return { success: true, message: "Hello World" }; }; module.exports = myFeatureController;
-
Buat Route Handler: Buat file di
app/api/tools/my-feature/route.js:import { NextResponse } from 'next/server'; import myFeatureController from '../../../../lib/controllers/tools/myFeature'; export async function GET(req) { try { const { searchParams } = new URL(req.url); const query = Object.fromEntries(searchParams); // Mock request object const mockReq = { query }; const result = await myFeatureController(mockReq); return NextResponse.json(result); } catch (error) { return NextResponse.json({ error: error.message }, { status: 500 }); } }
Tag yang didukung oleh lib/docsService.js:
@title: Judul endpoint.@summary: Deskripsi singkat (muncul di kartu endpoint).@description: Deskripsi lengkap (muncul di modal info).@method: GET, POST, PUT, DELETE.@path: URL path endpoint.@param: Definisi parameter. Format:{tipe} lokasi.nama - deskripsi.- Lokasi:
query,body,path. - Opsional: Gunakan kurung siku
[query.page].
- Lokasi:
@example: Contoh kode penggunaan.
- Gunakan Tailwind CSS untuk styling.
- Ikuti tema warna yang ada di
globals.css(gunakan variabel CSS--accent-color,--bg-card, dll) agar mendukung tema dinamis jika diterapkan nanti. - Komponen reusable ada di folder
components/(misal:EndpointCard.jsx,InfoModal.jsx).
- Pastikan kode Anda berjalan dengan baik di lokal.
- Jalankan perintah build untuk memastikan script dokumentasi berjalan tanpa error:
Langkah ini akan menjalankan
npm run build
scripts/generate-docs.jsdan memastikanpublic/docs.jsonter-generate dengan benar. - Buat branch baru untuk fitur/perbaikan Anda:
git checkout -b fitur/nama-fitur-anda
- Commit perubahan Anda dengan pesan yang jelas:
git commit -m "feat: menambah endpoint downloader baru" - Push ke repositori fork Anda dan buat Pull Request ke branch
mainrepositori utama.
Terima kasih telah berkontribusi! 🚀