🏙️ Tesa - Plataforma de Denuncias Ciudadanas

Aplicación web mobile-first que permite a cualquier persona reportar siniestros urbanos (baches, árboles caídos, alumbrado roto, etc.) de forma anónima, con moderación automática y detección de duplicados asistida por Inteligencia Artificial (Gemini 1.5 Flash).


🛠️ Estructura del Monorepo

Este proyecto está estructurado como un monorepo administrado mediante pnpm Workspaces y Turborepo:

  • apps/web: Aplicación Next.js (React) que contiene el frontend (App Router) y la API del backend (Route Handlers) unificados en un solo despliegue listo para AWS Amplify.
  • packages/db: Paquete de acceso a datos que contiene el esquema de Prisma ORM y exporta la conexión de base de datos cliente.
  • packages/ui: Componentes visuales compartidos de React.
  • packages/tsconfig: Configuraciones compartidas de TypeScript.
  • packages/eslint-config: Reglas compartidas de linter.

🚀 Guía de Inicio Rápido (Local)

1. Inicializar el Entorno

Ejecutá el script de inicialización para validar tu entorno local (Node.js, pnpm) e instalar dependencias:

.\init.ps1

2. Configurar las Variables de Entorno

Copiá el archivo .env.example en la raíz del proyecto para crear tu archivo .env:

cp .env.example .env

Luego, editá el archivo .env configurando los valores correspondientes:

  • DATABASE_URL: Cadena de conexión a tu base de datos PostgreSQL (local con Docker o en la nube).
  • GEMINI_API_KEY: Tu clave de la API de Google Gemini (generada en Google AI Studio).
  • SUPABASE_URL / SUPABASE_SERVICE_ROLE_KEY: Credenciales de Supabase Storage para subir imágenes de denuncias.
  • ADMIN_TOKEN: Token secreto utilizado para validar temporalmente el panel de administración.

3. Levantar la Base de Datos Local (Opcional)

Si querés usar PostgreSQL en un contenedor Docker local:

docker-compose up -d

4. Levantar Servidor de Desarrollo

Para arrancar el frontend y backend en simultáneo con recarga rápida (HMR):

pnpm dev

5. Compilar para Producción

Para verificar que el monorepo compile de punta a punta:

pnpm build

🔒 Buenas Prácticas de Seguridad

  1. Nunca commitear el archivo .env al repositorio.
  2. Todas las credenciales o claves de acceso deben ser administradas de manera segura y proporcionadas en producción mediante las variables de entorno de AWS Amplify o la plataforma de hosting seleccionada.