CORE.FTI (Campus Operational Resource Environment) adalah aplikasi web operasional Fakultas Teknologi Informasi UKSW untuk pengelolaan ruangan, inventaris, peminjaman alat, layanan tata usaha, pengguna, jadwal, dan pelaporan internal.
Dokumen ini hanya berisi informasi teknis. Kredensial, token, password, app password, client secret, dan akun awal tidak boleh disimpan di README atau repository.
- Frontend: React 18, TypeScript, Vite, Tailwind CSS, lucide-react
- Backend: Node.js, Express, PostgreSQL
- Auth: JWT, bcrypt
- File/PDF/Export: multer, puppeteer, exceljs, jspdf, html-to-image
- Email: nodemailer
- Integrasi: Google SSO, Google Calendar, SIASAT routes
| Path | Fungsi |
|---|---|
App.tsx |
Routing utama frontend dan layout aplikasi |
components/ |
Komponen UI dan komponen fitur umum |
pages/ |
Halaman utama aplikasi |
pages_tu/ |
Modul layanan tata usaha |
hooks/ |
React hooks untuk data dan state |
services/api.ts |
Wrapper API frontend |
backend/routes/ |
Route Express per domain fitur |
backend/middleware/ |
Middleware backend, termasuk auth dan RBAC |
backend/config/ |
Konfigurasi database dan CORS |
backend/utils/ |
Helper backend, mailer, logger, generator surat |
backend/lettersTU/ |
Template surat TU |
scripts/ |
Script utilitas dan migrasi tambahan |
database_schema.sql |
Schema awal database |
dist/ |
Output build frontend, tidak untuk diedit manual |
- Node.js 18 atau lebih baru
- npm
- PostgreSQL 14 atau lebih baru
- Akses SMTP bila fitur email digunakan
- Google Cloud OAuth/API configuration bila SSO atau Calendar digunakan
npm installBuat database PostgreSQL sesuai environment target, lalu import schema:
psql -U <db_user> -d <db_name> -f database_schema.sqlJika ada migrasi tambahan di scripts/, jalankan sesuai urutan rilis yang berlaku untuk environment tersebut.
Buat file .env di root project berdasarkan .env.example, lalu isi nilainya dari secret manager atau konfigurasi environment yang aman. Jangan commit file .env.
Variable utama:
| Variable | Keterangan |
|---|---|
DB_USER |
User database PostgreSQL |
DB_PASSWORD |
Password database PostgreSQL |
DB_HOST |
Host database |
DB_NAME |
Nama database |
DB_PORT |
Port database |
DB_SSL |
Mode SSL database |
JWT_SECRET |
Secret untuk signing JWT |
PORT |
Port backend Express |
VITE_API_BASE_URL |
Base URL API untuk frontend |
VITE_INSTITUTION_URL |
URL institusi |
VITE_GOOGLE_CLIENT_ID |
Google OAuth client ID yang memang aman untuk client |
VITE_GOOGLE_API_KEY |
Google API key public yang sudah dibatasi referrer |
EMAIL_USER |
Akun pengirim email |
EMAIL_PASS |
Secret SMTP/app password dari secret manager |
EMAIL_FROM_NAME |
Nama pengirim email |
EMAIL_HOST |
Host SMTP |
EMAIL_PORT |
Port SMTP |
EMAIL_TLS |
Mode TLS SMTP |
Catatan keamanan:
- Nilai secret tidak boleh ditulis di README, commit, screenshot, issue, atau log publik.
- Secret production harus dibuat unik per environment.
- Key yang dipakai browser wajib dibatasi dengan HTTP referrer restriction.
- Secret server-side tidak boleh diekspos melalui Vite bundle.
Backend:
npm run serverFrontend:
npm run devDefault development Vite berjalan di port 5173, sedangkan backend mengikuti PORT atau konfigurasi runtime backend.
npm run buildPreview build frontend:
npm run previewUntuk production backend, jalankan server.js melalui process manager yang sesuai dengan environment deployment, misalnya systemd, PM2, Docker, atau platform runtime lain. Pastikan NODE_ENV=production dan semua environment variable production sudah tersedia.
Tabel utama:
| Tabel | Deskripsi |
|---|---|
users |
Data pengguna aplikasi |
user_tokens |
Sesi dan refresh token pengguna |
staff |
Data staff/laboran |
rooms |
Data ruangan |
room_computers |
Spesifikasi komputer per ruangan |
bookings |
Header pemesanan ruangan |
booking_schedules |
Jadwal pemesanan ruangan |
inventory |
Data inventaris |
transactions |
Header transaksi peminjaman alat |
loans |
Detail peminjaman alat |
item_movements |
Riwayat perpindahan inventaris |
notifications |
Notifikasi aplikasi |
system_settings |
Pengaturan global aplikasi |
pkl_students |
Data PKL/magang |
active_student_requests |
Pengajuan surat aktif kuliah |
observation_requests |
Pengajuan surat observasi |
tu_letter_number_counters |
Counter nomor surat TU |
Akun awal untuk production harus dibuat melalui prosedur bootstrap internal yang aman. Jangan menanam akun default atau kredensial statis di schema, dokumentasi, atau source code.
| Command | Fungsi |
|---|---|
npm run dev |
Menjalankan frontend Vite |
npm run server |
Menjalankan backend Express dalam mode watch |
npm run build |
Type check dan build frontend production |
npm run preview |
Preview hasil build frontend |
npm run lint |
Menjalankan ESLint bila konfigurasi lint tersedia |
Semua endpoint backend berada di bawah prefix /api, kecuali root health text endpoint.
Domain route utama:
| Domain | Contoh Endpoint | Fungsi |
|---|---|---|
| Auth | /api/login, /api/auth/refresh, /api/auth/verify |
Login, refresh session, verifikasi auth |
| Users | /api/users |
Manajemen user |
| Rooms | /api/rooms |
Manajemen ruangan |
| Bookings | /api/bookings |
Pemesanan ruangan |
| Inventory | /api/inventory, /api/item-movements |
Inventaris dan perpindahan barang |
| Loans | /api/loans |
Peminjaman alat |
| Staff/PKL | /api/staff, /api/pkl |
Data staff dan PKL |
| Settings | /api/settings/* |
Maintenance, announcement, SSO config, backup/restore |
| TU | /api/active-student, /api/observation-requests, /api/tu/* |
Layanan tata usaha |
| SIASAT | /api/siasat/* |
Integrasi data SIASAT |
| Lecturer/Study Program | /api/lecturers, /api/study-programs |
Data dosen dan program studi |
Detail payload dan authorization policy mengikuti implementasi route masing-masing.
Sebelum deploy:
- Pastikan semua secret disediakan melalui secret manager atau environment runtime.
- Pastikan
.env, credential JSON, dump database, dan file privat lain tidak ikut artifact deployment. - Jalankan build dan test gate yang berlaku untuk environment tersebut.
- Jalankan migrasi database secara eksplisit dan terkontrol.
- Pastikan CORS hanya mengizinkan domain resmi.
- Pastikan TLS aktif untuk trafik publik dan koneksi database production.
- Pastikan process manager memiliki restart policy dan log retention.
- Pastikan backup database berjalan dari pipeline operasional yang aman.
- Pastikan akun awal dan role production dibuat melalui prosedur bootstrap internal.
Database tidak tersambung:
- Pastikan PostgreSQL berjalan dan dapat diakses dari host aplikasi.
- Pastikan environment variable database sudah benar.
- Pastikan firewall, SSL mode, dan network policy sesuai target deployment.
Frontend tidak bisa memanggil API:
- Pastikan
VITE_API_BASE_URLsesuai domain backend. - Pastikan backend berjalan.
- Pastikan CORS mengizinkan origin frontend yang benar.
Email gagal terkirim:
- Pastikan konfigurasi SMTP tersedia di environment runtime.
- Pastikan akun pengirim mengizinkan metode autentikasi yang digunakan.
- Cek log backend untuk status koneksi mailer.
Build gagal:
- Jalankan
npm installulang. - Pastikan versi Node.js sesuai prasyarat.
- Hapus cache build lokal bila diperlukan, lalu ulangi
npm run build.
- Jangan menulis secret di log aplikasi.
- Jangan mengirim credential melalui chat, issue tracker, atau dokumentasi publik.
- Gunakan akun dan role sesuai prinsip least privilege.
- Review ulang route authorization sebelum membuka aplikasi ke jaringan publik.
- Simpan backup dan artifact deployment di lokasi yang memiliki access control.
Copyright FTI UKSW. All rights reserved.