This document provides a complete overview of the project-management-app folder structure.
project-management-app/
│
├── .editorconfig
├── .env.example
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .lintstagedrc.js
├── .npmrc
├── .prettierignore
├── .prettierrc
├── docker-compose.yml
├── package.json
├── pnpm-workspace.yaml
├── tsconfig.base.json
├── turbo.json
│
├── DEPLOYMENT_GUIDE.md
├── NEXT_STEPS.md
├── README.md
├── SECURITY_AUDIT.md
├── SESSION_2.5_SUMMARY.md
├── SETUP.md
├── TEST_COVERAGE_SUMMARY.md
│
├── .git/
├── .husky/
├── .turbo/
├── node_modules/
│
├── .github/
│ └── workflows/
│
├── apps/
│ ├── backend/
│ │ ├── .env.example
│ │ ├── .eslintrc.js
│ │ ├── package.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.tsbuildinfo
│ │ ├── vitest.config.ts
│ │ ├── API_DOCUMENTATION.md
│ │ ├── AUTH_API_SUMMARY.md
│ │ ├── TESTING.md
│ │ ├── .turbo/
│ │ ├── node_modules/
│ │ └── src/
│ │ ├── app.ts
│ │ ├── index.ts
│ │ ├── swagger.ts
│ │ ├── controllers/
│ │ │ └── auth.controller.ts
│ │ ├── middleware/
│ │ │ ├── error.middleware.ts
│ │ │ ├── rate-limit.middleware.ts
│ │ │ ├── validate.middleware.ts
│ │ │ └── validation.middleware.ts
│ │ ├── routes/
│ │ │ └── auth.routes.ts
│ │ ├── services/
│ │ │ ├── README.md
│ │ │ ├── auth.service.ts
│ │ │ ├── index.ts
│ │ │ ├── oauth.service.ts
│ │ │ └── token.service.ts
│ │ ├── test/
│ │ │ ├── setup.ts
│ │ │ ├── helpers/
│ │ │ │ └── test-data.ts
│ │ │ ├── integration/
│ │ │ │ └── auth.api.test.ts
│ │ │ ├── security/
│ │ │ │ └── auth.security.test.ts
│ │ │ └── unit/
│ │ │ └── auth.service.test.ts
│ │ ├── types/
│ │ │ ├── auth.types.ts
│ │ │ └── index.ts
│ │ ├── utils/
│ │ │ ├── email.util.ts
│ │ │ ├── index.ts
│ │ │ ├── logger.ts
│ │ │ ├── password.util.ts
│ │ │ └── token.util.ts
│ │ └── validators/
│ │ └── auth.validator.ts
│ │
│ └── frontend/
│ ├── .env.example
│ ├── .env.local
│ ├── .gitignore
│ ├── eslint.config.mjs
│ ├── next-env.d.ts
│ ├── next.config.ts
│ ├── package.json
│ ├── package-lock.json
│ ├── postcss.config.mjs
│ ├── tsconfig.json
│ ├── vitest.config.ts
│ ├── vitest.setup.ts
│ ├── AUTH_README.md
│ ├── README.md
│ ├── TESTING.md
│ ├── .next/
│ ├── node_modules/
│ ├── __tests__/
│ │ ├── hooks/
│ │ │ └── use-auth.test.tsx
│ │ └── lib/
│ │ └── auth.test.ts
│ ├── app/
│ │ ├── favicon.ico
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── api/
│ │ ├── dashboard/
│ │ │ └── page.tsx
│ │ ├── forgot-password/
│ │ │ └── page.tsx
│ │ ├── login/
│ │ │ └── page.tsx
│ │ ├── register/
│ │ │ └── page.tsx
│ │ └── reset-password/
│ │ └── page.tsx
│ ├── components/
│ │ ├── auth/
│ │ │ ├── forgot-password-form.tsx
│ │ │ ├── index.ts
│ │ │ ├── login-form.tsx
│ │ │ ├── oauth-buttons.tsx
│ │ │ ├── protected-route.tsx
│ │ │ ├── register-form.tsx
│ │ │ └── reset-password-form.tsx
│ │ ├── providers/
│ │ │ ├── auth-provider.tsx
│ │ │ └── query-provider.tsx
│ │ ├── shared/
│ │ └── ui/
│ │ ├── button.tsx
│ │ └── card.tsx
│ ├── hooks/
│ │ └── use-auth.ts
│ ├── lib/
│ │ ├── api-client.ts
│ │ ├── auth.ts
│ │ └── utils.ts
│ ├── public/
│ │ ├── file.svg
│ │ ├── globe.svg
│ │ ├── next.svg
│ │ ├── vercel.svg
│ │ └── window.svg
│ └── types/
│ ├── auth.ts
│ └── index.ts
│
└── packages/
├── database/
│ ├── .env
│ ├── .env.example
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── package.json
│ ├── tsconfig.json
│ ├── tsconfig.tsbuildinfo
│ ├── vitest.config.ts
│ ├── README.md
│ ├── .turbo/
│ ├── dist/
│ ├── node_modules/
│ ├── prisma/
│ │ └── schema.prisma
│ └── src/
│ ├── client.ts
│ ├── index.ts
│ ├── seed.ts
│ └── types.ts
│
├── eslint-config/
│ ├── index.js
│ ├── package.json
│ ├── react.js
│ └── node_modules/
│
└── shared/
├── .eslintrc.js
├── package.json
├── tsconfig.json
├── tsconfig.tsbuildinfo
├── vitest.config.ts
├── CHANGELOG.md
├── README.md
├── .turbo/
├── dist/
├── node_modules/
└── src/
├── index.ts
├── constants/
│ ├── errors.ts
│ ├── index.ts
│ └── permissions.ts
├── errors/
├── schemas/
│ ├── auth.schemas.ts
│ ├── index.ts
│ ├── pagination.schemas.ts
│ ├── project.schemas.ts
│ ├── task.schemas.ts
│ └── user.schemas.ts
├── test/
├── types/
│ ├── api.types.ts
│ ├── auth.types.ts
│ ├── index.ts
│ ├── project.types.ts
│ ├── task.types.ts
│ └── user.types.ts
└── utils/
├── date.utils.ts
├── index.ts
├── pagination.utils.ts
├── string.utils.ts
└── validation.utils.ts
- Configuration Files: ESLint, Prettier, EditorConfig, TypeScript, Turbo
- Documentation: Multiple markdown files for deployment, setup, testing, and security
- Package Management: pnpm workspace configuration
- Docker: docker-compose.yml for containerization
Contains the main applications:
- Express.js API server
- Authentication services (OAuth, JWT)
- Comprehensive test suite (unit, integration, security)
- Swagger API documentation
- Middleware for validation, error handling, and rate limiting
- Next.js application
- Authentication UI components
- Protected routes and auth providers
- React hooks for auth management
- Vitest testing setup
Shared packages used across the monorepo:
- Prisma ORM configuration
- Database client and types
- Seed scripts
- Shared ESLint configurations
- React-specific rules
- Common types and schemas
- Validation utilities
- Constants and error definitions
- Reusable utility functions
- Monorepo: Turborepo + pnpm workspaces
- Backend: Node.js + Express + TypeScript
- Frontend: Next.js 14+ (App Router) + React + TypeScript
- Database: Prisma ORM
- Testing: Vitest
- Styling: TailwindCSS (implied from postcss config)
- Code Quality: ESLint + Prettier + Husky