Aplicación gamificada para aprender filosofía, inspirada en Duolingo. Recorrés islas temáticas (Antigua Grecia, Estoicismo, Ilustración, Filosofía India…), completás misiones con teoría interactiva y quizzes, acumulás XP y rachas diarias.
- Frontend — Next.js 16 (App Router) · React 19 · Tailwind CSS v4 · shadcn/ui · Framer Motion
- Backend / DB — Supabase (PostgreSQL + JSONB, Auth con Google OAuth, Row Level Security)
- IA (futuro) — AI SDK + Ollama local para diálogos socráticos
profiles ─────┐
│ ├─► user_progress ──► missions ──► islands
│ │
└─► auth (Supabase, Google OAuth)
islands— islas temáticas (orden, descripción, tema UI)missions— misiones por isla, con contenido (teoría + quiz) en JSONBprofiles— perfil del usuario (XP, racha, último ingreso)user_progress— qué misiones completó cada usuario, estrellas obtenidas
Las tablas tienen Row Level Security habilitada con políticas explícitas: islas/misiones son lectura pública (contenido del juego), pero los profiles y user_progress solo son accesibles por el usuario dueño.
- Node.js 20+
- Cuenta gratuita en Supabase
git clone https://github.com/SMESCH1/SOCRATIA.git
cd SOCRATIA
npm install- Crear un proyecto en supabase.com/dashboard
- En Authentication → Providers, habilitar Google (necesita OAuth credentials de Google Cloud Console)
- Ir a SQL Editor y ejecutar, en orden:
supabase_schema.sql— crea las tablas, RLS y triggersdata-backup/supabase_seed.sql— carga las islas y misiones
cp .env.example .env.local| Variable | Dónde encontrarla |
|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Settings → API → Project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Settings → API → anon public key |
Estas dos variables son públicas por diseño de Supabase — la seguridad real la hace RLS. No son secretos.
npm run devAbrir http://localhost:3000.
src/
├── app/
│ ├── (app)/ ← rutas protegidas (requieren auth)
│ │ ├── page.tsx ← home: mapa de islas
│ │ └── misiones/[id]/ ← misión individual (teoría + quiz)
│ ├── api/
│ │ ├── chat/ ← endpoint IA (futuro)
│ │ └── health/ ← health check / keep-alive
│ ├── login/ ← pantalla pública de login
│ └── auth/callback/ ← OAuth callback
├── components/
│ ├── features/ ← componentes del juego
│ ├── layout/ ← Navbar, Sidebar, BottomNav
│ └── ui/ ← shadcn/ui (no modificar)
├── lib/
│ ├── supabase/ ← clientes server/browser
│ ├── game/ ← constantes, niveles, rachas
│ └── ai/ ← configuración Ollama
└── types/ ← tipos TypeScript del schema
El código para un chat socrático con LLM ya está incluido pero deshabilitado. Para activarlo se necesita Ollama corriendo local:
ollama pull llama3.1
ollama serveVercel + Supabase. Un GitHub Action (keep-alive.yml) pinguea el endpoint /api/health cada 4 días para evitar que Supabase pause el proyecto por inactividad.
MIT.
SocratIA is a gamified philosophy learning app, inspired by Duolingo. Users traverse themed islands (Ancient Greece, Stoicism, Enlightenment, Eastern Philosophy…), complete missions with interactive theory and quizzes, and accumulate XP and daily streaks.
Stack: Next.js 16 (App Router) · React 19 · Tailwind v4 · shadcn/ui · Framer Motion · Supabase (Postgres + Auth + RLS) · Google OAuth
Key concepts:
- Row Level Security on Supabase: profiles and user progress are user-scoped; game content (islands, missions) is public read.
- Mission content stored as JSONB for flexible quizzes and theory.
- Server-side rendering with App Router + protected route groups.
- Keep-alive workflow to prevent Supabase auto-pause.
Run locally:
git clone https://github.com/SMESCH1/SOCRATIA.git && cd SOCRATIA && npm install
cp .env.example .env.local # fill with your Supabase project keys
npm run devOpen http://localhost:3000. License: MIT.