1.- Instalar typescript
npm install -g typescript
2.- Instalar ts-node
npm install -g ts-node
3.- Init typescript
tsc --init
4.- Instalar ts-node-dev
pnpm i ts-node-dev -D
5.- Instalar sequelize-cli
npm install -g sequelize-cli
6.- Instalar jest
npm install -g jest
7.- Inicializar npm
npm init -y
8.- Inicializar el linter
npx eslint --init
9.- Agregar configuracion de vscode en carpeta .vscode/settings.json
{
"editor.detectIndentation": true,
"editor.tabSize": 2,
"editor.codeActionsOnSave": {
"source.fixAll": true
},
"jest.pathToJest": "node node_modules/jest/bin/jest.js",
}
10.- Estructura de carpetas del proyecto siguiendo la arquitectura hexagonal y clean code
project
├── src
│ ├── config
│ │ ├── config.ts
│ ├── application
│ │ ├── dtos
│ │ │ ├── user-dto.ts
│ │ │ └── role-dto.ts
│ │ ├── services
│ │ │ ├── user-service.ts
│ │ │ └── role-service.ts
│ │ │ └── auth-service.ts
│ │ └── errors
│ │ ├── custom-error.ts
│ ├── domain
│ │ ├── models
│ │ │ ├── user.ts
│ │ │ └── role.ts
│ │ ├── repositories
│ │ │ ├── user-repository.ts
│ │ │ └── role-repository.ts
│ ├── infrastructure
│ │ ├── database
│ │ │ ├── index.ts
│ │ │ ├── models
│ │ │ │ ├── user-model.ts
│ │ │ │ └── role-model.ts
│ │ │ ├── repositories
│ │ │ │ ├── sequelize-user-repository.ts
│ │ │ │ └── sequelize-role-repository.ts
│ │ ├── authentication
│ │ │ ├── jwt-service.ts
│ │ │ ├── passport-config.ts
│ │ │ └── local-strategy.ts
│ │ └── web
│ │ ├── controllers
│ │ │ ├── user-controller.ts
│ │ │ └── role-controller.ts
│ │ │ └── auth-controller.ts
│ │ ├── middlewares
│ │ │ ├── error-handler.ts
│ │ │ └── auth-middleware.ts
│ │ ├── routes
│ │ │ ├── user-routes.ts
│ │ │ └── role-routes.ts
│ │ │ └── auth-routes.ts
│ │ │ └── index.ts
│ │ ├── server.ts
│ │ ├── app.ts
│ │ └── index.ts
│ ├── shared
│ │ ├── constants
│ │ │ ├── constants.ts
│ │ │ └── roles.ts
│ │ ├── interfaces
│ │ │ ├── user-interface.ts
│ │ │ └── role-interface.ts
│ │ ├── utils
│ │ │ ├── logger.ts
│ │ │ └── hash.ts
│ ├── index.ts
│ └── ...
├── tests
│ ├── unit
│ ├── integration
│ └── ...
├── .eslintrc.js
├── package.json
├── tsconfig.json
└── ...