Skip to content

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

License

Notifications You must be signed in to change notification settings

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

 
 
 

Contributors