# Cleo Minimarket Back-office minimarket berbasis Next.js 16, pengganti aplikasi PHP lama di `old-source/`. Stack: Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4, shadcn/ui, Drizzle ORM, Better Auth, Postgres (data aplikasi dan login), MariaDB `cleo` (data bisnis lama). ## Setup di laptop baru ### Yang perlu terpasang - [Node.js](https://nodejs.org) 24 atau lebih baru - [pnpm](https://pnpm.io/installation) 11 (`npm install -g pnpm`) - [Docker Desktop](https://www.docker.com/products/docker-desktop/), dalam keadaan menyala - Git ### Langkah 1. **Clone repo dan install dependency** ```bash git clone https://git.amigogroup.id/deardo/nextjs-cleo-minimarket.git cd nextjs-cleo-minimarket pnpm install ``` 2. **Buat `.env` dari contoh** ```bash cp .env.example .env ``` Lalu isi nilainya: | Variabel | Isi | | --------------------- | --------------------------------------------------------------------- | | `POSTGRES_PASSWORD` | Password bebas untuk Postgres lokal. | | `DATABASE_URL` | Ganti `` dengan password yang sama seperti di atas. | | `AMIGO_DATABASE_URL` | User dan password MariaDB `cleo`. Minta ke admin. | | `BETTER_AUTH_SECRET` | String acak, buat dengan perintah di bawah. | | `SEED_ADMIN_PASSWORD` | Password akun admin pertama (minimal 8 karakter). | ```bash node -e "console.log(require('crypto').randomBytes(32).toString('base64'))" ``` Buat `BETTER_AUTH_SECRET` baru di setiap laptop dan server, jangan disalin dari tempat lain. 3. **Nyalakan Postgres** ```bash docker compose up -d ``` Container `cleo-postgres` akan muncul di Docker Desktop. Data tersimpan di volume `cleo-pgdata`, jadi tidak hilang walaupun container dimatikan atau dibuat ulang. 4. **Buat tabel** ```bash pnpm db:migrate ``` 5. **Buat akun admin pertama** ```bash pnpm db:seed ``` Username dan password diambil dari `SEED_ADMIN_*` di `.env`. Aman dijalankan berulang kali: kalau akun sudah ada, seed dilewati. 6. **Jalankan aplikasi** ```bash pnpm dev ``` Buka http://localhost:3000. Untuk mengecek koneksi auth, buka http://localhost:3000/api/auth/get-session, hasilnya `null` kalau belum login. ### Catatan - MariaDB `cleo` (`192.168.3.3`) hanya bisa diakses dari jaringan kantor. Fitur login tidak membutuhkannya. - Pendaftaran akun lewat web sengaja ditutup (`disableSignUp` di `lib/auth.ts`). Akun pertama dibuat lewat `pnpm db:seed`. - Kalau port 5432 sudah dipakai Postgres lain di laptop itu, matikan dulu Postgres tersebut, atau ganti port kiri di `docker-compose.yml` (mis. `"5433:5432"`) beserta port di `DATABASE_URL`. ## Perintah | Perintah | Fungsi | | ---------------------- | -------------------------------------------------------- | | `pnpm dev` | Dev server di http://localhost:3000 | | `pnpm build` | Build production | | `pnpm lint` | ESLint | | `pnpm exec tsc --noEmit` | Type-check | | `docker compose up -d` | Nyalakan Postgres lokal | | `pnpm db:generate` | Buat file migrasi dari `db/schema.ts` | | `pnpm db:migrate` | Jalankan migrasi ke Postgres | | `pnpm db:seed` | Buat akun admin pertama | | `pnpm db:studio` | Lihat isi Postgres di https://local.drizzle.studio |