Skip to content

Loza64/node-ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node-TS: Plantilla Backend con Node.js + TypeScript

Este es un proyecto inicializado de nodejs usando typescript, con el fin de ya tener la aplicacion inicializado con el motor express junto con sus configuraciones principales

Comandos

  • pnpm run dev : ejecucion de la aplicacion en modo de desarrollo
  • pnpm run build : preparar el proyecto para produccion
  • pnpm start : ejecucion de la aplicacion en produccion

librerias instaladas

  • express : Framework web para Node.js que simplifica la creación de APIs REST y servidores HTTP.
  • multer : Middleware para manejar multipart/form-data (subida de archivos).
  • cors: Permite peticiones cruzadas entre dominios (evita errores CORS).
  • dotenv: Carga variables de entorno desde un archivo .env.
  • helmet: Protege la app configurando headers HTTP seguros (XSS, CSP, etc.).
  • debug: Librería de logging modular (alternativa a console.log).
  • morgan: Middleware de logging de solicitudes HTTP.
  • cross-env: Establece variables de entorno compatibles en cualquier OS.
  • ts-node-dev: Ejecuta TypeScript en desarrollo con recarga automática.
  • typescript: Añade tipado estático a JavaScript. Configuracion -> tsconfig.json
  • jest: Framework de pruebas unitarias e integración.
  • class-validator: Validar objetos (como los datos de entrada en una API) usando decoradores en clases TypeScript.
  • class-transformer: Transformar objetos planos (como JSON) en instancias de clases TypeScript (y viceversa).

crear un archivo .env

node-ts/
├── node_modules/       
├── src/ 
├── .env                     
├── .gitignore   
├── README.md                 
├── package.json  
├── package-lock.json
├── tsconfig.json
├── tslint.json    
└── requirements.txt         
port=4000  
origin=http://localhost:12312  (aplicacion del front)

multer

en le archivo config.ts ya se encuentra la constante upload donde ya esta configurada multer lista para exportar y usarlo como quiera por ejemplo:

// Ruta POST para subir un solo archivo
router.post('/upload/files', uploadFile, uploadFilesCloud);

middleware

en la carpeta middleware cree un archivo validator.dto.ts la cual se encarga de validar los datos de las clases dto solamente hay que importarlo usarlo asi:

router.post('/users', validateDto(CreateUserDto), (req, res) => {
  res.json({ message: '¡Usuario validado con éxito!', data: req.body });
});

configuracion

En el archivo config.ts se encuentra la configuración principal de la aplicación. Desde allí, podrás importar las variables de entorno, como el port (puerto) y el origin (origen), así como los ajustes de debug. Ten en cuenta que el modo debug solo estará activo cuando la aplicación se ejecute en modo de desarrollo (es decir, al compilarla como dev), un ejemplo esta en index.ts.

api

en tu navegador coloca la siguiente ruta: "http://localhost:3000/server/rest/api/fetch/json/request/get/hello" lo cual es donde esta el hola mundo del backend, en la carpeta, se encuentran todos los metodos: post, get, put, etc, la ruta general del proyecto es: "http://localhost:3000/server/rest/api/fetch/json/request/" cuando agreges algo al post, segun lo que pongas en tu ruta siempre comenzara a apartir de "request/ por ejemplo:

GET    http://localhost:3000/server/rest/api/fetch/json/request/get/users
POST   http://localhost:3000/server/rest/api/fetch/json/request/post/login
PUT    http://localhost:3000/server/rest/api/fetch/json/request/put/user/123
DELETE http://localhost:3000/server/rest/api/fetch/json/request/delete/user/123

Eres libre de modificarla a tu antojo, si quieres hacer la ruta mas corta ve a app.ts y ahi encontraras la ruta general la cual es: /server/rest/api/fetch/json/request/.

app.use(express.urlencoded(urlencodeconfig));
app.use(morgan("dev"))
app.use('/server/rest/api/fetch/json/request', router)

Mensajes en terminal en modo desarrollo

Puedes importar estas constantes que se encuentran en config.ts para agregar mensajes en la consola y puedes crear mas a tu gusto por ejemplo: const ejemplo = debug("nodets:[ejemplo]");

export const server = debug("nodets:[server]");
export const error = debug("nodets:[error]");
export const database = debug("nodets:[database]");
export const input = debug("nodets:[input]");

se utiliza de esta forma:

server("running in port", 3000)

lo cual en la terminal te saldra:

nodets:[server] running in port 3000 +0ms

esto solo funciona cuando el proyecto esta en modo desarrollo.

si quieres cambiar el nodets: por algo mas tienes que modificar el package.json

"dev": "cross-env DEBUG=nodets:* ts-node-dev src/index.ts",

remplaza nodets por la palabra que tu quieras pero asegurate que las demas constantes tenga eso mismo de lo contrario no te aparecera el mensaje, ejemplo

"dev": "cross-env DEBUG=app:* ts-node-dev src/index.ts",
export const server = debug("app:[server]");
export const error = debug("app:[error]");
export const database = debug("app:[database]");
export const input = debug("app:[input]");

Nota

esta aplicacion es de uso libre, solo recuerda borrar la carpeta .git despues de clonar el repositorio para que no tengas problemas a la hora de subir tu backend a github, normalmente la carpeta .git esta oculta

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published