a web-based payroll for malawi
# WizTech Payroll Web App
A modern, full-stack payroll management application for Malawi, built with Next.js 16, Prisma, PostgreSQL (Neon), and TypeScript.
## ποΈ Architecture
```
payroll-web/
βββ prisma/
β βββ schema.prisma # Database schema (Employees, PayrollRecords, AuditLogs, Settings)
β βββ seed.ts # Seed script with sample data
βββ src/
β βββ app/ # Next.js App Router pages
β β βββ api/ # API routes
β β β βββ employees/ # Employee CRUD
β β β βββ payroll/ # Payroll calculation & processing
β β β βββ payslips/ # Payslip generation
β β β βββ reports/ # 6 report types
β β β βββ dashboard/ # KPIs & charts
β β β βββ settings/ # Configuration management
β β βββ dashboard/ # Management dashboard with charts
β β βββ employees/ # Employee management UI
β β βββ payroll/ # Payroll processing UI
β β βββ payslips/ # Payslip viewer & PDF export
β β βββ reports/ # Report generator
β β βββ settings/ # System configuration
β βββ lib/
β β βββ payroll-engine.ts # Pure TS Malawi payroll calculations
β β βββ prisma.ts # Prisma client singleton
β β βββ utils.ts # Utility functions
βββ .env # Environment variables (DATABASE_URL, NEXTAUTH_SECRET)
βββ package.json
βββ README.md
```
## π Quick Start
### Prerequisites
- Node.js 18+
- Neon PostgreSQL database (or any PostgreSQL)
- npm or yarn
### Installation
```bash
cd payroll-web
# Install dependencies
npm install
# Generate Prisma client
npm run prisma:generate
# Push schema to database (requires DATABASE_URL in .env)
npm run prisma:push
# Seed with sample data
npm run prisma:seed
# Or run all at once
npm run db:setup
# Start development server
npm run dev
```
### Environment Variables
Create `.env` file:
```env
# Neon β¦