Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

jbarreda-dev/fullstack-lab

Open more actions menu

Repository files navigation

Fullstack Lab — Angular + NestJS + MongoDB

Aplicación fullstack desarrollada con Angular 18 (frontend), NestJS (backend) y MongoDB Atlas, que permite gestionar Posts y Comments cumpliendo los endpoints requeridos, incluyendo carga masiva de posts.


🧰 Requisitos

  • Node.js (LTS recomendado)
  • Angular CLI 18+
  • MongoDB Atlas (o MongoDB local)
  • Git

📁 Estructura del proyecto

fullstack-lab/ ├─ backend/ # NestJS API └─ frontend/ # Angular app


🚀 Backend (NestJS)

1. Ir a la carpeta

cd backend

2. Instalar dependencias

npm install

3. Configurar variables de entorno

Crear un archivo .env en la carpeta backend con el siguiente connection string como contenido:

MONGODB_URI=mongodb+srv://applabuser:7x3M9iA332iCagxp@fullstack-lab.dntqlpe.mongodb.net/fullstack_lab?appName=fullstack-lab

4. Ejecutar el backend

npm run start:dev

📍 Backend disponible en: http://localhost:3000

⚠️ Manejo Global de Errores

El backend implementa un Global Exception Filter en NestJS que captura todas las excepciones (validaciones, not found y errores internos) y devuelve respuestas estandarizadas.

Formato de error:

{
  "statusCode": 400,
  "error": "Bad Request",
  "message": [],
  "method": "POST",
  "path": "/posts",
  "timestamp": "2026-01-12T..."

🌐 Frontend (Angular)

1. Ir a la carpeta

cd frontend

2. Instalar dependencias

npm install

3. Ejecutar la aplicación

npm start

📍 Frontend disponible en: http://localhost:4200

🔗 Endpoints requeridos 📌 Posts (CRUD completo)

GET /posts — Listar todos

GET /posts/:id — Obtener uno

POST /posts — Crear

PUT /posts/:id — Editar

DELETE /posts/:id — Eliminar

📌 Carga masiva de Posts

POST /posts/bulk

Request (JSON) carga masiva

[ { "title": "Post 1", "body": "Contenido...", "author": "User 1" }, { "title": "Post 2", "body": "Contenido...", "author": "User 2" } ]

Características:

  • Validación por DTO de cada elemento

  • Inserción usando insertMany()

  • Respuesta estandarizada

  • La carpeta shared contiene componentes y pipes reutilizables utilizados por distintos features.

  • Se implementó ConfirmDeleteComponent y DateDmyPipe como ejemplos de reutilización.

  • Se utilizaron Angular Signals (signal, computed) para el manejo reactivo del estado en el frontend.

  • Se utilizaron operadores RxJS como switchMap, tap, catchError y delay para manejo de flujos asíncronos.

  • Se implementó un servicio de “error mapping” que traduce errores del backend a mensajes amigables para el usuario.

  • Las validaciones principales se centralizaron en el backend utilizando DTOs y class-validator. El frontend mantiene un enfoque simple y funcional, delegando la validación final al backend para evitar duplicación de lógica.

💬 Comments

GET /comments?postId={id} — Listar comentarios por post

POST /comments — Crear comentario

DELETE /comments/:id — Eliminar comentario

🧪 Validaciones

-Validación de datos mediante DTOs + class-validator

-Manejo de errores y respuestas claras

-CORS habilitado para consumo desde Angular

📮 Postman

Se incluye una colección Postman con todos los endpoints requeridos:

📄 Archivo: postman_collection.json

✅ Funcionalidades en Frontend

-Listado de posts

-Crear, editar y eliminar posts

-Vista detalle de post

-Listar, crear y eliminar comentarios

-Carga masiva de posts desde UI

-Navegación mediante Angular Router

📝 Notas finales

-Se priorizó funcionalidad sobre diseño gráfico

-El proyecto cumple con todos los requisitos funcionales del laboratorio.

About

Repositorio laboratorio fullstack

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.