Skip to content

Sixela33/deployment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Mercado Ganadero

Una plataforma de marketplace para ganado con autenticación, planes de suscripción y gestión de publicaciones.

Tecnologías

Backend

  • NestJS 11 - Framework Node.js
  • TypeScript 5 - Lenguaje tipado
  • PostgreSQL 16 - Base de datos con TypeORM
  • JWT + Google OAuth 2.0 - Autenticación
  • AWS S3 - Almacenamiento de imágenes
  • pnpm - Gestor de paquetes

Frontend

  • React 19 - Librería UI
  • Vite 6 - Build tool
  • TailwindCSS 4 - Estilos
  • TanStack Query - Estado del servidor
  • Radix UI + shadcn/ui - Componentes

Infraestructura

  • Docker - Contenedores
  • Caddy - Servidor web con HTTPS automático
  • PostgreSQL - Base de datos

Arquitectura

┌─────────────────────────────────────────────────────────────┐
│                         Internet                             │
└─────────────────────────┬───────────────────────────────────┘
                          │
         ┌────────────────┴────────────────┐
         │                                 │
         ▼                                 ▼
┌─────────────────┐               ┌─────────────────┐
│    Frontend     │               │     Backend     │
│  (Caddy:80/443) │───────────────│   (Node:3000)   │
│   React + Vite  │   API Calls   │     NestJS      │
└─────────────────┘               └────────┬────────┘
                                           │
                                           ▼
                                  ┌─────────────────┐
                                  │   PostgreSQL    │
                                  │    (DB:5432)    │
                                  └─────────────────┘
                                           │
                                           ▼
                                  ┌─────────────────┐
                                  │     AWS S3      │
                                  │   (Imágenes)    │
                                  └─────────────────┘

Inicio Rápido con Docker

1. Clonar y configurar

# Clonar el repositorio
git clone <repo-url>
cd Base-Nest

# Copiar archivo de entorno
cp .env.example .env

# Editar .env con tus credenciales
nano .env

2. Levantar todo el stack

# Construir y levantar todos los servicios
docker compose up -d

# Ver logs
docker compose logs -f

# Ver logs de un servicio específico
docker compose logs -f backend
docker compose logs -f frontend

3. Acceder a la aplicación

Comandos útiles

# Parar todos los servicios
docker compose down

# Reconstruir imágenes
docker compose build

# Reconstruir y levantar
docker compose up -d --build

# Ver estado de los servicios
docker compose ps

# Limpiar volúmenes (⚠️ borra datos)
docker compose down -v

Desarrollo Local

Requisitos

  • Node.js 20+
  • pnpm
  • Docker (para PostgreSQL)

Backend

cd backend

# Instalar dependencias
pnpm install

# Configurar entorno
cp .env.example .env

# Levantar PostgreSQL
docker compose up -d postgres

# Ejecutar en desarrollo
pnpm start:dev

Frontend

cd frontend

# Instalar dependencias
pnpm install

# Configurar entorno
cp .env.example .env

# Ejecutar en desarrollo
pnpm dev

Variables de Entorno

Archivo .env (raíz del proyecto)

# Base de datos
DB_HOST=postgres
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=tu-password-seguro
DB_NAME=mercado_ganadero

# JWT
ACCESS_JWT_SECRET=tu-secret-access-muy-seguro
ACCESS_JWT_EXPIRE_IN=900
REFRESH_JWT_SECRET=tu-secret-refresh-muy-seguro
REFRESH_JWT_EXPIRE_IN=604800

# Google OAuth
GOOGLE_CLIENT_ID=tu-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=tu-client-secret

# AWS S3
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=tu-access-key
AWS_SECRET_ACCESS_KEY=tu-secret-key
AWS_S3_BUCKET_NAME=tu-bucket

# URLs
FRONTEND_URL=http://localhost
VITE_API_URL=http://localhost:3000

Estructura del Proyecto

Base-Nest/
├── backend/                 # API NestJS
│   ├── src/
│   │   ├── auth/           # Autenticación (JWT, Google OAuth)
│   │   ├── user/           # Gestión de usuarios
│   │   ├── posts/          # Publicaciones y conexiones
│   │   ├── plans/          # Planes de suscripción
│   │   └── s3-service/     # Servicio AWS S3
│   ├── Dockerfile
│   └── docker-compose.yml  # Solo PostgreSQL
│
├── frontend/               # React SPA
│   ├── src/
│   │   ├── components/     # Componentes UI
│   │   ├── pages/          # Páginas de la app
│   │   ├── contexts/       # Contextos React
│   │   └── utils/          # Utilidades
│   ├── Dockerfile
│   └── Caddyfile          # Configuración Caddy
│
├── docker-compose.yml      # Stack completo
├── .env.example           # Template de variables
└── README.md              # Este archivo

API Endpoints Principales

Módulo Endpoint Descripción
Auth GET /auth/google/login Iniciar login con Google
Auth POST /auth/refresh Renovar token
User GET /user/profile Obtener perfil
Posts GET /posts Listar publicaciones
Posts POST /posts Crear publicación
Plans GET /plans Listar planes
Subscriptions GET /subscriptions/my Mi suscripción

Ver documentación completa en backend/README.md.

HTTPS en Producción

El frontend usa Caddy, que obtiene certificados TLS automáticamente. Para habilitar HTTPS:

  1. Editar frontend/Caddyfile
  2. Descomentar el bloque de producción y configurar tu dominio
  3. Asegurar que los puertos 80 y 443 estén abiertos
tudominio.com {
    root * /srv
    encode gzip
    try_files {path} /index.html
    file_server
}

Licencia

Privado - Todos los derechos reservados

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published