You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Selamat datang di repositori **PRISMA (Platform Informasi & Sistem Manajemen RT 04)**. Proyek ini adalah solusi digital end-to-end berstandar enterprise yang ditujukan untuk memodernisasi tata kelola administrasi tingkat Rukun Tetangga (RT), pengelolaan kas, keamanan lingkungan, serta pelayanan warga menggunakan teknologi kecerdasan buatan (AI).
4
+
5
+
---
6
+
7
+
## 🏗️ Tech Stack
8
+
9
+
Sistem ini dikembangkan menggunakan teknologi terdepan dalam ekosistem JavaScript dan Python:
10
+
-**Frontend Framework**: Next.js 16.1.4 (App Router) dengan React 19.
11
+
-**Language**: TypeScript secara menyeluruh tipe-data ketat (strict typing).
12
+
-**Styling**: Tailwind CSS v4 untuk *utility-first* styling, dipadukan dengan konfigurasi PostCSS.
13
+
-**AI & Data Science (Backend)**: Python 3.10+ (FastAPI) untuk *Natural Language Processing*, *Computer Vision*, dan *LLM Inference* (Local LLM via Ollama/Llama 3.2).
14
+
-**Web Backend & Tooling**: Node.js ecosystem, `dotenv` untuk pengelolaan environment.
15
+
-**Testing**: `vitest` bersama `@testing-library/react` dan `jsdom` untuk _unit test_ dan _integration test_ yang secepat kilat.
16
+
-**Bot Engine**: `node-telegram-bot-api` bersama `pdfkit` (untuk auto-generate dokumen administrasi PDF).
17
+
18
+
---
19
+
20
+
## 🗄️ Database
21
+
22
+
Arsitektur data PRISMA dirancang fleksibel menyesuaikan tingkat deployment (mulai dari local tier sampai enterprise tier cloud):
23
+
1.**Cloud Database (Primary)**: @supabase/supabase-js dan PostgreSQL (Neon Tech) dengan Drizzle ORM (terpisah sesuai branch environment).
24
+
2.**Local / Edge Database**: Penggunaan `sql.js` (SQLite `prisma_demo.db`) di memori untuk keperluan fast-demo, stand-alone mode tanpa setup yang rumit.
25
+
3.**Legacy Fallback**: Kompatibilitas relasional RDBMS dengan MySQL (XAMPP basis port 3306) untuk kemudahan host di level komunitas yang lebih umum.
26
+
27
+
---
28
+
29
+
## 🎨 UI/UX Design
30
+
31
+
Kami mengadopsi standar desain **Enterprise Modern** yang intuitif dan interaktif bagi seluruh warga (dari kalangan milenial maupun senior):
32
+
-**Component Library**: Radix UI Primitives (`@radix-ui/react-*`) menjamin _accessibility_ tinggi tanpa keharusan design bawaan (A11y Compliant).
33
+
-**Smooth Animations**: Interaksi antarmuka didukung transisi elemen mulus dari `framer-motion`.
34
+
-**Theming & Color Scheme**: Menggunakan `next-themes` (Dark Mode / Light Mode Auto-detection) dengan Tailwind `clsx` & `tailwind-merge`.
35
+
-**Responsive & Mobile First**: Elemen-elemen seperti Navbar, Chatbot Widget (`chatbot.tsx`), dan layout administrasi responsif sempurna di layar perangkat *smartphone* maupun tablet secara proporsional.
36
+
-**Inti Pengalaman Warga**: Menghadirkan *floating dashboard*, sistem tiket pelaporan instan, visualisasi data kas transparan, dan navigasi yang sangat _user-friendly_.
37
+
38
+
---
39
+
40
+
## 📈 Scalability
41
+
42
+
Platform tidak hanya berjalan dalam mode _monolith_ melainkan dirancang modular:
43
+
-**Microservices Deployment**: Pemisahan jelas antara layer Presentation (Next.js port 3000), ML Model Endpoints (FastAPI port 8000), dan Vector/RAG Chat Backend (port 8001).
44
+
-**Cloud Delivery Network (CDN)**: Memanfaatkan Cloudflare Pages (lewat `deploy:cf``wrangler` CLI) dan Vercel (melalui `vercel.json` config) sehingga static asset dapat diakses global dengan *latency* amat rendah.
45
+
-**State Management**: Perluasan service dapat diskalkulasikan tanpa mengganggu operasi main UI thread. Jika traffic chat membludak, sistem dapat men-scale secara bebas *Backend Chat* (RAG Engine) saja.
46
+
47
+
---
48
+
49
+
## ⚡ Optimization
50
+
51
+
Agar aplikasi memiliki *Time to Interactive (TTI)* dan stabilitas yang unggul:
52
+
-**Build Optimization**: Memanfaatkan engine turbopack Next.js; gambar, transisi font, dan layout *server-side rendering (SSR)* berjalan *seamless*.
53
+
-**SEO & Web Indexing**: `next-sitemap` dikonfigurasikan agar pengumuman publik RT mudah dirayapi standar *search engine* bila dibuka ke ruang lingkup RT publik/nasional.
54
+
-**Testing Terstruktur**: Integrasi *Vitest* dalam konfigurasi workflow untuk menjamin tiada penurunan perfoma *regression bugs* saat rilis *fitur* baru.
55
+
56
+
---
57
+
58
+
## 🛡️ Security & Keamanan
59
+
60
+
Data kependudukan adalah hal krusial, di dalamnya termasuk keamanan privasi warga:
61
+
-**Anti XSS & Sanitization**: Layanan komunikasi dijaga dari manipulasi _scripting_ berbahaya (XSS injection) dengan implementasi lib `dompurify`, `sanitize-html`, serta `xss`. Sistem telegram bot (`sanitizeBotInput()`) memotong payload kode arbitrer secara otonom.
62
+
-**Data Encryption**: Proses hasing menggunakan algoritma modern dari `bcryptjs`.
63
+
-**Bot/Spam Protection**: Pelaporan publik di web page diamankan melalui integrasi reCAPTCHA v2/v3 (`react-google-recaptcha`).
64
+
-**Rate-Limiting Logic**: Pengaturan beban IP dengan `ip-rate-limit` pada layer Node.js & *flood guard* otomatis di layer Telegram Server untuk menahan serangan/spammer warga dengan limit standar 30 entri pesan per menit per user ID.
65
+
-**Isolated Credentials**: Token, kunci enkripsi, dan credential API diamankan di luar repositori publik menggunakan file lingkungan *strict* (`.env.bot`, `.env.local`).
66
+
67
+
---
68
+
69
+
## 🤖 AI Agents
70
+
71
+
PRISMA melampaui website RT konvensional dengan menghadirkan Kecerdasan Buatan melalui entitas asisten mandiri:
72
+
1.**Interactive RAG Web Agent (Siaga)**: Chatbot interaktif terbenam pada pojok sistem Web (`src/components/chat/chatbot.tsx`). Menghubungi API Chat RAG (Retrieval-Augmented Generation) di Python untuk memberi respons pintar terkait pedoman kepengurusan dan arahan URL *Real-time*.
73
+
2.**Autonomous Telegram Bot (24/7 Virtual Asisstant)**: Bot Telegram pintar (`scripts/telegram-bot.ts`) sebagai jalur darurat saat _web infrastructure_ tidak dibuka.
74
+
- ➜ **Fungsi Administratif Otomatis**: Membuat *Surat Pengantar* untuk warga seketika dan mencetak file output validasi berupa *PDF* (`pdfkit`).
75
+
- ➜ **Integrasi Penjawab Cepat**: Menyampaikan histori keuangan real-time kas RT, status laporan keamanan, dan integrasi _Ticket ID_ warga.
76
+
3.**Advanced AI Microservices**: `FastAPI` Engine mampu memperkirakan tren (`predict/financial`), klasifikasi visi masalah lingkungan (seperti jalanan berlubang/sampah berserakan lewat `vision/classify`), dan analisis sentimen terhadap komplain warga yang masuk (untuk memprioritaskan penyelesaian).
77
+
78
+
---
79
+
80
+
## 🚀 Quick Start (Menjalankan Sistem)
4
81
5
82
### Menjalankan Semua Services Sekaligus
6
83
7
84
```powershell
8
-
# Dari root folder
85
+
# Dari root folder, jalankan orchestrator
9
86
npm run dev:all
10
87
11
-
# Atau langsung
88
+
# Atau langsung mengeksekusi powershell script
12
89
.\run-all.ps1
13
90
```
14
91
15
92
### Menjalankan Services Secara Terpisah
16
93
17
-
```powershell
18
-
# Terminal 1: Frontend (Next.js) - Port 3000
19
-
npm run dev
20
-
21
-
# Terminal 2: AI Backend (FastAPI) - Port 8000
22
-
npm run dev:ai-backend
94
+
1.**Frontend (Next.js) - Port 3000**
95
+
```powershell
96
+
npm run dev
97
+
```
23
98
24
-
# Terminal 3: Chatbot Backend (RAG) - Port 8001
25
-
npm run dev:chatbot
26
-
```
99
+
2.**AI Backend NLP/Vision (FastAPI) - Port 8000**
100
+
```powershell
101
+
npm run dev:ai-backend
102
+
```
27
103
28
-
## 🔧 Konfigurasi Port
104
+
3.**Chatbot Retrieval Agent Backend (RAG) - Port 8001**
-`POST /chat` - RAG-based chat with Siaga assistant
72
125
73
-
## ⚙️ Environment Variables
126
+
---
127
+
128
+
## 📂 Struktur Direktori & Fungsi Subfolder (Features & Functions)
129
+
130
+
Proyek ini menggunakan arsitektur **Feature-Sliced Design** yang terpusat di direktori `src/` dan `scripts/`:
131
+
132
+
### 1. `src/app/` (Next.js App Router)
133
+
Berisi *route handlers* dan *pages* antarmuka sistem:
134
+
-**`/admin`**: Panel dashboard khusus Ketua RT/Pengurus untuk memvalidasi laporan warga, mengelola surat, dan analitik.
135
+
-**`/auth`**: Sistem registrasi warga, login, dan manajemen sesi pengguna.
136
+
-**`/keuangan`**: Modul transparansi kas RT. Berisi rekapitulasi dana dan histori pembayaran.
137
+
-**`/layanan`**: Pusat layanan mandiri (*self-service*). Termasuk pelaporan keamanan lingkungan (*Security*) komprehensif.
138
+
-**`/surat`**: Route khusus untuk memproses dan mencetak pengajuan dokumen (Surat Pengantar RT, dll).
139
+
-**`/profile` & `/settings`**: Personalisasi profil warga, data domisili, dan preferensi akun.
140
+
141
+
### 2. `src/components/` (React Components)
142
+
Berisi modul UI *reusable* pembentuk antarmuka:
143
+
-**`/chat`**: Memuat `chatbot.tsx`, antarmuka widget *floating* untuk **AI Siaga (RAG Agent)** berinteraksi via Python Backend.
144
+
-**`/home`**: Komponen layout *Landing Page* / Dashboard warga (pengumuman, info kas singkat, navigasi *shortcut*).
145
+
-**`/layout`**: Struktur kerangka aplikasi (navbar, sidebar) tertata rapi merespon ukuran perangkat *mobile-first*.
146
+
-**`/ui`**: *Base primitives* komponen (Button, Card, Input) dari Radix UI yang di-styling responsif menggunakan Tailwind CSS.
147
+
-**`pwa-install-prompt.tsx`**: Modul notifikasi mengajak warga menginstal PWA (Progressive Web App) ke ponsel.
148
+
-**`/surat`**: Form interaktif dan tampilan layout spesifik untuk formulir dokumen.
149
+
150
+
### 3. `scripts/` (Edge & Background Jobs)
151
+
-**`telegram-bot.ts`**: Hub mesin *Telegram Bot* otonom 24/7 Node.js. Menanggapi prompt warga dan men-*generate* file PDF secara mandiri langsung (`pdfkit`).
152
+
-**`generate_db.js`**: Script inisiasi dan *seeding* struktur tabel (*mock data*) otomatis untuk `prisma_demo.db` (Local SQLite Database).
0 commit comments