A Next.js application for recording, monitoring, and reporting PAUD Makerspace facilities and inventory across five learning zones:
- Mini Garden
- Art Gallery
- Biodiversity & Drama
- STEAM Lab
- Eco Upcycle
The app is intended to help teachers and school staff perform routine inventory checks through an Indonesian teacher-facing UI, track item condition changes, preserve deleted-item history through soft deletes, and eventually export readable inventory reports with item photos.
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS
- Planned data layer: Supabase PostgreSQL
- Planned file storage: Supabase Storage
- Planned deployment: Vercel
- Node.js 20 or newer
- pnpm
Install dependencies:
pnpm installCreate a local environment file from the example:
cp .env.example .env.localFill in the values in .env.local before enabling the Supabase-backed CRUD and photo upload flow.
NEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_ANON_KEYare browser-safe values from Supabase project settings.SUPABASE_SERVICE_ROLE_KEYis server-only. Use it only from Next.js API routes for inventory mutations and Storage uploads.SUPABASE_STORAGE_BUCKETshould match the bucket created bysupabase/schema.sql; the default isinventory-photos.SHARED_ACCESS_CODEis the MVP shared gate secret and should stay server-side.
The static scaffold can still run without Supabase values, but the API/upload workflow requires them.
Start the local development server:
pnpm devOpen http://localhost:3000.
pnpm dev
pnpm build
pnpm start
pnpm lintThe MVP should support a simple shared access model before full user accounts are introduced. Inventory records should be organized by Makerspace zone, with a Dashboard and Zona Makerspace tab structure that keeps zone navigation easy for teachers. The visual direction should use a SiKecilPintar-inspired friendly card layout while staying practical for inventory work. Condition changes should be logged instead of overwritten, and item deletion should use soft-delete behavior so historical reports remain reliable.
Supabase configuration is expected to cover:
- PostgreSQL tables for zones, items, and item condition logs.
- Storage bucket access for optimized WebP item photos.
- Future authentication or shared-access settings.
Current API route contract for the Supabase workflow:
GET /api/healthchecks Supabase configuration, zone access, and Storage bucket name.GET /api/itemslists active inventory items and condition logs.POST /api/itemscreates an item and writes the first condition log.PUT /api/items/[id]updates item metadata; condition changes also insert anitem_condition_logsrow.DELETE /api/items/[id]soft-deletes an item by settingis_active = falseanddeleted_at.POST /api/uploadaccepts optimized WebP photos and uploads them to Supabase Storage.GET /api/reportsreturns a printable HTML report for browser PDF export.GET /api/reports?zoneId=mini-gardenreturns a printable report for one Makerspace zone.
See docs/PROJECT_PLAN.md for the product plan, MVP scope, suggested schema, and acceptance criteria.
See docs/DEPLOYMENT.md for the Vercel + Supabase deployment checklist, required environment variables, and production smoke test.