Terminal-first simulator untuk praktikum Sistem Operasi (Linux command, Bash, C) + fitur ujian (student/admin) dengan Supabase.
- Terminal simulator Ubuntu (frontend only)
- Editor
gedit/nanovia modal CodeMirror - Filesystem simulasi per-user (localStorage)
- Role login sederhana:
studentdanadmin - Submit ujian oleh student
- Dashboard admin untuk review submission, beri nilai, feedback
APP_USERS='[
{"username":"admin","password":"admin123","name":"Admin","role":"admin"},
{"username":"praktikan1","password":"praktikum123","name":"Praktikan 1","role":"student"},
{"username":"praktikan2","password":"praktikum123","name":"Praktikan 2","role":"student"}
]'
AUTH_SECRET="ubah-dengan-random-string"
SUPABASE_URL="https://xxxxx.supabase.co"
SUPABASE_SERVICE_ROLE_KEY="xxxxx"Jalankan di SQL Editor Supabase:
create extension if not exists pgcrypto;
create table if not exists public.submissions (
id uuid primary key default gen_random_uuid(),
student_username text not null,
student_name text not null,
exam_title text default 'Ujian Sistem Operasi',
files_json jsonb not null,
terminal_history jsonb,
status text default 'submitted',
score integer,
feedback text,
created_at timestamptz default now(),
updated_at timestamptz default now()
);
create or replace function public.set_updated_at()
returns trigger as $$
begin
new.updated_at = now();
return new;
end;
$$ language plpgsql;
drop trigger if exists trg_submissions_updated_at on public.submissions;
create trigger trg_submissions_updated_at
before update on public.submissions
for each row
execute function public.set_updated_at();npm install
npm run dev- Login:
praktikan1 / praktikum123 - Command:
mkdir latihan-ccd latihan-cgedit angka.c(isi kode, Save)lsgcc angka.c -o angka./angka
- Klik
Submit Ujiandi header terminal.
- Login:
admin / admin123 - Buka
/admin. - Klik
Lihat Detail. - Cek file dan terminal history.
- Isi score + feedback, klik
Save Nilai.
- Push ke GitHub.
- Import repo ke Vercel.
- Isi semua env variable (
APP_USERS,AUTH_SECRET,SUPABASE_URL,SUPABASE_SERVICE_ROLE_KEY). - Deploy.