🌟 We are Open Source! Check out our repository on GitHub

TypeScript Project Structure

A scalable and maintainable folder structure for TypeScript applications

File Structure

  • src
    • index.ts
    • app.ts
    • core
      • config.ts
      • database.ts
      • logger.ts
      • errors.ts
    • modules
      • users
        • controllers
        • services
        • models
        • types
      • auth
        • controllers
        • services
        • middleware
        • types
    • shared
      • types
      • utils
      • constants
      • decorators
  • tests
    • unit
    • integration
    • e2e
    • fixtures
  • docs
    • api
    • guides
  • package.json
  • tsconfig.json
  • tsconfig.build.json
  • .eslintrc.js
  • .prettierrc
  • jest.config.js
  • .env.example
  • .gitignore
  • README.md

Directory Structure Explanation

src/core/

Contains core infrastructure and foundational code used across the entire application.

core/config.ts

Application configuration management and environment variable handling.

core/database.ts

Database connection setup and configuration.

core/logger.ts

Logging configuration and utilities for application monitoring.

core/errors.ts

Custom error classes and error handling utilities.

src/modules/

Feature-based organization where each module contains related functionality.

modules/users/

Complete user module containing all user-related functionality organized by layers.

modules/auth/

Authentication module containing login, registration, and security features.

src/shared/

Shared utilities, types, and components used across multiple modules.

shared/decorators/

Custom TypeScript decorators for cross-cutting concerns like validation and logging.

tests/e2e/

End-to-end tests for testing complete user workflows and system integration.

tests/fixtures/

Test data and mock objects used across different test suites.

tsconfig.build.json

TypeScript configuration specifically for production builds.

.prettierrc

Prettier configuration for consistent code formatting.

jest.config.js

Jest testing framework configuration for unit and integration tests.