Frontend resmi BEM FTEIC berbasis Next.js App Router. Seluruh data konten publik dan admin melewati Go API; Supabase client di browser hanya digunakan untuk autentikasi.
- Website: https://bem-fteic.com
- API: https://api.bem-fteic.com
- Runtime: Docker Compose di VPS, frontend pada port grup
8001 - Database dan autentikasi: Supabase
- Deployment: GitHub Actions setiap push ke
main
www.bem-fteic.com diarahkan ke domain utama. Vercel tidak digunakan sebagai runtime production.
- Homepage, blog, event, galeri, dan halaman kabinet
- Login, signup whitelist, konfirmasi email, dan session cookie aman
- Dashboard dengan role
admin - CRUD blog, event, dan galeri melalui backend
- Pengelolaan profil dan signup whitelist
- Upload gambar melalui backend
- Sitemap dan metadata SEO
- Next.js 16 dan React 19
- TypeScript dan Tailwind CSS
- TanStack Query dan Zustand
- Supabase Auth serta PostgreSQL
- Biome
- Vitest
- Docker Compose dan Nginx
src/app/ route App Router
src/features/ fitur dan domain logic
src/components/ komponen UI bersama
src/layouts/ navbar, footer, dan app shell
src/lib/ API contract, query keys, pagination, dan utilitas
deploy/nginx/ reverse proxy container frontend
docs/deploy/ catatan operasional VPS
Skema database tidak disimpan di frontend. Sumber migrasi resmi berada di repository backend pada database/migrations.
Prasyarat:
- Node.js 22+
- pnpm 9
- backend lokal atau API production yang dapat diakses
- project Supabase
pnpm install
cp .env.example .env.local
pnpm devPowerShell:
pnpm install
Copy-Item .env.example .env.local
pnpm devAplikasi tersedia di http://localhost:3000.
Gunakan .env.example sebagai acuan:
NEXT_PUBLIC_API_URL_DEV=http://localhost:8080
NEXT_PUBLIC_API_URL_PROD=https://api.bem-fteic.com
NEXT_PUBLIC_SUPABASE_URL=https://PROJECT_REF.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
NEXT_PUBLIC_SITE_URL=https://bem-fteic.comJangan commit .env.local, .env.production, service-role key, database password, atau SSH private key.
Konfigurasi Auth production:
- Site URL:
https://bem-fteic.com - Redirect URL:
https://bem-fteic.com/** - Redirect URL:
https://www.bem-fteic.com/** - Redirect URL lokal:
http://localhost:3000/** - Before User Created hook: schema
public, functionhook_validate_signup
Frontend hanya menggunakan anon key untuk Supabase Auth. Otorisasi admin, validasi input, query/mutation konten, pagination, dan media lifecycle dilakukan backend. Migrasi backend mengelola tabel, fungsi, trigger, grant, dan RLS.
pnpm validate
pnpm test
pnpm build
pnpm audit --prod --audit-level=highPush ke main menjalankan validasi, membangun image bertag commit SHA, dan melakukan deployment ke VPS menggunakan:
sudo docker compose -p group1 up -dWorkflow melakukan readiness check dan rollback ke image terakhir yang berhasil apabila deployment gagal. Detail operasional terdapat di docs/deploy/vps.md.
Konfigurasi domain grup berada di:
/nginx-configs/group1/group1.conf
Terapkan perubahan dengan:
sudo apply-nginx-group1.shMapping production:
bem-fteic.comdanwww.bem-fteic.com→127.0.0.1:8001api.bem-fteic.com→127.0.0.1:8002
Jangan menjalankan setup-domain-group1.sh setelah mapping khusus ini tanpa mengecek ulang config, karena script tersebut mengarahkan seluruh hostname ke port frontend.