Invo is a Malaysian invoicing and POS platform for freelancers and SMEs, built with Next.js 15.
- Invoices with payments, PDF generation, and receipt generation
- Customer management with limits by subscription plan
- Inventory and product management (including stock-aware invoice flows)
- POS order workflows (tables, orders, status transitions, kitchen chit printing)
- Accounting module (ledger, accounts, expenses, bank import, tax rates, financial reports)
- Stripe subscription flows (checkout, portal, webhook handling)
- E-invoice readiness module (configuration, validation, invoice readiness checks)
- Marketing/blog pages, SEO structured data, and web-vitals endpoint
- PWA support via service worker + manifest
- Next.js 15 (App Router) + React 19 + TypeScript
- Prisma ORM (
@prisma/client/ Prisma 6) - PostgreSQL/Supabase in production
- Tailwind CSS + shadcn/ui + Radix
- React Hook Form + Zod
- Stripe
- Install dependencies:
npm install- Configure environment variables (
.env.local):
DATABASE_URLJWT_SECRETNEXT_PUBLIC_APP_URLSTRIPE_SECRET_KEY(for subscription features)STRIPE_PRICE_ID(for subscription checkout)STRIPE_WEBHOOK_SECRET(for webhook verification)
- Start development server:
npm run devnpm run dev- Start local dev servernpm run build- Generate Prisma client and build Next.js appnpm run lint- Run ESLintnpm run analyze- Build with bundle analyzernpm run seed- Push schema + seed datanpm run db:deploy- Run Prisma deployment helper (prisma/deploy.js)npm run test:db- Database connection smoke testnpm run test:api- API smoke test script
prisma/schema.prismais the source of truth for models.- Supabase SQL migrations live in
supabase/migrations. - Root-level migration helpers:
node migrate-to-supabase.jsnode sync-schema-migration.jsnode migrate-pos-tables.js
- Run
npm run test:dbbefore and after major schema changes.
PWA support is wired through:
public/manifest.jsonpublic/sw.jssrc/components/providers/pwa-provider.tsx
The app registers the service worker from the root layout and supports installable app behavior.
Netlify deployment is configured via netlify.toml with @netlify/plugin-nextjs.
- Build command:
npm run build - Publish directory:
.next - Ensure required environment variables are set in Netlify project settings.
All rights reserved © Invo