Skip to content

Albertocoge/blogspot-api

Repository files navigation

📰 Blogspot API

Full-Stack MERN Blogging Platform — Backend

API RESTful desarrollada con Node.js, Express y MongoDB para una plataforma de blogging, donde los usuarios pueden registrarse, publicar artículos, editar su perfil y explorar contenido de otros autores.

🌍 Frontend: blogspot-app (React)

🚀 App online: https://blogspot-app-mauve.vercel.app/

📌 Descripción del Proyecto

Blogspot es una aplicación Full Stack MERN (MongoDB, Express, React, Node.js) creada para fomentar comunidades de escritores y lectores. La API gestiona usuarios, autenticación JWT, creación y edición de publicaciones, subida de imágenes y gestión de categorías.

El frontend permite a los usuarios explorar artículos, registrarse, iniciar sesión, personalizar su perfil y subir contenido de forma intuitiva.

🧩 Tecnologías Principales

Backend:

Node.js + Express.js

MongoDB + Mongoose

JWT (autenticación segura)

bcrypt.js (hashing de contraseñas)

express-fileupload (gestión de imágenes)

dotenv (configuración de variables de entorno)

CORS configurado para entorno de producción y desarrollo

Frontend:

React + Vite

Axios (consumo de la API)

TailwindCSS (estilo moderno y responsive)

⚙️ Estructura del Proyecto blogspot-api/ │ ├── controllers/ │ ├── postControllers.js │ └── userControllers.js │ ├── middleware/ │ ├── authMiddleware.js │ └── errorMiddleware.js │ ├── models/ │ ├── postModel.js │ ├── userModel.js │ └── errorModel.js │ ├── routes/ │ ├── postRoutes.js │ └── userRoutes.js │ ├── uploads/ # Carpeta para imágenes (thumbnails y avatares) ├── index.js # Entry point del servidor ├── .env.example # Variables de entorno (ejemplo) ├── package.json └── LICENSE

🚀 Instalación y Uso 1️⃣ Clonar el repositorio git clone https://github.com/Albertocoge/blogspot-api.git cd blogspot-api

2️⃣ Instalar dependencias npm install

3️⃣ Configurar variables de entorno

Crea un archivo .env en la raíz del proyecto con las siguientes claves:

PORT=5000 MONGO_URI=mongodb+srv://:@cluster.mongodb.net/blogspot JWT_SECRET=tu_clave_segura_jwt CLIENT_URL=http://localhost:5173

4️⃣ Ejecutar el servidor en desarrollo npm run dev

Servidor disponible en: 👉 http://localhost:5000

📡 Endpoints Principales 🧑‍💻 Usuarios /api/users Método Ruta Descripción Autenticación POST /register Registrar un nuevo usuario ❌ POST /login Iniciar sesión y obtener token JWT ❌ GET /:id Obtener información de un usuario ❌ GET / Listar todos los autores ❌ POST /change-avatar Cambiar avatar del usuario ✅ PATCH /edit-user Editar perfil (nombre, email, contraseña) ✅ 📝 Posts /api/posts Método Ruta Descripción Autenticación POST / Crear un nuevo post (con imagen) ✅ GET / Obtener todos los posts ❌ GET /:id Obtener post por ID ❌ GET /categories/:category Obtener posts por categoría ❌ GET /users/:id Obtener posts de un usuario ❌ PATCH /:id Editar un post existente ✅ DELETE /:id Eliminar un post ✅ 🧠 Middleware Destacado

authMiddleware.js → Protege rutas con JWT.

errorMiddleware.js → Gestión centralizada de errores.

express-fileupload → Permite subir imágenes de perfil o miniaturas de post.

🔒 Seguridad y Buenas Prácticas

Contraseñas cifradas con bcryptjs.

Tokens JWT con expiración de 1 día.

Sanitización y validaciones en el backend.

CORS configurado con dominios específicos:

localhost:5173 (dev)

blogspot-app-mauve.vercel.app

blogspot-app-lyart.vercel.app

blogspot-app-testing.vercel.app

🧑‍🎨 Autor

👤 Alberto Codoñer Gea 👤 Michael B. Díaz B. Desarrollador Full Stack | MERN GitHub

Frontend Repository

🪪 Licencia

Este proyecto está bajo la licencia ISC. Eres libre de usarlo, modificarlo y distribuirlo citando al autor original.

🌟 Próximas Mejoras (Roadmap)

✏️ Comentarios en los posts

🏷️ Tags múltiples por artículo

🧭 Paginación y filtrado avanzado

🧰 Panel de administración

☁️ Integración con Cloudinary para imágenes

About

RESTful API built with JavaScript to manage blog posts, comments, and user interactions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •