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
└── .gitignoreKey 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/mydbWarning
Never commit .env to version control. Add .env.example with placeholder values instead.