Skip to content

Repository files navigation

SocratIA

Next.js React Supabase TailwindCSS License

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.

🇬🇧 English version below


Stack

  • 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

Modelo de datos

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 JSONB
  • profiles — 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.

Levantar en local

Prerequisitos

  • Node.js 20+
  • Cuenta gratuita en Supabase

1. Clonar e instalar

git clone https://github.com/SMESCH1/SOCRATIA.git
cd SOCRATIA
npm install

2. Configurar Supabase

  1. Crear un proyecto en supabase.com/dashboard
  2. En Authentication → Providers, habilitar Google (necesita OAuth credentials de Google Cloud Console)
  3. Ir a SQL Editor y ejecutar, en orden:
    • supabase_schema.sql — crea las tablas, RLS y triggers
    • data-backup/supabase_seed.sql — carga las islas y misiones

3. Variables de entorno

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.

4. Ejecutar

npm run dev

Abrir http://localhost:3000.

Estructura del proyecto

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

Desafío Socrático (futuro)

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 serve

Deploy

Vercel + 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.

License

MIT.


English version

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 dev

Open http://localhost:3000. License: MIT.

About

Gamified philosophy learning app (Duolingo-style). Next.js 16 + Supabase + Tailwind v4

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages