🏙️ 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
- Nunca commitear el archivo
.enval repositorio. - 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.