No description
Find a file
2026-07-01 19:40:07 +07:00
.agents/rules Initial commit 2026-07-01 19:30:03 +07:00
.stfolder Initial commit 2026-07-01 19:30:03 +07:00
docs/superpowers Initial commit 2026-07-01 19:30:03 +07:00
drizzle Initial commit 2026-07-01 19:30:03 +07:00
public Initial commit 2026-07-01 19:30:03 +07:00
scripts Initial commit 2026-07-01 19:30:03 +07:00
src Initial commit 2026-07-01 19:30:03 +07:00
.dockerignore Initial commit 2026-07-01 19:30:03 +07:00
.env.example Initial commit 2026-07-01 19:30:03 +07:00
.gitignore Initial commit 2026-07-01 19:30:03 +07:00
components.json Initial commit 2026-07-01 19:30:03 +07:00
docker-compose.yml Initial commit 2026-07-01 19:30:03 +07:00
DOCKER_DEPLOY.md Initial commit 2026-07-01 19:30:03 +07:00
Dockerfile Initial commit 2026-07-01 19:30:03 +07:00
drizzle.config.ts Initial commit 2026-07-01 19:30:03 +07:00
implementation_plan.md Initial commit 2026-07-01 19:30:03 +07:00
index.html Initial commit 2026-07-01 19:30:03 +07:00
KEPALA MASCOT.png Initial commit 2026-07-01 19:30:03 +07:00
MASCOT.png Initial commit 2026-07-01 19:30:03 +07:00
package-lock.json Initial commit 2026-07-01 19:30:03 +07:00
package.json Initial commit 2026-07-01 19:30:03 +07:00
README.md docs: add README.md 2026-07-01 19:37:45 +07:00
tsconfig.json Initial commit 2026-07-01 19:30:03 +07:00
tsconfig.tsbuildinfo Initial commit 2026-07-01 19:30:03 +07:00
vite.config.ts Initial commit 2026-07-01 19:30:03 +07:00

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

  1. Salin .env.example ke .env (atau buat file .env baru) dan isi kredensial yang dibutuhkan seperti konfigurasi OAuth, Storage, dan Enkripsi.

  2. Install dependensi untuk proyek:

    npm install
    
  3. (Opsional) Jalankan migrasi database jika Drizzle belum setup:

    npx drizzle-kit push
    
  4. Jalankan server backend (Hono) dan frontend (Vite) secara bersamaan:

    npm run dev:all
    

    Alternatif terpisah:

    • Menjalankan Frontend saja: npm run dev
    • Menjalankan Backend saja: npm run server
  5. Aplikasi frontend dapat diakses di http://localhost:5173 dan backend API di port 3001.

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 Casdoor
  • GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET — Konfigurasi login Google OAuth
  • GOOGLE_SERVICE_ACCOUNT_EMAIL, GOOGLE_PRIVATE_KEY — Kredensial untuk integrasi Google Sheets
  • GOOGLE_DRIVE_FOLDER_ID — Target folder untuk penyimpanan dokumen di GDrive
  • S3_REGION, S3_ENDPOINT, S3_BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY — Konfigurasi penyimpanan cloud S3 / Minio
  • SIA_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 SQLite
    • src/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 frontend
  • src/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 backend
  • src/types/ — Definisi TypeScript untuk model data frontend
  • scripts/ — Script utilitas (seperti migrasi data spesifik)
  • drizzle/ — File SQL hasil generate migrasi dari Drizzle ORM