Aplikasi web komprehensif untuk manajemen data Rukun Tetangga (RT), dirancang untuk mempermudah administrasi dan komunikasi warga.
- Fitur Utama
- Teknologi
- Struktur Proyek
- Prasyarat
- Panduan Memulai (Pengembangan Lokal)
- Menjalankan Frontend dan Backend Secara Terpisah
- Deployment
- Dashboard Dinamis: Ringkasan data dan statistik penting RT.
- Manajemen Warga & Kartu Keluarga: Pengelolaan data penduduk, kartu keluarga, dan relasi antar warga secara terpadu.
- Sistem Iuran: Pengelolaan iuran warga, pencatatan pembayaran, dan pelaporan keuangan.
- Manajemen Kegiatan: Penjadwalan dan pengelolaan partisipasi dalam event dan kegiatan RT.
- Lainnya: (Sebutkan fitur lain jika ada, misal: Pengumuman, Inventaris, Laporan).
- Frontend:
- React.js
- Tailwind CSS (Styling)
- Axios (HTTP Client)
- Backend:
- Node.js
- Express.js (Framework Web)
- Database:
- PostgreSQL (Dikelola melalui Supabase)
- ORM:
- Prisma
- Deployment:
- Frontend: Netlify (Static Site)
- Backend: Netlify Functions
Struktur utama proyek dibagi menjadi direktori client (frontend), server (backend), dan prisma (konfigurasi ORM).
SuperAppsRTWeb/
├── client/ # Kode sumber Frontend (React)
│ ├── public/
│ ├── src/
│ │ ├── components/ # Komponen UI reusable
│ │ ├── pages/ # Komponen halaman utama
│ │ ├── services/ # Layanan API call (api.js, dll.)
│ │ └── App.js # Root komponen aplikasi frontend
│ ├── .env.example # Contoh variabel lingkungan frontend
│ └── package.json
├── server/ # Kode sumber Backend (Express.js)
│ ├── controllers/ # Logika bisnis dan handler request
│ ├── models/ # Definisi model data (prisma.js)
│ ├── routes/ # Definisi endpoint API
│ ├── .env.example # Contoh variabel lingkungan backend
│ ├── index.js # Entry point server (untuk lokal)
│ └── netlify-handler.js # Handler untuk Netlify Functions
│ └── package.json
├── prisma/ # Konfigurasi dan migrasi Prisma ORM
│ └── schema.prisma
├── public/ # Aset statis (misal: font untuk PDF)
├── netlify.toml # Konfigurasi build dan redirect Netlify
├── package.json # Skrip dan dependensi root
└── README.md # File ini
Untuk detail riwayat pengembangan dan perubahan struktur yang lebih lengkap, silakan merujuk ke Dev_log.txt.
Pastikan sistem Anda telah terinstal:
- Node.js (Disarankan versi LTS terbaru, misal v18.x atau v20.x)
- npm (biasanya terinstal bersama Node.js) atau Yarn
-
Kloning Repositori
git clone https://github.com/xr3ed/SuperAppsRTWeb.git cd SuperAppsRTWeb -
Konfigurasi Variabel Lingkungan
-
Backend (
server/.env): Salinserver/.env.examplemenjadiserver/.env.cp server/.env.example server/.env
Kemudian, edit
server/.envdan isi variabel-variabel berikut dengan nilai yang sesuai:DATABASE_URL: String koneksi PostgreSQL Anda dari Supabase (gunakan Pooled Connection String, biasanya diakhiri dengan?pgbouncer=true&sslmode=require).DIRECT_URL: String koneksi PostgreSQL langsung dari Supabase (biasanya TIDAK menggunakan PgBouncer, digunakan untuk migrasi Prisma, sering diakhiri dengan?sslmode=require).NODE_ENV: Atur kedevelopmentuntuk pengembangan lokal.FRONTEND_URL(Opsional): Jika server lokal Anda (server/index.js) memerlukan URL frontend untuk konfigurasi CORS yang spesifik, Anda dapat mengaturnya di sini (misal:http://localhost:3000).
Contoh isi
server/.env(ganti dengan nilai Anda):DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.[YOUR-SUPABASE-PROJECT-ID].supabase.co:6543/postgres?pgbouncer=true&sslmode=require" DIRECT_URL="postgresql://postgres:[YOUR-PASSWORD]@db.[YOUR-SUPABASE-PROJECT-ID].supabase.co:5432/postgres?sslmode=require" NODE_ENV="development" # FRONTEND_URL=http://localhost:3000
-
Frontend (
client/.env): Salinclient/.env.examplemenjadiclient/.env.cp client/.env.example client/.env
Kemudian, edit
client/.envdan aturREACT_APP_API_URLagar menunjuk ke server backend lokal Anda. Contoh:REACT_APP_API_URL=http://localhost:5000/api
(Port
5000adalah port default yang digunakan olehserver/index.js./apiadalah base path API.)
-
-
Instalasi Dependensi Dari direktori root proyek, jalankan:
npm run install-all
Skrip ini akan menginstal dependensi untuk direktori root,
server/, danclient/, serta menjalankannpx prisma generateuntuk menghasilkan Prisma Client. -
Menjalankan Migrasi Database (jika ini setup pertama kali atau ada migrasi baru) Pastikan variabel
DATABASE_URL(atau lebih tepatnyaDIRECT_URLyang sering digunakan Prisma untuk migrasi jika skema Prisma Anda dikonfigurasi untuk itu) diserver/.envsudah benar. Anda dapat menjalankan migrasi dari direktori root atau dari dalam direktoriserver.Dari direktori root:
npx prisma migrate dev --schema ./prisma/schema.prisma
Atau jika dari direktori
server/(umumnya lebih disarankan jikaschema.prismaada diprisma/yang relatif terhadapserver/saat konteksnya diserver):cd server npx prisma migrate dev # (Prisma CLI akan mencari schema.prisma di ../prisma/ atau ./prisma/ relatif terhadap server/) cd ..
Jika Prisma CLI dijalankan dari root, ia mungkin memerlukan
DATABASE_URLdi.envroot jika tidak dapat menemukannya secara otomatis atau jika skrip Anda tidak mengatur path keserver/.env. Untuk kesederhanaan, pastikanserver/.envmemilikiDIRECT_URLyang benar, dan jikaprisma/schema.prismaAnda menggunakanenv("DIRECT_URL")untuk datasource provider migrasi, maka Prisma akan menggunakannya. -
Menjalankan Aplikasi (Backend & Frontend Bersamaan) Dari direktori root proyek, jalankan:
npm run dev
Ini akan menjalankan:
- Server backend di
http://localhost:5000(atau port lain jika dikonfigurasi). - Server pengembangan frontend di
http://localhost:3000(atau port lain jika dikonfigurasi) dan otomatis membuka browser.
- Server backend di
Anda juga dapat menjalankan frontend dan backend secara independen:
-
Menjalankan Server Backend (dari direktori
server/)cd server npm start # atau npm run dev (jika menggunakan nodemon, periksa package.json server)
Server akan berjalan, biasanya di
http://localhost:5000. -
Menjalankan Aplikasi Frontend (dari direktori
client/) Pastikan backend sudah berjalan danREACT_APP_API_URLdiclient/.envsudah benar.cd client npm startAplikasi akan terbuka di browser, biasanya di
http://localhost:3000.
- Backend: Dideploy sebagai Netlify Functions. Kode sumber utama fungsi ada di
server/netlify-handler.jsyang membungkus aplikasi Express.js. - Frontend: Dideploy sebagai situs statis di Netlify, dibangun dari direktori
client. - Konfigurasi: File
netlify.tomldi root proyek mengatur perintah build, direktori publikasi, direktori fungsi, dan aturan redirect (termasuk proxy untuk API). - Variabel Lingkungan di Netlify: Pastikan variabel lingkungan seperti
DATABASE_URL,DIRECT_URL(jika diperlukan oleh proses build/migrasi di Netlify),NODE_ENV="production", danFRONTEND_URL(untuk CORS backend) telah dikonfigurasi di UI Netlify.
Pastikan untuk selalu menjaga Dev_log.txt tetap terbaru untuk catatan perubahan detail.