Static Astro + Vue frontend for Project Based Learning at Jurusan Teknologi Informasi Politeknik Negeri Malang. Supabase handles auth, data, and storage. GitHub Pages hosts the built site.
- Astro 6
- Vue 3
- Supabase Auth, Postgres, and Storage
- GitHub Pages via GitHub Actions
- Copy
.env.exampleto.env. - Fill
PUBLIC_SUPABASE_URLandPUBLIC_SUPABASE_PUBLISHABLE_KEY. - Run
npm install. - Run
npm run dev.
- Create a Supabase project.
- Create two storage buckets:
project-publicproject-private
- Run
supabase/schema.sqlin the SQL editor. - Create the bootstrap admin auth user with email
dhanifudin@polinema.ac.id. - Run
select public.backfill_bootstrap_admin();if the auth user existed before the schema was applied.
- A trigger on
auth.userscreates or updatespublic.profiles. - The user whose email matches
public.app_settings.default_admin_emailis assigned theadminrole automatically. - Admins can open
/admin/usersto promote or demote users.
- Teams can edit while their
submission_windowsrow is active and the current time is withinstarts_atandends_at. - After the deadline, data becomes read-only for team users.
- Teams can still download their own private final report after the deadline.
- Admins are not blocked by submission windows.
- The workflow uses
PUBLIC_SUPABASE_URLandPUBLIC_SUPABASE_PUBLISHABLE_KEYfrom GitHub repository variables. astro.config.mjsderives the correctbaseautomatically from the GitHub repository name in CI.- Public project detail pages use
project?slug=...instead of dynamic[slug]routes because GitHub Pages is fully static.