Skip to content

About

Website of Coffee Shop Mitra Industri Vocational High School

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Mitra Coffeeshop Logo

Mitra Coffeeshop

Website publik dan panel admin untuk Mitra Coffeeshop, dibangun dengan TanStack Start, React 19, TypeScript, Tailwind CSS, Node.js, dan SQLite.

Menjalankan lokal

Gunakan Node.js 22+ dan npm. Bun tidak dipakai sebagai runtime karena backend menggunakan node:sqlite.

npm ci
cp .env.example .env.local

Isi .env.local dengan password awal minimal 12 karakter dan session secret minimal 32 karakter. Session secret bisa dibuat dengan:

openssl rand -base64 32

Jalankan pada dua terminal:

npm run dev
npm run dev:admin

Kedua proses membaca .env.local dan memakai direktori COFFEE_DATA_DIR yang sama (default .data/content.sqlite). Port publik lokal memakai 8082; port 8080 dapat tetap dipakai aplikasi lain. Setelah akun admin pertama tersimpan, ganti username atau password dari menu Akun di panel admin.

Menggunakan admin

  • Menu: cari/filter menu, tambah menu/kategori, klik menu untuk mengedit harga/foto/status. Label dan warna berada di Pengaturan tambahan.
  • Galeri: tambah/ganti foto, edit judul dan tag, atur tampil/sembunyi serta urutan.
  • Beranda: pilih Teks hero, Foto, atau Promo & strip; preview mengikuti draft secara realtime.
  • Informasi Toko: kontak, tautan pemesanan, alamat, jam buka, dan FAQ.
  • Akun: perbarui kredensial dengan verifikasi password saat ini.

Selesai edit menutup editor tanpa memublikasikan. Simpan memublikasikan seluruh draft; Batalkan draft mengembalikan versi terakhir yang disimpan. Simpan menunggu upload selesai. Jika tab lain lebih dulu menyimpan, panel menolak penimpaan dan mempertahankan draft.

Kebutuhan lengkap dan pengembangan berikutnya: PRD Admin. Hasil verifikasi dan batas QA: audit admin.

Pemeriksaan release

npm run check
npm run build
npm audit --omit=dev

Audit dependensi pada 5 Oktober 2026 melaporkan 0 vulnerability, baik dengan --omit=dev maupun audit seluruh dependensi. Jalankan ulang saat menyiapkan release karena advisory dapat berubah.

Arsitektur produksi

Build menghasilkan server Node di .output/server/index.mjs. Satu build dijalankan sebagai dua service terpisah:

  • mitra-coffeeshop.service → 127.0.0.1:3001 untuk domain publik.
  • mitra-coffeeshop-admin.service → 127.0.0.1:3002 untuk subdomain admin.

Keduanya berbagi /home/it/.local/share/mitra-coffeeshop untuk database dan upload. Nginx hanya meneruskan traffic domain publik ke port 3001 dan subdomain admin ke port 3002.

Deploy pertama ke server

Prasyarat:

  • DNS coffeeshop.itmivhs.net dan admin-coffeeshop.itmivhs.net mengarah ke IP server.
  • Server memiliki Git, Nginx, Certbot, Node.js 22+, npm, dan user deployment bernama it.
  • Firewall membuka port 80 dan 443; port 3001/3002 tetap hanya mendengar pada 127.0.0.1.

Clone menggunakan path yang dipakai service:

git clone https://github.com/teamitmivhs/mitra_coffeeshop.git /home/it/mitra-coffeeshop
cd /home/it/mitra-coffeeshop

Buat file environment di luar repository:

mkdir -p /home/it/.config
chmod 700 /home/it/.config
openssl rand -hex 32
nano /home/it/.config/mitra-coffeeshop.env
chmod 600 /home/it/.config/mitra-coffeeshop.env

Isi file tersebut dengan nilai asli. Jangan salin contoh password berikut apa adanya:

ADMIN_INITIAL_USERNAME=admin
ADMIN_INITIAL_PASSWORD=ganti-dengan-password-kuat
ADMIN_SESSION_SECRET=tempel-hasil-openssl-di-sini

Jangan tambahkan COFFEE_DATA_DIR=.data ke environment produksi. Service sudah menetapkan direktori persisten absolut. Jalankan deployment dan aktifkan user service saat user it sedang logout:

sudo loginctl enable-linger it
./deploy.sh

Pasang reverse proxy, uji konfigurasi, kemudian aktifkan HTTPS:

sudo install -m 644 nginx.conf.example /etc/nginx/conf.d/mitra-coffeeshop.conf
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d coffeeshop.itmivhs.net -d admin-coffeeshop.itmivhs.net

Login admin produksi hanya bekerja melalui HTTPS karena cookie sesi menggunakan atribut Secure.

Verifikasi akhir:

systemctl --user status mitra-coffeeshop.service mitra-coffeeshop-admin.service
curl -I https://coffeeshop.itmivhs.net
curl -I https://admin-coffeeshop.itmivhs.net/admin

Update berikutnya

Setelah perubahan sudah dipush ke branch main, jalankan di server:

cd /home/it/mitra-coffeeshop
./deploy.sh

Script menolak working tree server yang kotor, mengambil commit terbaru dengan fast-forward, menjalankan clean install, release checks, build, restart dua service, health check, dan memastikan route admin tetap tidak tersedia dari surface publik.

Sebelum perubahan besar, backup database dan upload secara konsisten:

systemctl --user stop mitra-coffeeshop.service mitra-coffeeshop-admin.service
mkdir -p /home/it/backups
cp -a /home/it/.local/share/mitra-coffeeshop "/home/it/backups/mitra-coffeeshop-$(date +%F-%H%M%S)"
systemctl --user start mitra-coffeeshop.service mitra-coffeeshop-admin.service

Aturan Git

Yang dipush:

  • Source TypeScript/React dan asset bawaan.
  • package.json serta package-lock.json.
  • .env.example, service systemd, deploy.sh, dan contoh Nginx.

Yang tidak dipush:

  • .env, .env.local, atau secret produksi.
  • .data/, database SQLite, WAL/SHM, dan upload admin.
  • .21st/ serta design.md lokal.
  • .output/, dist/, node_modules/, log, private key, dan sertifikat TLS.

Lisensi: MIT.

About

Website of Coffee Shop Mitra Industri Vocational High School

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages