Skip to content

About

ZDNCH BELAJAR CBT app

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ZDNCH BELAJAR CBT

Aplikasi CBT dan modul latihan pribadi berbasis Node.js, Express, InsForge PostgreSQL, InsForge Storage, HTML/CSS/JavaScript murni, dan MathJax CDN.

Tidak ada integrasi AI, API AI, atau logika berbasis AI di dalam aplikasi. Database tidak berisi dummy data atau seeder.

Fitur Utama

  • UI penuh Bahasa Indonesia.
  • InsForge Auth: daftar/masuk email, Google OAuth, dan keluar akun.
  • Backend Express stateless, siap deploy ke Dokploy.
  • Database memakai InsForge PostgreSQL.
  • File lampiran memakai InsForge Storage, bukan folder upload lokal.
  • Row Level Security membatasi data per user_id; user hanya bisa membaca/menulis datanya sendiri.
  • Soal, opsi, pembahasan, flashcard, Adu Kata, dan Fill-in-the-Blank mendukung LaTeX MathJax dan tag HTML gambar.
  • Input soal manual, bulk JSON, preview ujian, simulasi CBT 2 kolom, timer, navigasi warna, skor +4/-1/0, dan hasil pembahasan.
  • Modul tambahan: Flashcard, Adu Kata, dan Fill-in-the-Blank.

Kebutuhan Lokal

  • Node.js 20 disarankan.
  • npm.
  • Akun/proyek InsForge.

Setup InsForge

Login dan link project memakai CLI InsForge. Jangan simpan user API key di repository.

npx @insforge/cli login --user-api-key <INSFORGE_USER_API_KEY>
npx @insforge/cli link --project-id 99688844-c482-443e-b7c8-08b217610538

Buat tabel kosong dengan menjalankan SQL di:

scripts/insforge-schema.sql

File tersebut membuat tabel, kolom user_id, attachment metadata, RLS policies, dan sample awal Flashcard/Fill-in-the-Blank Bahasa Inggris untuk user pertama yang tersedia.

Pastikan bucket storage dengan nama berikut tersedia di InsForge:

uploads

Nama bucket bisa diganti lewat INSFORGE_STORAGE_BUCKET.

Environment Variable

Salin contoh env untuk lokal:

copy .env.example .env

Isi nilai rahasia secara lokal saja. Jangan commit .env.

NODE_ENV=production
PORT=3000
INSFORGE_BASE_URL=https://acfzi5wy.ap-southeast.insforge.app
INSFORGE_ANON_KEY=
INSFORGE_STORAGE_BUCKET=uploads

Keterangan:

  • INSFORGE_BASE_URL: base URL backend InsForge.
  • INSFORGE_ANON_KEY: anon key dari dashboard/project InsForge.
  • INSFORGE_STORAGE_BUCKET: bucket untuk gambar.

Instalasi Lokal

npm install
npm start

Buka:

  • Beranda: http://localhost:3000
  • Input Soal: http://localhost:3000/input-soal
  • Mulai Simulasi: http://localhost:3000/simulasi
  • Flashcard: http://localhost:3000/flashcard
  • Adu Kata: http://localhost:3000/adu-kata
  • Fill-in-the-Blank: http://localhost:3000/fill-blank

Autentikasi

Buka:

http://localhost:3000/auth

Fitur yang tersedia:

  • Daftar/Masuk email dan kata sandi.
  • Masuk dengan Google OAuth.
  • Keluar akun dari tombol Keluar di topbar.

Semua endpoint data utama membutuhkan bearer token user. Data questions, attempts, attempt_answers, flashcards, word_quizzes, dan cloze_tests dibatasi oleh RLS user_id = auth.uid().

Upload File

Di halaman Input Soal, gunakan panel Upload File ke InsForge.

Aplikasi akan menghasilkan tag seperti:

<img src="https://..." alt="">

Tempel tag tersebut ke teks soal, opsi jawaban, pembahasan, flashcard, Adu Kata, atau Fill-in-the-Blank.

File yang diupload dari form ini juga otomatis dilampirkan ke soal manual berikutnya yang disimpan.

Deploy ke GitHub

Pastikan .env tidak ikut commit:

git status --ignored

Perintah awal dari project lokal ke GitHub:

git init
git branch -M main
git add .
git status
git commit -m "Initial ZDNCH BELAJAR CBT app"
git remote add origin https://github.com/<username>/<repo>.git
git push -u origin main

Jika repository sudah pernah di-init, mulai dari git add ..

Deploy ke Dokploy

  1. Buat aplikasi baru di Dokploy dari repository GitHub.
  2. Pilih mode build dari Dockerfile.
  3. Set port aplikasi ke 3000.
  4. Isi environment variables secara manual:
NODE_ENV=production
PORT=3000
INSFORGE_BASE_URL=https://acfzi5wy.ap-southeast.insforge.app
INSFORGE_ANON_KEY=<isi dari InsForge>
INSFORGE_STORAGE_BUCKET=uploads
  1. Deploy.

Jangan memasukkan token atau isi .env ke GitHub. DOKPLOY_ADMIN_TOKEN bukan environment aplikasi web; token itu hanya credential operator untuk menjalankan API Dokploy dari luar aplikasi.

Docker

Build lokal:

docker build -t zdnch-belajar-cbt .

Run lokal:

docker run --env-file .env -p 3000:3000 zdnch-belajar-cbt

Utilitas API Dokploy

Boilerplate tersedia di:

utils/dokployService.js

Fungsi yang tersedia:

  • getSystemHealth(): GET /settings.health
  • restartDockerContainer(containerId): POST /docker.restartContainer

Token selalu dibaca dari process.env.DOKPLOY_ADMIN_TOKEN hanya saat utilitas ini dijalankan sebagai tool/operator script. Jangan set token ini sebagai environment runtime aplikasi CBT di Dokploy.

About

ZDNCH BELAJAR CBT app

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages