1. en windows y vscode verificamos:

node --version
npm --version
psql --version

creamos la carpeta y abri vscode:

PS D:\Proyectos GIT\ex_reservas_api> 
npm init -y
npm install -D typescript ts-node-dev @types/node

Esto instala:

  • typescript — para usar TS en el proyecto
  • ts-node-dev — hot reload en desarrollo
  • @types/node — tipos de Node para TypeScript

ahora instalamos express

npm install express
npm install -D @types/express

Ahora instalamos el resto de dependencias del proyecto de una sola vez:

npm install jsonwebtoken bcryptjs zod dotenv nodemailer
npm install -D @types/jsonwebtoken @types/bcryptjs @types/nodemailer

Ahora instalamos Prisma:

npm install -D prisma
npm install @prisma/client

 Ahora configuramos TypeScript, ejecuta

npx tsc --init

Ahora abre el archivo tsconfig.json que se creó en tu proyecto y reemplaza todo el contenido con esto:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "lib": ["ES2020"],
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src"],
  "exclude": ["node_modules"]
}

Ahora crea la estructura de carpetas. Ejecuta esto en la terminal:

mkdir src
mkdir src\routes
mkdir src\controllers
mkdir src\middlewares
mkdir src\services
mkdir src\utils
mkdir src\types

Ahora abre el package.json y reemplaza la parte de "scripts" con esto:

"scripts": {
  "dev": "ts-node-dev --respawn --transpile-only src/index.ts",
  "build": "tsc",
  "start": "node dist/index.js"
},

crear (usa cmd no powershell)

echo. > src\index.ts

abre el archivo src/index.ts en VS Code y pega esto:

import express from 'express';
import dotenv from 'dotenv';

dotenv.config();

const app = express();

app.use(express.json());

app.get('/', (req, res) => {
  res.json({ message: 'Booking API running 🚀' });
});

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

export default app;

Ahora crea el archivo .env en la raíz del proyecto con cmd:

type nul > .env
PORT=3000
DATABASE_URL="postgresql://postgres:tu_password@localhost:5432/ex_reservas_db"
JWT_SECRET="supersecretkey123"
JWT_REFRESH_SECRET="refreshsecretkey123"

Cambia tu_password por la contraseña de tu PostgreSQL. Guarda y dime cuando listo.

Ahora vamos a configurar Prisma. Ejecuta este comando en la terminal:

npx prisma init

Ahora crea el archivo .gitignore para no subir archivos sensibles a GitHub:

type nul > .gitignore
Ábrelo y pega esto:
```
node_modules
dist
.env

Perfecto, Prisma se inicializó bien. Ahora abre el archivo prisma/schema.prisma que se creó y reemplaza todo el contenido con esto:

prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

Guarda y dime cuando listo. Luego creamos los modelos.

Ahora vamos a crear los modelos de la base de datos. Reemplaza el contenido de prisma/schema.prisma con esto: