| .agents/rules | ||
| .stfolder | ||
| docs/superpowers | ||
| drizzle | ||
| public | ||
| scripts | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| components.json | ||
| docker-compose.yml | ||
| DOCKER_DEPLOY.md | ||
| Dockerfile | ||
| drizzle.config.ts | ||
| implementation_plan.md | ||
| index.html | ||
| KEPALA MASCOT.png | ||
| MASCOT.png | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsconfig.tsbuildinfo | ||
| vite.config.ts | ||
Sistem Informasi Akademik (SIA) / SITONK
Aplikasi Sistem Informasi Akademik dengan fitur manajemen siswa, absensi, rapor, perpustakaan digital, persuratan, dan integrasi penyimpanan cloud.
Arsitektur Singkat
- Backend: Node.js (menggunakan Hono framework +
@hono/node-server) - Database: SQLite (
better-sqlite3) dengan Drizzle ORM (drizzle-orm) - Frontend: React + Vite + React Router
- Styling: Tailwind CSS v4 + komponen UI berbasis shadcn/ui
- Auth: Mendukung Casdoor OIDC dan Google OAuth, enkripsi password lokal dengan bcrypt
- Storage: Abstraksi penyimpanan lokal dan cloud (S3-compatible API, Google Drive)
- Ekspor/Impor: Parsing file Excel (
xlsx), OCR/PDF (pdf-parse,html2pdf.js)
Local Development
-
Salin
.env.exampleke.env(atau buat file.envbaru) dan isi kredensial yang dibutuhkan seperti konfigurasi OAuth, Storage, dan Enkripsi. -
Install dependensi untuk proyek:
npm install -
(Opsional) Jalankan migrasi database jika Drizzle belum setup:
npx drizzle-kit push -
Jalankan server backend (Hono) dan frontend (Vite) secara bersamaan:
npm run dev:allAlternatif terpisah:
- Menjalankan Frontend saja:
npm run dev - Menjalankan Backend saja:
npm run server
- Menjalankan Frontend saja:
-
Aplikasi frontend dapat diakses di
http://localhost:5173dan backend API di port3001.
Build Artefak
Untuk mem-build proyek ke production:
npm run build
Perintah ini akan melakukan kompilasi TypeScript (tsc -b) dan mem-build bundle frontend menggunakan Vite (vite build) yang output-nya akan berada di folder dist.
Environment Variables Utama
Beberapa environment variables penting yang perlu Anda atur di .env:
MASTER_KEY(wajib) — Master key untuk enkripsi data sensitif (AES-256-GCM)CASDOOR_CLIENT_ID,CASDOOR_CLIENT_SECRET,CASDOOR_ENDPOINT— Konfigurasi SSO CasdoorGOOGLE_OAUTH_CLIENT_ID,GOOGLE_OAUTH_CLIENT_SECRET— Konfigurasi login Google OAuthGOOGLE_SERVICE_ACCOUNT_EMAIL,GOOGLE_PRIVATE_KEY— Kredensial untuk integrasi Google SheetsGOOGLE_DRIVE_FOLDER_ID— Target folder untuk penyimpanan dokumen di GDriveS3_REGION,S3_ENDPOINT,S3_BUCKET,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY— Konfigurasi penyimpanan cloud S3 / MinioSIA_INTEGRATION_KEY,DIGITAL_LIBRARY_URL— Kredensial untuk integrasi sistem perpustakaan eksternal
Struktur Folder
src/server/— Semua kode backend (Hono API, DB config, routing)src/server/db/— Skema Drizzle ORM dan setup SQLitesrc/server/routes/— Endpoint API (auth, siswa, guru, surat, arsip, dll)src/server/utils/— Utility backend (storage abstraksi, integrasi Google, oauth, parser file)
src/pages/— Halaman/tampilan (Views) aplikasi React frontendsrc/components/— Komponen UI reusable (termasuk hasil instalasi shadcn/ui)src/contexts/— React Context (contoh: AuthContext)src/services/— Axios / API client logic dari sisi frontend ke backendsrc/types/— Definisi TypeScript untuk model data frontendscripts/— Script utilitas (seperti migrasi data spesifik)drizzle/— File SQL hasil generate migrasi dari Drizzle ORM