Asterium es una plataforma fullstack dedicada a la astronomía, el cosmos y la ciencia del universo.
Combina un blog interactivo (frontend) y una API REST profesional (backend) para gestionar artículos, descubrimientos astronómicos, usuarios y contenido visual.
El objetivo del proyecto es hacer que la astronomía sea accesible, inspiradora y visualmente atractiva, integrando diseño, tecnología y comunidad.
- Visión general
- Frontend — Blog Interactivo
- Backend — API REST Asterium Server
- Equipo de desarrollo
- Notas finales
Frontend: React + Vite + TailwindCSS
Backend: Node.js + Express + TypeScript + Sequelize + MySQL
Infraestructura: Cloudinary · JWT · Helmet · CORS
Testing: Jest · Supertest
Validación: Zod
El frontend de Asterium permite a los usuarios:
- 🪐 Leer artículos sobre planetas, galaxias y descubrimientos
- ✍️ Crear y publicar sus propias entradas
- 👤 Gestionar su perfil y actividad
El diseño está inspirado en el cielo nocturno: tonos oscuros, detalles estelares, transiciones suaves y tipografía moderna.
- Página principal: flujo de artículos y secciones temáticas
- Registro / Inicio de sesión: autenticación mediante formulario
- Perfil del usuario: gestión del perfil y publicaciones propias
- Crear artículo: editor con soporte Markdown
- Ver artículo: página limpia con contenido y comentarios
| Categoría | Tecnologías |
|---|---|
| Framework | React + Vite |
| Estilos | TailwindCSS |
| Navegación | React Router |
| API | Axios |
| Renderizado | Markdown |
| Estado global | Zustand |
| Validación | Custom Validators |
/client
├── src/
│ ├── assets/ # imágenes e íconos
│ ├── components/ # componentes UI
│ ├── pages/ # vistas (Home, Article, Profile)
│ ├── router/ # enrutamiento
│ ├── services/ # conexión con API
│ ├── store/ # estado global
│ ├── validators/ # validaciones
│ └── main.jsx# 1. Clonar el repositorio
git clone https://github.com/Asterium360/Aster-Client.git
# 2. Instalar dependencias
npm install
# 3. Ejecutar el proyecto
npm run dev🛰️ Frontend disponible en → http://localhost:5173
Node.js · Express · TypeScript · Sequelize · MySQL · Cloudinary · JWT
Asterium Server es una API REST moderna y escalable para gestionar descubrimientos astronómicos con autenticación, roles y carga de imágenes.
-
🔐 Registro y autenticación de usuarios (roles: admin y user)
-
🧩 CRUD completo de descubrimientos astronómicos
-
☁️ Carga flexible de imágenes (archivo o URL) con Cloudinary
-
🧠 Validación robusta con Zod
-
🧱 ORM Sequelize conectado a MySQL
-
🛡️ Middlewares personalizados para autenticación, validación y seguridad
-
🧪 Pruebas unitarias con Jest y Supertest
| Rol | Listar | Ver detalle | Crear | Editar | Eliminar |
|---|---|---|---|---|---|
| 🧍♀️ Usuario | ✅ | ✅ | ✅ | ✅ (solo sus descubrimientos) | ✅ (solo sus descubrimientos) |
| 🛡️ Admin | ✅ | ✅ | ✅ | ✅ (todos) | ✅ (todos) |
🔒 Solo los usuarios autenticados pueden crear, editar o eliminar.
👑 Los administradores tienen control total sobre todos los registros.
| Categoría | Tecnologías |
|---|---|
| Lenguaje | TypeScript |
| Framework | Express.js |
| ORM / DB | Sequelize + MySQL |
| Validación | Zod |
| Seguridad | Helmet · CORS · JWT |
| Imágenes | Cloudinary + Multer |
| Testing | Jest · Supertest |
| Documentación | Postman |
├── config/ # Configuración de Cloudinary`
├── controllers/ # Lógica de negocio (Asterium, Auth, Users)`
├── middlewares/ # Auth, roles, validaciones`
├── models/ # Modelos Sequelize`
├── routes/ # Definición de endpoints`
├── schemas/ # Validaciones Zod`
├── seeders/ # Datos iniciales`
├── tests/ # Pruebas unitarias`
├── db.ts # Conexión MySQL`
├── app.ts # Configuración Express`
└── index.ts # Punto de entrada`# 1. Clonar el repositorio
git clone https://github.com/Asterium360/Aster-Server.git
cd server`
# 2. Instalar dependencias
npm install`
# 3. Configurar variables de entorno
# Crea el archivo .env:
DB_NAME=asterium
DB_USER=root
DB_PASSWORD=tu_contraseña
DB_HOST=localhost
DB_PORT=3306
JWT_SECRET=tu_token_secreto
PORT=4000
# 4. Ejecutar en modo desarrollo
npm run dev🌍 Servidor disponible en → http://localhost:4000
-
Imágenes gestionadas con Multer + CloudinaryStorage
-
Carpeta automática:
Asterium_Discoveries -
Se aceptan archivos locales o URLs externas
const image_url = req.file?.path || body.image_url || null;
| Método | Endpoint | Descripción | Auth |
|---|---|---|---|
| POST | /auth/register | Registrar usuario | ❌ |
| POST | /auth/login | Iniciar sesión (JWT) | ❌ |
| PUT | /auth/promote/:id | Promover usuario a admin | ✅ Solo admin |
| Método | Endpoint | Descripción | Auth |
|---|---|---|---|
| GET | /asterium | Listar descubrimientos | ✅ Logueados |
| GET | /asterium/:id | Ver detalle | ✅ Logueados |
| POST | /asterium | Crear nuevo descubrimiento | ✅ user/admin |
| PUT | /asterium/:id | Editar propio o admin | ✅ user/admin |
| DELETE | /asterium/:id | Eliminar propio o admin | ✅ user/admin |
| Archivo | Propósito |
|---|---|
auth.test.ts |
Registro, login y JWT |
asterium.test.ts |
CRUD de descubrimientos |
auth.ts |
Middleware de autenticación |
checkRole.ts |
Middleware de permisos |
Ejecutar pruebas:
npm test
📗 Ver colección completa en Postman
Incluye todos los endpoints, ejemplos funcionales y tokens de prueba.
| Nombre | Rol | GitHub | |
|---|---|---|---|
| Anngie | Project Lead, Fullstack Developer | link | link |
| Larysa | Scrum Master, UI designer, Frontend Developer | link | link |
| Michelle | Frontend Developer | link | link |
| Maryori | Backend Developer | link | link |
| Sofia | Backend Developer | link | link |
Proyecto desarrollado en Factoría F5 – Bootcamp FullStack & DevOps.
Diseñado aplicando buenas prácticas de arquitectura, seguridad y documentación profesional.