/todo-list-darapti-backend

Todo List Backend Darapti

Primary LanguageTypeScript

Todo List App - Backend

puedes probar las request con la siguiente [coleccion](./src/db/postman-collections/todo-list API.postman_collection.json)

Este es el repositorio del backend de la aplicación todo-list. El backend está construido con Express.js y utiliza una base de datos PostgreSQL.

Tecnologías utilizadas

  • Express.js
  • PostgreSQL
  • TypeScript
  • express-validator

Estructura del proyecto

La estructura del proyecto se ve así:

.
├── .env.example
├── .eslintrc.cjs
├── .gitignore
├── .prettierrc
├── package-lock.json
├── package.json
├── server.ts
├── src
│   ├── controllers
│   │   └── task.controller.ts
│   ├── db
│   │   ├── DDL.sql
│   │   └── db-connection.ts
│   ├── middlewares
│   │   ├── check-task-exists.ts
│   │   └── valida-checks.ts
│   ├── model
│   │   └── types.ts
│   └── routes
│       └── task.routes.ts
└── tsconfig.json

Configuración de variables de entorno

Antes de ejecutar el proyecto, debes crear un archivo .env, hay un archivo env.example que puedes usar para probar el proyecto. Debes tener configuradas las siguientes variables de entorno (remplazar con las tuyas):

DB_USER="postgres"
DB_PASSWORD="postgres"
DB_HOST="localhost"
DB_PORT=5433
DB_NAME="db_todo_list_app_darapti"

Levantar la base de datos con Docker

Puedes levantar una instancia de PostgreSQL con Docker usando el siguiente comando:

docker run --name db-todo-list-app-darapti -e POSTGRES_PASSWORD=postgres -d -p 5433:5432 postgres

Este comando levanta un contenedor de PostgreSQL en el puerto 5433 y crea una base de datos llamada db_todo_list_app_darapti.

ahora bien, necesitas crear la base de datos, para eso debemos poder correr queries dentro de la instancia de postgresql en el docker container, para eso nos apoyaremos de psql, para acceder a psql dentro de nuestra instancia docker corremos:

docker exec -it db-todo-list-app-darapti psql -U postgres -W

despues de ingresar la contraseña, deberemos crear la base de datos. podemos apoyarnos en el script sql que deje de referencia. de igual manera, debe tomar en cuenta que antes de crear las tablas debemos conectarnos a la base de datos

create database some_database;
# IMPORTANT
\c some_database;

# rest of the code creating and Updating tables ...

Instalación y ejecución

  1. Instala las dependencias del proyecto:
npm install
  1. Ejecuta el proyecto en modo desarrollo:
npm run dev

Esto iniciará el servidor de desarrollo y lo mantendrá en ejecución, reiniciándolo automáticamente cuando se realicen cambios en el código.

Endpoints de la API

La API expone los siguientes endpoints:

  • GET /api/v1/task: Obtiene todas las tareas.
  • POST /api/v1/task: Crea una nueva tarea.
  • PUT /api/v1/task: Actualiza las posiciones de múltiples tareas.
  • GET /api/v1/task/:id: Obtiene una tarea por su ID.
  • PUT /api/v1/task/:id: Actualiza una tarea por su ID.
  • DELETE /api/v1/task/:id: Elimina una tarea por su ID.