Project Structure

Standard directory layout for REstJS applications.

1 min readEdit this page

Directory layout

my-api/
├── src/
│   ├── main.ts
│   ├── config/
│   │   └── app.config.ts
│   ├── modules/
│   │   └── users/
│   │       ├── controllers/
│   │       │   └── users.controller.ts
│   │       ├── services/
│   │       │   └── users.service.ts
│   │       ├── entities/
│   │       │   └── user.entity.ts
│   │       └── users.test.ts
│   ├── migrations/
│   │   └── 001_create_users.ts
│   └── jobs/
├── package.json
├── tsconfig.json
├── rest.lock
├── .env
├── .env.example
└── .gitignore

Key files

src/main.ts

The application entry point:

import { Application } from '@restjs/core'
import { appConfig } from './config/app.config'
 
const app = new Application(appConfig)
app.listen()

src/config/app.config.ts

import { loadEnv, defineConfig } from '@restjs/config'
 
loadEnv()
 
export const config = defineConfig({
  PORT:       { type: 'number', default: 3000 },
  NODE_ENV:   { type: 'string', default: 'development' },
  JWT_SECRET: { type: 'string', required: true }
})

.env

PORT=3000
NODE_ENV=development
JWT_SECRET=your-secret-minimum-32-characters
DATABASE_URL=postgres://user:pass@localhost:5432/mydb