Skip to content

Latest commit

 

History

History
292 lines (271 loc) · 9.18 KB

File metadata and controls

292 lines (271 loc) · 9.18 KB

Project Folder Structure

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

Project Structure Overview

Root Level

  • 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

Apps Directory

Contains the main applications:

Backend (apps/backend)

  • 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

Frontend (apps/frontend)

  • Next.js application
  • Authentication UI components
  • Protected routes and auth providers
  • React hooks for auth management
  • Vitest testing setup

Packages Directory

Shared packages used across the monorepo:

Database (packages/database)

  • Prisma ORM configuration
  • Database client and types
  • Seed scripts

ESLint Config (packages/eslint-config)

  • Shared ESLint configurations
  • React-specific rules

Shared (packages/shared)

  • Common types and schemas
  • Validation utilities
  • Constants and error definitions
  • Reusable utility functions

Technology Stack

  • 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