Sobre el proyecto
Free AP Practice es una herramienta de estudio de código abierto construida con SvelteKit y Svelte 5, creada y mantenida por Ajay Saravanan. Está dirigida a la preparación para exámenes AP, con el objetivo de hacer la práctica más rápida, personalizada y accesible sin necesidad de una suscripción de preparación de pago.
Las funciones principales incluyen preguntas de opción múltiple generadas por IA con un tutor integrado, marcadores e historial de intentos. La aplicación tiene páginas de marketing públicas (inicio, acerca de, materias, guía de estudio de verano, blog, estadísticas, privacidad, términos, registro de cambios) además de un área autenticada en /app que cubre panel, práctica, progreso, historial de preguntas, recursos y configuración. Las páginas de práctica orientadas a SEO se encuentran en /practice/[...slug], y los contadores públicos de generación se muestran en /stats.
Una membresía Super opcional añade tutoría personalizada de MCQ/FRQ, un Coach y un plan de estudio semanal. La autenticación utiliza Better Auth para correo electrónico/contraseña e inicio de sesión con Google, incluido Google One Tap cuando está configurado.
Técnicamente, el proyecto utiliza TypeScript, Tailwind CSS, Neon PostgreSQL con Drizzle ORM sobre el controlador HTTPS sin servidor, el SDK de IA de Vercel con una API compatible con OpenAI (OpenAI o LM Studio local), Resend para correo electrónico, Stripe con el complemento Stripe de Better Auth para suscripciones, Mem0 para memoria opcional del tutor, Upstash Redis para controles de IA de corta duración y Vercel para el despliegue. El contenido de las preguntas se almacena en Neon PostgreSQL para práctica, marcadores e historial; las publicaciones del blog son archivos Markdown en src/content/blog/.
La configuración requiere Node.js 20+, Bun y un proyecto Neon PostgreSQL. Los comandos incluyen bun install, bun dev, bun run build, bun run db:apply para migraciones de Drizzle, bun test:unit para Vitest y una prueba de humo de generación de preguntas desplegada. Un archivo compose.yaml puede iniciar PostgreSQL y Redis locales para inspección y trabajo de migración, aunque el tiempo de ejecución debe usar una URL de rama de Neon. Las variables de entorno requeridas incluyen DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, OPEN_AI_KEY y OPENAI_BASE_URL; las opcionales cubren OAuth de Google, Resend, importaciones heredadas de S3, informes de errores de GitHub y seguridad de cron. Las opciones de modelo son constantes exportadas en src/lib/ai/ai-models-config.ts.
Las rutas de API en src/routes/api incluyen flujos de Better Auth en /api/auth/*, datos de usuario autenticado en /api/me/* (estadísticas, progreso, historial, registro de intentos, marcadores), selección de preguntas en POST /api/question, estadísticas públicas de generación, endpoints de chat y saludo del tutor, informes de errores que crean Issues de GitHub con limitación de velocidad por IP y una verificación /health. Vercel Analytics y Speed Insights se cargan solo después de que el usuario opta por participar.
El despliegue se realiza en Vercel como una aplicación SvelteKit; CI aplica migraciones en push a main o staging antes del despliegue. El nombre Freeappractice, el logotipo y la marca son propietarios y están reservados para el fundador, mientras que el código fuente está abierto para bifurcación y contribuciones bajo un nombre diferente.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.