Skip to content

Repository files navigation

Neuvarixal Dashboard

CMS (Next.js 15 App Router) untuk mengelola konten y-blogpage — kelola blog, kategori, tag, user, dan profil. Dipakai oleh user dengan role ADMINISTRATOR, EDITOR, AUTHOR, atau SUBSCRIBER (lihat pembagian akses di README y-backend).

Repo ini adalah salah satu dari 4 repo dalam sistem Neuvarixal:

Repo Peran
y-backend REST API
y-dashboard (repo ini) CMS untuk mengelola blog
y-blogpage Situs blog publik
neuvarixal-deploy docker-compose, Terraform (AWS), CI/CD, monitoring

Tech stack

  • Next.js 15 (App Router) + React 19 + TypeScript
  • Tailwind CSS + shadcn/ui (Radix primitives)
  • Tiptap (rich text editor untuk konten blog)
  • Axios (lihat lib/axiosInstance.ts) + SWR untuk data fetching ke y-backend
  • Context API (context/AuthContext.tsx) untuk state autentikasi + route guard

Menjalankan secara lokal

Cara termudah lewat neuvarixal-deploy (docker compose up sekaligus menjalankan backend & database yang dibutuhkan — lihat README repo itu). Untuk jalan berdiri sendiri:

pnpm install
# buat .env.local, isi minimal:
#   NEXT_PUBLIC_BASE_URL=http://localhost:4000/api
#   NEXT_PUBLIC_ASSETS_URL=http://localhost:4000
#   NEXT_PUBLIC_BLOG_URL=http://localhost:3002
pnpm dev

Perlu instance y-backend yang sudah jalan di NEXT_PUBLIC_BASE_URL/NEXT_PUBLIC_ASSETS_URL di atas.

Environment variables

Semua env yang dipakai bersifat NEXT_PUBLIC_* (ter-bundle ke JavaScript sisi browser saat build — bukan secret, jangan taruh apa pun rahasia di sini).

Variabel Contoh Keterangan
NEXT_PUBLIC_BASE_URL https://api.example.com/api Base URL API backend, termasuk suffix /api (dipakai langsung sebagai baseURL axios — beda konvensi dari y-blogpage!)
NEXT_PUBLIC_ASSETS_URL https://api.example.com Base URL untuk file statis (foto profil, cover blog) — tanpa suffix /api
NEXT_PUBLIC_BLOG_URL https://blog.example.com URL situs blog publik, dipakai fitur "copy link blog" di halaman detail

Karena NEXT_PUBLIC_* di-bake saat build, mengubah nilainya di server/CI tidak berlaku ke image yang sudah ter-build — perlu build ulang (lihat bagian Deploy).

Struktur proyek

app/
  (auth)/login/            # halaman login
  (blogs)/blogs/
    (blogs)/                # list, create, edit, view blog
    (categories)/categories/
    (tags)/tags/
  (users)/users/            # manajemen user (khusus ADMINISTRATOR)
  (profile)/profile/edit/   # edit profil sendiri
  (_documentation)/docs/    # halaman dokumentasi internal
  page.tsx                  # dashboard home (chart ringkasan)
context/AuthContext.tsx     # state login + redirect ke /login kalau belum auth
lib/axiosInstance.ts        # instance axios + interceptor redirect saat 401/403
services/                   # pemanggil API per resource (blog, user, tag, ...)

Autentikasi & route guard

Login menyimpan cookie httpOnly dari backend; AuthContext mengecek status lewat GET /api/auth/check dan me-redirect ke /login kalau belum authenticated (lihat komentar di context/AuthContext.tsx — sebelumnya route ini tidak dijaga sama sekali). lib/axiosInstance.ts juga otomatis redirect ke /login kalau ada response 401/403 dari API mana pun.

Penting: kalau ada endpoint backend baru yang butuh login tapi lupa dipasangi middleware accessValidation di sisi backend, gejalanya PERSIS seperti route guard yang salah — halaman dashboard yang manggil endpoint itu langsung "terlempar" ke /login walau sudah login. Cek dulu response API-nya sebelum curiga ke kode frontend.

Docker

dashboard.Dockerfile — multi-stage build, NEXT_PUBLIC_* di atas di-bake lewat ARG/ENV saat docker build (lihat contoh build-arg di neuvarixal-deploy/docker-compose.yml).

Deploy

CI/CD (.github/workflows/build.yml): setiap push ke main, build image dengan NEXT_PUBLIC_* dari Repository Variables GitHub (Settings → Secrets and variables → Actions → Variables), push ke GHCR (ghcr.io/rezafardan/y-dashboard), lalu memicu deploy otomatis di repo neuvarixal-deploy. Kalau mengubah salah satu Repository Variable di atas, wajib re-run workflow build ini supaya nilai baru ikut ter-bake — sekadar mengubah Variable tidak berpengaruh ke image yang sudah ada. Detail penuh alur CI/CD, infrastruktur (Terraform/AWS), dan monitoring ada di README repo neuvarixal-deploy.

About

Yukti ID Prototype Web Panel Dashboard

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages