# Setup Express.js project with TypeScript

Initialize a new Express.js project with TypeScript support and essential tooling.

## What to Create

1. **Initialize npm project**:
   - Run `npm init -y`
   - Install dependencies:
     - express, typescript, @types/express, @types/node
     - ts-node, nodemon (dev dependencies)
     - eslint, prettier (dev dependencies)

2. **Configure TypeScript**:
   - Create `tsconfig.json` with:
     - target: ES2020
     - module: commonjs
     - strict: true
     - outDir: dist
     - rootDir: src
     - esModuleInterop: true

3. **Project structure**:
   ```
   src/
     app.ts          # Express app setup
     server.ts       # Server entry point
     routes/
       index.ts      # Route aggregator
     middleware/
     config/
       index.ts      # Configuration loader
   ```

4. **Basic app.ts**:
   - Create Express app
   - Add JSON middleware
   - Add basic error handler
   - Health check endpoint: `GET /health` returns `{ "status": "ok" }`

5. **Package.json scripts**:
   - `dev`: Run with nodemon + ts-node
   - `build`: Compile TypeScript
   - `start`: Run compiled code
   - `lint`: Run ESLint

6. **Environment setup**:
   - Create `.env.example` with `PORT=3000`
   - Add dotenv package
   - Load env vars in config

## Acceptance

- Running `npm run dev` starts the server
- GET http://localhost:3000/health returns `{"status": "ok"}`
- TypeScript compiles without errors
- ESLint shows no errors
