API de chat en tiempo real con ASP.NET Core 10: JWT, MongoDB, Redis, RabbitMQ, SignalR y Cloudinary.
¿Primera vez en el proyecto? Sigue la guía paso a paso (instalación, configuración, errores comunes):
- Sitio web: dar3kdev.github.io/uni-chat-backend
- En el repo: docs/instalacion.md · docs/GUIA-INSTALACION.md (índice)
- Inicio rápido
- Estructura del repositorio
- Requisitos
- Configuración
- Makefile
- CI/CD y calidad
- Imagen Docker (GHCR)
- Windows sin Make
- Solución de problemas
- Seguridad
- Documentación
Desde la carpeta del proyecto .NET (uni-chat-backend/uni-chat-backend/):
# 1. Variables de entorno (Docker / servicios)
cp .env.ci.example .env
# 2. Configuración de Cloudinary (opcional)
cp appsettings.ci.Development.example.json appsettings.Development.json
# Edita appsettings.Development.json (localhost) y Cloudinary en .env si lo necesitas
# 3. Generar configuración de ASP.NET (OBLIGATORIO)
make setup
# 4. Levantar infraestructura (MongoDB, Redis, RabbitMQ, etc.) y API
make up && make runPasos detallados, checklist y troubleshooting: instalacion.md o el sitio de documentación.
uni-chat-backend/ ← raíz del repo (este README)
├── .githooks/ ← pre-commit (make install-hooks)
├── .github/workflows/ ← CI/CD en GitHub Actions
├── scripts/ ← render-env.sh, install-git-hooks.sh
├── docs/ ← Jekyll (GitHub Pages)
│ ├── _config.yml
│ ├── instalacion.md
│ ├── backend.md
│ ├── cicd.md
│ ├── chat-privado/ ← sección anidada (arquitectura, E2EE, …)
│ ├── github-secrets.md
│ └── contribuir-docs.md
├── uni-chat-backend/ ← código .NET + Makefile + Docker
│ ├── Makefile
│ ├── .env.example
│ ├── .env.ci.example ← valores dummy para dev
│ ├── docker-compose.yml
│ ├── uni-chat-backend.csproj
│ └── uni-chat-backend.Tests/
└── uni-chat-backend.slnx
Todos los comandos
makeydocker composese ejecutan desdeuni-chat-backend/uni-chat-backend/.
| Herramienta | Linux / WSL | macOS | Windows |
|---|---|---|---|
| .NET SDK 10 | Descarga | brew install dotnet |
Instalador o WSL2 |
| Docker + Compose v2 | Docker Engine | Docker Desktop | Docker Desktop (WSL2) |
| GNU Make | apt install build-essential |
Xcode CLI / brew install make |
WSL2 recomendado |
| Ruby + Bundler (opcional) | Solo preview local de docs | brew install ruby |
WSL2 |
En Windows, el Makefile requiere bash (WSL2 o Git Bash). Ver Windows sin Make.
| Archivo | Uso |
|---|---|
.env |
Variables para Docker Compose |
appsettings.json |
API en el host con make run |
.env.ci.example |
Valores de prueba listos para copiar |
.env.example |
Plantilla vacía (make setup) |
appsettings.Development.json |
generado automáticamente con make setup |
Guía completa de variables y ejemplos: Instalación — Paso 3.
Secrets en producción / GitHub: github-secrets.md.
Ejecuta make help desde uni-chat-backend/ (descripciones en español).
| Comando | Descripción |
|---|---|
help |
Lista de comandos |
up |
Levanta MongoDB, Redis, RabbitMQ y paneles |
down |
Detiene contenedores |
run |
API en http://localhost:5012 |
dev |
setup + up + run |
ps / ports / logs |
Estado, puertos y logs Docker |
docker-up |
Stack completo con API en puerto 8080 |
| Comando | Descripción |
|---|---|
ci |
restore + lint + build + test (como GitHub Actions) |
pre-commit |
lint + build + test (hook local) |
install-hooks |
Activa pre-commit en Git (una vez) |
lint / lint-fix |
Formato whitespace |
test |
Tests unitarios |
env-from-ci |
Genera .env desde variables de entorno |
| Comando | Descripción |
|---|---|
docs-install |
bundle install en docs/ |
docs |
Servidor Jekyll local |
docs-build |
Build estático (validación) |
Publicación: push a main → GitHub Pages construye docs/ automáticamente. Ver contribuir-docs.md.
Workflow: .github/workflows/ci-cd-backend.yml
| Evento | Qué ocurre |
|---|---|
| Push / PR (cualquier rama) | Job ci en ubuntu-24.04: make ci |
Push a main (si CI pasa) |
Build y push imagen a GHCR |
Local:
make install-hooks # una vez: pre-commit en cada commit
make ci # antes de push| Comando | Incluye |
|---|---|
make pre-commit |
lint + build + test |
make ci |
restore + lint + build + test |
Deploy a servidores: aún manual; ver github-secrets.md.
Tras cada push exitoso a main:
ghcr.io/dar3kdev/uni-chat-backend:latest
ghcr.io/dar3kdev/uni-chat-backend:main
ghcr.io/dar3kdev/uni-chat-backend:<commit-sha>
Uso en servidor, compose de producción y login en registry: Instalación — Producción GHCR.
Desde uni-chat-backend/:
| Make | Comando equivalente |
|---|---|
setup |
cp .env.example .env |
up |
docker compose up -d |
down |
docker compose down |
run |
dotnet run --project uni-chat-backend.csproj |
build |
dotnet build ../uni-chat-backend.slnx -c Release |
test |
dotnet test uni-chat-backend.Tests/uni-chat-backend.Tests.csproj -c Release |
ci |
Usar WSL y make ci |
| Problema | Qué hacer |
|---|---|
dotnet: command not found |
.NET 10 + export PATH="$HOME/.dotnet:$PATH" en ~/.bashrc |
make: command not found |
WSL2 o apt install build-essential |
| Docker / puerto en uso | make down, make ps |
| API no conecta a Mongo/Redis | localhost en appsettings.json con make run; hosts Docker en .env con docker-up |
| CI o commit falla en lint | make lint-fix |
Más casos y soluciones paso a paso: Instalación — Errores frecuentes.
- No commitees
.envni claves reales (el pre-commit lo bloquea en staging). - Desarrollo y producción: secretos distintos.
- GitHub Actions / deploy: github-secrets.md y
make env-from-ci.
| Recurso | Enlace |
|---|---|
| Sitio (GitHub Pages) | dar3kdev.github.io/uni-chat-backend |
| Instalación | instalacion.md |
| Backend / API | backend.md |
| Chat privado / E2E | Sitio — Chat privado |
| CI/CD | cicd.md · Sitio |
| CI/CD y secrets | github-secrets.md |
| Editar el sitio | contribuir-docs.md |
| Preview local | make docs desde uni-chat-backend/uni-chat-backend/ |
| OpenAPI / Scalar | http://localhost:5012/scalar/v1 (API en Development) |