Anonymous reproductive health product delivery service built with Next.js and NestJS.
careparcel/
├── apps/
│ ├── frontend/ # Next.js 15 frontend application
│ └── backend/ # NestJS backend API
├── packages/
│ └── shared-types/ # Shared TypeScript types
├── package.json # Root package.json with workspace scripts
└── pnpm-workspace.yaml # PNPM workspace configuration
- Node.js >= 20.0.0
- pnpm >= 10.0.0
Install all dependencies across the monorepo:
pnpm installRun both frontend and backend in development mode:
pnpm devOr run them individually:
# Frontend only
pnpm dev:frontend
# Backend only
pnpm dev:backendBuild all applications:
pnpm buildOr build individually:
pnpm build:frontend
pnpm build:backendRun all tests:
pnpm testRun backend tests:
pnpm test:backendRun end-to-end tests:
pnpm test:e2eLint all packages:
pnpm lint- frontend: Next.js application with Tailwind CSS, Paystack integration, and Crisp Chat
- backend: NestJS API with Prisma ORM, PostgreSQL, and Resend email service
- @careparcel/shared-types: Shared TypeScript types and interfaces
The backend uses Prisma with PostgreSQL.
Generate Prisma client:
pnpm prisma:generateRun migrations:
pnpm prisma:migrateSeed the database:
pnpm prisma:seed| Script | Description |
|---|---|
pnpm dev |
Run all apps in development mode |
pnpm dev:frontend |
Run frontend in development mode |
pnpm dev:backend |
Run backend in development mode |
pnpm build |
Build all apps |
pnpm build:frontend |
Build frontend |
pnpm build:backend |
Build backend |
pnpm start:frontend |
Start frontend in production mode |
pnpm start:backend |
Start backend in production mode |
pnpm lint |
Lint all packages |
pnpm test |
Run all tests |
pnpm clean |
Remove all node_modules and build artifacts |
pnpm prisma:generate |
Generate Prisma client |
pnpm prisma:migrate |
Run database migrations |
pnpm prisma:seed |
Seed the database |
NEXT_PUBLIC_API_URL=http://localhost:8080DATABASE_URL=postgresql://user:password@localhost:5432/careparcel
RESEND_API_KEY=your_resend_api_key
RESEND_EMAIL=noreply@yourdomain.com
PORT=8080UNLICENSED - Private project