server.js: Es la aplicación backend completa. Crea una API REST para gestionar tareas. Un modelo de arquitectura común de Express con Mongo:
server.js
Para la colección de tareas en MongoDB usando el modelo de tareas tenemos que por cada una se registra:
Campo
Tipo
Descripción
titulo
String (obligatorio)
Título de la tarea
descripcion
String
Detalles opcionales
completada
Boolean
Si está hecha o no
fechaCreacion
Date
Fecha automática de creación
El modelo Tarea permite crear, consultar, actualizar o borrar documentos en MongoDB fácilmente.
Lo que convierte al servidor en una “API REST” es que usar métodos HTTP (GET, POST, PUT, DELETE) para manejar recursos (en este caso, las tareas de las que hemos hablado).
El servidor expone las siguientes rutas:
Método
Ruta
Acción
Descripción
GET
/health
Leer
Devuelve si el servidor y la db están activos.
GET
/tareas
Leer
Devuelve todas las tareas (ordenadas por fecha).
GET
/tareas/:id
Leer
Devuelve una tarea concreta por su ID.
POST
/tareas
Crear
Crea una nueva tarea en la base de datos.
PUT
/tareas/:id
Actualizar
Modifica los datos de una tarea existente.
DELETE
/tareas/:id
Borrar
Elimina una tarea de la base de datos.
Cada una de estas rutas responde con datos en formato JSON para que el frontend (React en nuestro caso) pueda entender las respuestas.
package.json: Este archivo simplemente lista las dependencias que Node.js necesita instalar. Es como el "requirements.txt" de Python o "composer.json" de PHP.
package.json
Vamos ahora sí, con la instalación de dependencias:
Ahora iniciamos el proyecto con PM2
Aquí te dirá algo como:
Simplemente ejecuta ese comando. Ahora, para verificar el estado puedes:
Y puedes probar con:
Código del Frontend (React + Vite)
Esta carpeta la empezariamos con Vite con el siguiente comando:
Que hace exactamente esto:
Lo cual genera automáticamente:
Ya después necesitariamos instalar:
Los archivos a trabajar (como ya hemos indicado) son los siguientes:
src/App.jsx → [Código del componente App] src/App.css → [Código de estilos]src/main.jsx →[Entry point de REACT]
Algunos archivos más necesarios más del proyecto:
index.html (raíz del proyecto):vite.config.js:.gitignore:
MERN_example/
├── backend/ # Servidor Node.js + Express
│ ├── server.js # Punto de entrada de la API
│ ├── package.json # Dependencias del backend
│ └── .env # Variables de entorno (no incluido en repo)
│
├── frontend/ # Aplicación React + Vite
│ ├── src/
│ │ ├── App.jsx # Componente principal
│ │ ├── App.css # Estilos
│ │ └── main.jsx # Punto de entrada React
│ ├── package.json # Dependencias del frontend
│ ├── vite.config.js # Configuración de Vite
│ └── .env # Variables de entorno (no incluido en repo)
│
└── README.md # Este archivo
npm create vite@latest → Ejecuta el "creador oficial" de proyectos Vite (versión más reciente)de Internet sin necesidad de instalar
frontend → NOMBRE de la carpeta que crea (tu proyecto)
-- --template react → OPCIONES para Vite: "usa la plantilla React"
textfrontend/ ← Carpeta creada
├── index.html ← HTML base
├── package.json ← Dependencias React + Vite listas
├── vite.config.js ← Configuración Vite optimizada
├── src/
│ ├── main.jsx ← Entry point React
│ ├── App.jsx ← Tu componente principal
│ └── App.css ← Estilos base
└── README.md
npm install # Instala React, Vite, etc.
npm run dev # Inicia servidor desarrollo
#o bien
npm run build # Iniciar la build
# Dependencias
node_modules/
# Archivos de producción
dist/
# Variables de entorno
.env
.env.local
# Logs
npm-debug.log*
yarn-debug.log*
# Editor
.vscode/
.idea/
# .env
# Archivo de configuración para el frontend
# URL del backend API
# En desarrollo local:
VITE_API_URL=http://localhost:3001
# En producción con Nginx (mismo dominio):
# VITE_API_URL=/api
# En producción con backend separado:
# VITE_API_URL=https://api.tudominio.com