- docker-compose.yml runs Postgres 17 and reuses the existing cleo-pgdata volume. - scripts/seed.ts creates the first admin through Better Auth's internal adapter, so it works while public sign-up is disabled; skips if the admin exists. - .env.example documents every variable; README has the new-laptop setup steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
2 weeks ago | |
|---|---|---|
| app | 2 weeks ago | |
| components/ui | 2 weeks ago | |
| data | 2 weeks ago | |
| db | 2 weeks ago | |
| drizzle | 2 weeks ago | |
| lib | 2 weeks ago | |
| old-source | 2 weeks ago | |
| public | 2 weeks ago | |
| scripts | 2 weeks ago | |
| .env.example | 2 weeks ago | |
| .gitignore | 2 weeks ago | |
| AGENTS.md | 2 weeks ago | |
| CLAUDE.md | 2 weeks ago | |
| PROGRESS.md | 2 weeks ago | |
| README.md | 2 weeks ago | |
| components.json | 2 weeks ago | |
| docker-compose.yml | 2 weeks ago | |
| drizzle.config.ts | 2 weeks ago | |
| eslint.config.mjs | 2 weeks ago | |
| next.config.ts | 2 weeks ago | |
| package.json | 2 weeks ago | |
| pnpm-lock.yaml | 2 weeks ago | |
| pnpm-workspace.yaml | 2 weeks ago | |
| tsconfig.json | 2 weeks ago | |
README.md
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 24 atau lebih baru
- pnpm 11 (
npm install -g pnpm) - Docker Desktop, dalam keadaan menyala
- Git
Langkah
-
Clone repo dan install dependency
git clone https://git.amigogroup.id/deardo/nextjs-cleo-minimarket.git cd nextjs-cleo-minimarket pnpm install -
Buat
.envdari contohcp .env.example .envLalu isi nilainya:
Variabel Isi POSTGRES_PASSWORDPassword bebas untuk Postgres lokal. DATABASE_URLGanti <POSTGRES_PASSWORD>dengan password yang sama seperti di atas.AMIGO_DATABASE_URLUser dan password MariaDB cleo. Minta ke admin.BETTER_AUTH_SECRETString acak, buat dengan perintah di bawah. SEED_ADMIN_PASSWORDPassword akun admin pertama (minimal 8 karakter). node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"Buat
BETTER_AUTH_SECRETbaru di setiap laptop dan server, jangan disalin dari tempat lain. -
Nyalakan Postgres
docker compose up -dContainer
cleo-postgresakan muncul di Docker Desktop. Data tersimpan di volumecleo-pgdata, jadi tidak hilang walaupun container dimatikan atau dibuat ulang. -
Buat tabel
pnpm db:migrate -
Buat akun admin pertama
pnpm db:seedUsername dan password diambil dari
SEED_ADMIN_*di.env. Aman dijalankan berulang kali: kalau akun sudah ada, seed dilewati. -
Jalankan aplikasi
pnpm devBuka http://localhost:3000. Untuk mengecek koneksi auth, buka http://localhost:3000/api/auth/get-session, hasilnya
nullkalau 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 (
disableSignUpdilib/auth.ts). Akun pertama dibuat lewatpnpm 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 diDATABASE_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 |