🎯 TutorConnect UC - Resumen Ejecutivo (Supabase Stack)
✅ Lo que YA TIENES
- ✅ courses.ndjson: Miles de ramos reales UC con códigos exactos
- ✅ Experiencia Full-stack: React, TypeScript, PostgreSQL
- ✅ Bases del Hackathon: Conoces reglas, criterios de evaluación, deadlines
- ✅ Diseño completo: Base de datos, UX/UI, arquitectura documentada
🚀 Stack Tecnológico Final (Supabase)
┌─────────────────────────────────────────────────────────────┐
│ FRONTEND (Vercel) │
│ Next.js 14 + App Router + TypeScript │
│ Tailwind CSS + shadcn/ui │
│ Supabase Client (Auth + Database + Realtime) │
│ @supabase/auth-helpers-nextjs │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ SUPABASE (Backend) │
│ ✅ PostgreSQL Database (con RLS) │
│ ✅ Authentication (@uc.cl verification) │
│ ✅ Storage (Fotos de perfil) │
│ ✅ Realtime (Subscripciones en tiempo real) │
│ ✅ Edge Functions (Gemini AI + APIs externas) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ INTEGRACIONES │
│ • Google Gemini API (Matching inteligente) │
│ • Biblioteca UC API (Reserva de salas - opcional) │
└─────────────────────────────────────────────────────────────┘
🎯 ¿Por Qué Supabase para Este Hackathon?
| Característica | Ventaja |
|---|---|
| ⚡ Setup rápido | 5 min vs 30 min con Laravel |
| 🔐 Auth incluido | Email @uc.cl verification built-in |
| 🛡️ Row Level Security | Seguridad a nivel de BD sin código |
| 📡 Realtime | Notificaciones/chat sin configuración |
| 🖼️ Storage | Subida de fotos sin S3 |
| 🚀 Edge Functions | Deploy de Gemini AI sin servidor |
| 💰 Free tier | Perfecto para hackathon |
| 📱 TypeScript | Todo en un solo lenguaje |
📊 Arquitectura de Datos
Tablas Principales
profiles (auth.users extendido)
↓
tutores ← tutor_ramo → ramos
↓ ↓
tutoring_sessions
↓
reviews
Features Clave de la BD
- ✅ UUID como PK (mejor para distributed systems)
- ✅ RLS Policies (seguridad automática)
- ✅ Triggers (auto-update timestamps)
- ✅ Funciones SQL (cálculos de rating, conteos)
- ✅ Vistas materializadas (queries complejas optimizadas)
🎨 Páginas del Frontend
Para Estudiantes (Next.js)
/- Landing page con hero + búsqueda/buscar- Búsqueda de tutores con filtros/tutor/[id]- Perfil completo de tutor/ofertas- Marketplace de ofertas/busquedas- Posts de estudiantes buscando tutores/agendar/[tutorId]- Modal/página de agendamiento/mis-tutorias- Dashboard del estudiante/perfil- Perfil del usuario
Para Tutores (Next.js Dashboard)
/tutor/dashboard- Dashboard con stats/tutor/ofertas- Gestión de ofertas/tutor/propuestas- Ver búsquedas de estudiantes/tutor/sesiones- Calendario de tutorías/tutor/perfil- Configuración de tutor
🤖 Integración con Gemini AI
3 Casos de Uso
1. Matching Inteligente (/buscar)
// Edge Function: supabase/functions/gemini-match
Input: courseCode, studentPreferences
Output: Top 3 tutores con reasoning2. Generador de Propuestas (/tutor/propuestas)
// Edge Function: supabase/functions/generate-proposal
Input: studentRequest, tutorProfile
Output: Propuesta personalizada3. Recomendaciones de Ramos (/)
// Edge Function: supabase/functions/suggest-courses
Input: userHistory, grades
Output: Ramos sugeridos para estudiar🔐 Autenticación y Seguridad
Flujo de Auth
1. Registro con email @uc.cl
↓
2. Supabase envía email de verificación
↓
3. Usuario confirma email
↓
4. Trigger crea perfil en tabla profiles
↓
5. Usuario selecciona rol (student/tutor/both)
↓
6. Si es tutor → completa perfil en tabla tutores
RLS Policies (Ejemplos)
-- Todos ven perfiles públicos
CREATE POLICY "Profiles públicos"
ON profiles FOR SELECT
USING (true);
-- Solo dueño edita su perfil
CREATE POLICY "Solo dueño edita"
ON profiles FOR UPDATE
USING (auth.uid() = id);
-- Solo participantes ven sesiones
CREATE POLICY "Participantes ven sesiones"
ON tutoring_sessions FOR SELECT
USING (
auth.uid() = student_id OR
auth.uid() IN (SELECT user_id FROM tutores WHERE id = tutor_id)
);📦 Dependencias del Proyecto
Frontend (Next.js)
{
"dependencies": {
"next": "^14.0.0",
"@supabase/supabase-js": "^2.39.0",
"@supabase/auth-helpers-nextjs": "^0.8.0",
"react": "^18.2.0",
"typescript": "^5.3.0",
"tailwindcss": "^3.4.0",
"@radix-ui/react-*": "latest",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"tailwind-merge": "^2.0.0",
"date-fns": "^3.0.0",
"zod": "^3.22.0",
"react-hook-form": "^7.48.0",
"@google/generative-ai": "^0.1.0"
}
}Supabase CLI (Local Dev)
npm install -g supabase
supabase init
supabase start🚀 Plan de Desarrollo (9 horas)
Hora 1 (9:00-10:00): Setup Infrastructure
- 10 min: Crear proyecto Supabase en dashboard
- 15 min: Crear proyecto Next.js + instalar deps
- 20 min: Ejecutar schema SQL en Supabase
- 10 min: Configurar Auth (@uc.cl email verification)
- 5 min: Deploy inicial a Vercel
Hora 2 (10:00-11:00): Seed Data + Auth
- 20 min: Script para seedear ramos desde courses.ndjson
- 15 min: Crear datos fake de tutores
- 15 min: Implementar login/registro con Supabase Auth
- 10 min: Middleware para proteger rutas
Hora 3-4 (11:00-13:00): Core Features
- 30 min: Landing page con hero + búsqueda rápida
- 30 min: Página de búsqueda con filtros
- 30 min: Perfil de tutor (tabs: info, ramos, reviews)
- 30 min: Dashboard del tutor básico
Hora 5-6 (13:00-15:00): Marketplace
- 30 min: Marketplace de ofertas (feed)
- 30 min: Búsquedas de estudiantes (feed)
- 30 min: Agendar tutoría (modal/form)
- 30 min: Mis tutorías (lista para estudiante y tutor)
Hora 7 (15:00-16:00): Gemini AI Integration
- 20 min: Edge Function para matching
- 20 min: Botón “Recomiéndame tutores” en /buscar
- 20 min: Generador de propuestas para tutores
Hora 8 (16:00-17:00): Reviews + Polish
- 20 min: Sistema de reviews (form + display)
- 20 min: Calcular ratings promedio (función SQL)
- 20 min: Pulir UI/UX con shadcn components
Hora 9 (17:00-18:00): Testing + Deploy
- 20 min: Testing manual de flujos críticos
- 20 min: Fixes de bugs
- 20 min: Deploy final + video demo
💡 Ventajas vs Laravel para el Hackathon
| Aspecto | Laravel + Railway | Supabase |
|---|---|---|
| Setup time | ~30 min | ~5 min |
| Auth | Manual JWT/Sanctum | Built-in |
| Admin panel | Filament (genial pero tiempo) | Dashboard propio (más flexible) |
| Realtime | Pusher (extra setup) | Built-in |
| Storage | S3 config | Built-in |
| Deploy | Railway + Vercel | Vercel (1 solo) |
| Testing local | Laravel Sail/Valet | Supabase CLI (fácil) |
| TypeScript | APIs REST | Cliente tipado |
🎯 Criterios de Evaluación del Hackathon
Google AI Challenge (40%)
- ✅ Uso de Gemini API: Matching de tutores, generación de propuestas
- ✅ Innovación: Recomendaciones personalizadas con context awareness
- ✅ Impacto: Mejora real en encontrar el tutor correcto
Technical Implementation (30%)
- ✅ Stack moderno: Next.js 14, Supabase, TypeScript
- ✅ Best practices: RLS, tipos seguros, componentes reutilizables
- ✅ Performance: Edge functions, caching, optimistic updates
User Experience (20%)
- ✅ Diseño: shadcn/ui profesional, responsive
- ✅ Flujo: Intuitivo desde buscar hasta agendar
- ✅ Accesibilidad: Semantic HTML, keyboard navigation
Pitch & Demo (10%)
- ✅ Problema claro: Estudiantes UC necesitan tutores verificados
- ✅ Solución única: P2P + verificación UC + Gemini AI
- ✅ Demo fluida: Mostrar búsqueda → matching → agendamiento
🔥 Features Diferenciadores
Must-Have (Core)
- ✅ Verificación @uc.cl: Solo estudiantes UC pueden registrarse
- ✅ Ramos reales: Catálogo completo de ramos UC
- ✅ Matching Gemini: Top 3 tutores con explicación de por qué
- ✅ Marketplace dual: Tutores ofrecen + estudiantes buscan
Nice-to-Have (Bonus)
- ⚡ Realtime notifications: Supabase Realtime para nuevas solicitudes
- ⚡ Calendar integration: Export to Google Calendar
- ⚡ Review system: Rating + comentarios post-tutoría
Post-Hackathon
- 🚀 Payment integration: Flow/Mercadopago
- 🚀 Chat en vivo: Mensajería entre tutor-estudiante
- 🚀 Analytics: Dashboard con métricas para tutores
📝 Checklist Pre-Hackathon
Día Antes (18 diciembre)
- Crear cuenta Supabase
- Crear cuenta Vercel
- Obtener Gemini API Key
- Revisar courses.ndjson
- Leer documentación Supabase Auth
- Preparar assets (logo UC, colores institucionales)
Morning of (19 diciembre 9am)
- Café ☕
- Setup workspace
- Clonar template Next.js
- Tener este documento a mano
- Music playlist 🎵
🎓 Recursos Útiles
Documentación
Templates/Examples
💪 Palabras Finales
Este stack te permite:
- ✅ Enfocarte en features, no en infraestructura
- ✅ Iterar rápido con TypeScript end-to-end
- ✅ Demostrar skills modernos (Supabase, Edge Functions)
- ✅ Escalar fácil si el proyecto crece post-hackathon
Tiempo estimado real:
- Setup: 1 hora
- Features core: 4 horas
- Gemini AI: 1 hora
- Polish: 1 hora
- Testing: 1 hora
- Buffer: 1 hora para imprevistos
¡Vamos con todo! 🚀