Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Build With T3 Stack
Anmategra platform manajemen data kemahasiswaan/lembaga di ITB. Fungsi utama:
admin, lembaga, mahasiswaTech stack: T3 Stack (Next.js, tRPC, Drizzle ORM, NextAuth, Tailwind), PostgreSQL.
packageManager di package.json pin ke [email protected])git clone <repo-url>
cd anmategra-app
cp .env.example .env
npm install
Isi .env, minimal DATABASE_URL bener, contoh:
DATABASE_URL="postgresql://postgres:password@localhost:5432/anmategra"
husky prepare hook otomatis jalan pas npm install (setup lint-staged pre-commit).
Opsi A — manual:
psql -U postgres
CREATE DATABASE anmategra;
\q
npm run db:push
Opsi B — pakai Docker (lihat scripts/start-database.sh):
./scripts/start-database.sh
npm run db:push
Opsi C — app + database sekaligus di Docker (compose.local.yml):
docker compose -f compose.local.yml up --build
5433, app (next dev, hot reload) di 3000. Ubah lewat APP_PORT / DB_PORT.anmategra.dump di folder induk repo, dump itu dipulihkan saat pertama kali jalan, lalu db:migrate menyusulkan migrasi yang belum ada. Lokasi lain: set DB_DUMP_DIR / DB_DUMP_FILE..env.docker compose -f compose.local.yml exec app node docker/local/dev-login.mjs <admin|lembaga|mahasiswa> [email], lalu tempel baris yang dicetak ke console browser. Dump tidak berisi admin, jadi ubah dulu role satu user di database lokal.docker compose -f compose.local.yml down -v.Perintah db lain yang tersedia:
npm run db:generate — generate migration dari schema (drizzle-kit generate)npm run db:migrate — jalanin migration (drizzle-kit migrate)npm run db:studio — buka Drizzle Studio buat liat datanpm run db:seed — generate csv + seed database (dev only)npm run db:seed-lembaga — seed akun lembaga resmi dari src/server/db/seeding/data/lembaga-official.csv (idempotent)npm run db:seed-mahasiswa -- --file <csv> — impor mahasiswa (misalnya satu angkatan baru); hanya menambah, format di src/server/db/seeding/data/README.mdnpm run db:backfill-lembaga-descriptions — lengkapi deskripsi lembaga yang kosongnpm run db:refresh-lembaga — jalanin scripts/refresh-lembaga.sh (refresh data lembaga dari sumber resmi)npm run db:summarize-lembaga — jalanin scripts/km-summarize.ts (ringkas profil lembaga)npm run db:clear — kosongin databasenpm run dev
Buka http://localhost:3000.
Script lain:
npm run build — build productionnpm run start — jalanin hasil buildnpm run lint — cek lint (ESLint, eslint.config.mjs). Pelanggaran lama dicatat di eslint-suppressions.json; pelanggaran baru membuat CI gagal. Setelah memperbaiki pelanggaran lama, jalankan npm run lint:prune dan commit perubahan file itu.npm run typecheck — cek tipe TypeScript (tsc --noEmit)npm test — jalankan tes otomatis (Vitest); lihat Menjalankan Tes. npm run test:watch mengulang tes setiap berkas berubah.npm run docs — regenerate dokumentasi API & database di docs/api/Tes memakai Vitest dan PostgreSQL asli, bukan mock, supaya aturan akses diuji terhadap skema yang sama dengan produksi.
npm test
TEST_DATABASE_URL; bawaannya postgresql://postgres:password@localhost:5432/anmategra_test. Nama database wajib memuat kata test; kalau tidak, tes menolak jalan karena tiap kasus mengosongkan tabel.src/test/global-setup.ts membuat database itu bila belum ada (dari template0) dan menerapkan semua migrasi di drizzle/. Run berikutnya melewati migrasi yang sudah diterapkan..test.ts dan diletakkan di samping kodenya. Helper database dan pabrik data ada di src/test/test-db.ts..env lengkap: kode yang diuji tidak boleh memuat ~/env. Prosedur yang butuh sesi atau NextAuth sebaiknya diuji lewat logika yang dipisah, seperti src/server/api/access.ts.npm test pada job Test dengan layanan PostgreSQL 15.Mahasiswa login dengan akun @mahasiswa.itb.ac.id lewat Microsoft Entra ID milik ITB. Anmategra
punya app registration sendiri di directory ITB:
https://anmategra.com/api/auth/callback/azure-ad, ditambah
http://localhost:<APP_PORT>/api/auth/callback/azure-ad untuk lokal.AZURE_AD_CLIENT_SECRET.
Secret punya tanggal kedaluwarsa: catat tanggalnya dan perbarui sebelum lewat. Secret yang
kedaluwarsa membuat login Microsoft gagal dengan ?error=OAuthCallback.AZURE_AD_TENANT_ID = db6e1183-4c65-405c-82ce-7cd53fa6e9dc (directory ITB). Token dari tenant
lain ditolak, walaupun email-nya berakhiran @mahasiswa.itb.ac.id.This is the beginning of the README. Read the rest at the original. Read the full README ↗