Skip to content

Latest commit

 

History

History
165 lines (118 loc) · 3.02 KB

File metadata and controls

165 lines (118 loc) · 3.02 KB

Project Setup Guide

Prerequisites

  • Node.js >= 18.0.0
  • pnpm >= 8.0.0
  • PostgreSQL database

Installation

  1. Install dependencies

    pnpm install
  2. Set up environment variables

    Backend (apps/backend/.env):

    NODE_ENV=development
    PORT=4000
    DATABASE_URL="postgresql://user:password@localhost:5432/project_management"
    JWT_SECRET="your-secret-key"
    JWT_REFRESH_SECRET="your-refresh-secret-key"
    CORS_ORIGIN="http://localhost:3000"
  3. Generate Prisma client

    pnpm db:generate
  4. Run database migrations

    pnpm db:migrate
  5. Seed the database (optional)

    pnpm db:seed

Development

Start all services

pnpm dev

Start individual services

# Backend only
pnpm dev:backend

# Frontend only
pnpm dev:frontend

# Database studio
pnpm dev:db

Available Scripts

Build

pnpm build              # Build all packages

Development

pnpm dev                # Start all in dev mode
pnpm dev:backend        # Start backend only
pnpm dev:frontend       # Start frontend only
pnpm dev:db             # Open Prisma Studio

Testing

pnpm test               # Run all tests
pnpm test:ui            # Run tests with UI
pnpm test:coverage      # Run tests with coverage

Database

pnpm db:generate        # Generate Prisma client
pnpm db:migrate         # Run migrations (dev)
pnpm db:migrate:deploy  # Run migrations (prod)
pnpm db:push            # Push schema changes
pnpm db:seed            # Seed database
pnpm db:studio          # Open Prisma Studio
pnpm db:reset           # Reset database

Code Quality

pnpm lint               # Lint all packages
pnpm type-check         # Type check all packages
pnpm format             # Format code
pnpm format:check       # Check formatting

Project Structure

project-management-app/
├── apps/
│   ├── backend/        # Express.js API
│   └── frontend/       # Next.js application
├── packages/
│   ├── database/       # Prisma schema and client
│   ├── shared/         # Shared types and utilities
│   └── eslint-config/  # Shared ESLint configuration
├── .github/
│   └── workflows/      # CI/CD workflows
└── package.json        # Root package.json

Architecture

This is a modular monolith using:

  • Layered Architecture: UI → API → Service → Domain → Data
  • TypeScript Strict Mode: Everywhere
  • PostgreSQL + Prisma: Database layer
  • Shared Packages: Types, schemas, and utilities

Troubleshooting

Prisma Client Issues

If you see "Module '@prisma/client' has no exported member" errors:

pnpm db:generate

Type Errors

pnpm type-check

Port Already in Use

Change the port in apps/backend/.env:

PORT=4001

Database Connection Issues

Verify your DATABASE_URL in apps/backend/.env and ensure PostgreSQL is running.