Skip to content

itsPatH/adoptMe

Repository files navigation

ADOPT ME

Node.js Express MongoDB Docker License: MIT

Español | English

Español

Índice

Descripción

AdoptMe es una aplicación backend diseñada para gestionar adopciones de mascotas. Proporciona un conjunto de endpoints para manejar usuarios, mascotas, listas de adopción y datos relacionados.

Stack

Capa Tecnología Características Clave Demostradas
Back-end Node.js con Express Arquitectura RESTful, manejo de rutas modulares y controladores para la gestión de usuarios, mascotas y adopciones.
Base de Datos MongoDB (Mongoose ODM) Modelado flexible de documentos, integración fluida con Node.js y consultas optimizadas.
Autenticación JWT (JSON Web Tokens) Protección de endpoints mediante tokens firmados y sesiones seguras.
Seguridad Bcrypt Cifrado robusto de contraseñas y validación de credenciales en procesos de login y registro.
Documentación API Swagger Generación automática y visualización interactiva de endpoints para pruebas y validación.
Testing Mocha y Chai Implementación de tests unitarios y de integración para validar flujos críticos de negocio.
Gestión de Archivos Multer Middleware para la carga y manejo de imágenes de mascotas, con validaciones de tipo y tamaño.
Datos Mock Faker.js Generación de datos simulados (usuarios y mascotas) para pruebas y desarrollo.
Contenedorización Docker y Docker Compose Empaquetado y despliegue reproducible del entorno backend con configuración aislada.

Requerimientos

Requerimientos

  • Node.js (v14 o superior): motor para ejecutar el servidor.

  • MongoDB: base de datos NoSQL; puedes usar una instancia local o un servicio en la nube como MongoDB Atlas.

  • Docker y Docker Compose (opcional): si prefieres ejecutar la app contenedorizada.

    Instalación

  1. Clona el repositorio:
   git clone https://github.com/itsPatH/adoptMe.git
  1. Instala las dependencias:
   npm install
   #or
   pnpm install
   #or
   yarn install
  1. Crea un archivo .env en el directorio raíz y configura las variables de entorno requeridas.
PORT=8080
MONGO_URL="mongodb://localhost:27017/adoptme_db"
JWT_SECRET="tu_clave_secreta_jwt"
ADMIN_PASSWORD="una_clave_segura_para_usuario_admin"

Si usas MongoDB Atlas, reemplaza mongodb://localhost:27017/adoptme_db por la URI de conexión que te proporciona Atlas. 5. Correr el proyecto:

npm run dev     # Modo desarrollo
npm run start   # Modo producción

Documentación Swagger

Una vez el servidor esté corriendo, puedes acceder a la documentación interactiva: http://localhost:8080/api/docs

Endpoints

Formato base de la API:

Base URL: `http://localhost:8080/api`
Método Endpoint Descripción
GET /adoptions Obtiene todas las adopciones
GET /adoptions/:aid Obtiene una adopción por ID
POST /adoptions/:uid/:pid Crea una nueva adopción
GET /pets Obtiene todas las mascotas
POST /pets Crea una nueva mascota
PUT /pets/:pid Actualiza los datos de una mascota por ID
DELETE /pets/:pid Elimina una mascota por ID
GET /users Obtiene todos los usuarios
POST /users Crea un nuevo usuario
PUT /users/:uid Actualiza los datos de un usuario por ID
DELETE /users/:uid Elimina un usuario por ID
GET /mockingusers Genera 50 usuarios falsos para pruebas
GET /mockingpets Genera 10 mascotas falsas para pruebas
POST /generateData Genera datos ficticios de usuarios y mascotas

Licencia

Este proyecto está licenciado bajo los términos de la licencia MIT. Para más detalles, consulta el archivo LICENSE.md.


🇬🇧 English

Index

Description

AdoptMe is a backend application designed to manage pet adoptions. It provides a set of endpoints for handling users, pets, adoption lists, and related data.

Stack

Layer Technology Key Features Demonstrated
Back-end Node.js with Express RESTful architecture, modular routing, and controllers for managing users, pets, and adoptions.
Database MongoDB (Mongoose ODM) Flexible document modeling, seamless Node.js integration, and optimized querying.
Authentication JWT (JSON Web Tokens) Secured endpoints with signed tokens and robust session management.
Security Bcrypt Strong password hashing and credential validation for login and registration flows.
API Documentation Swagger Automated generation and interactive visualization of endpoints for testing and validation.
Testing Mocha & Chai Implementation of unit and integration tests to ensure business logic reliability.
File Management Multer Middleware for image uploads and file handling, including type and size validation.
Mock Data Generation Faker.js Creation of simulated data (users and pets) for testing and development purposes.
Containerization Docker & Docker Compose Environment packaging and reproducible backend deployment with isolated configuration.

Requirements

  • Node.js (v14 or higher): Engine for running the server.
  • MongoDB: NoSQL database; you can use a local instance or a cloud service like MongoDB Atlas.
  • Docker and Docker Compose (optional): if you prefer to run the containerized application.

Installation

  1. Clone the project repository:
   git clone https://github.com/itsPatH/adoptMe.git
   cd AdoptMe
  1. Install dependencies:
   npm install
   #or
   pnpm install
   #or
   yarn install
  1. Create a .env file in the root directory and configure the required environment variables.
PORT=8080
MONGO_URL="mongodb://localhost:27017/adoptme_db"
JWT_SECRET="your_jwt_secret_key"
ADMIN_PASSWORD="secure_admin_password"

If you're using MongoDB Atlas, replace the local URI with your Atlas connection string. 5. Run the app:

npm run dev     # Dev mode
npm run start   # Prod mode

Swagger

Once the server is running, you can access the interactive documentation: http://localhost:8080/api/docs

Available Endpoints

Method Endpoint Description GET /adoptions Retrieve all adoptions GET /adoptions/:aid Retrieve adoption by ID POST /adoptions/:uid/:pid Create a new adoption GET /pets Retrieve all pets POST /pets Create a new pet PUT /pets/:pid Update pet details by ID DELETE /pets/:pid Delete a pet by ID GET /users Retrieve all users POST /users Create a new user PUT /users/:uid Update user details by ID DELETE /users/:uid Delete a user by ID GET /mockingusers Generate 50 fake users for testing purposes GET /mockingpets Generate 10 fake pets for testing purposes POST /generateData Generate mock data for users and pets

License

This project is licensed under the MIT License. MIT

About

This a backend app of adoption

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors