À propos du projet
Free AP Practice est un outil d'étude open source construit avec SvelteKit et Svelte 5, créé et maintenu par Ajay Saravanan. Il cible la préparation aux examens AP, visant à rendre la pratique plus rapide, plus personnalisée et accessible sans abonnement payant de préparation.
Les fonctionnalités principales incluent des questions à choix multiples générées par IA avec un tuteur intégré, des signets et un historique des tentatives. L'application dispose de pages marketing publiques (accueil, à propos, matières, guide d'étude estival, blog, statistiques, confidentialité, conditions, journal des modifications) ainsi qu'une zone authentifiée à /app couvrant le tableau de bord, la pratique, les progrès, l'historique des questions, les ressources et les paramètres. Des pages d'atterrissage de pratique orientées SEO se trouvent sous /practice/[...slug], et des compteurs de génération publics sont affichés à /stats.
Une adhésion Super facultative ajoute un tutorat personnalisé MCQ/FRQ, un Coach et un plan d'étude hebdomadaire. L'authentification utilise Better Auth pour l'e-mail/mot de passe et la connexion Google, y compris Google One Tap lorsqu'il est configuré.
Techniquement, le projet utilise TypeScript, Tailwind CSS, Neon PostgreSQL avec Drizzle ORM via le pilote HTTPS serverless, le Vercel AI SDK avec une API compatible OpenAI (OpenAI ou LM Studio local), Resend pour les e-mails, Stripe avec le plugin Stripe de Better Auth pour les abonnements, Mem0 pour la mémoire facultative du tuteur, Upstash Redis pour les contrôles IA de courte durée, et Vercel pour le déploiement. Le contenu des questions est stocké dans Neon PostgreSQL pour la pratique, les signets et l'historique ; les articles de blog sont des fichiers Markdown dans src/content/blog/.
L'installation nécessite Node.js 20+, Bun et un projet Neon PostgreSQL. Les commandes incluent bun install, bun dev, bun run build, bun run db:apply pour les migrations Drizzle, bun test:unit pour Vitest, et un test de fumée de génération de questions déployé. Un compose.yaml peut démarrer PostgreSQL et Redis locaux pour l'inspection et le travail de migration, bien que l'exécution doive utiliser une URL de branche Neon. Les variables d'environnement requises incluent DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, OPEN_AI_KEY et OPENAI_BASE_URL ; les variables facultatives couvrent Google OAuth, Resend, les importations héritées S3, les rapports de bugs GitHub et la sécurité cron. Les choix de modèles sont des constantes exportées dans src/lib/ai/ai-models-config.ts.
Les routes API sous src/routes/api incluent les flux Better Auth à /api/auth/*, les données utilisateur connecté à /api/me/* (statistiques, progrès, historique, record-attempt, signets), la sélection de questions à POST /api/question, les statistiques de génération publiques, les points de terminaison de chat et d'accueil du tuteur, les rapports de bugs qui créent des GitHub Issues avec limitation de débit par IP, et une vérification /health. Vercel Analytics et Speed Insights ne se chargent qu'après l'accord de l'utilisateur.
Le déploiement se fait sur Vercel en tant qu'application SvelteKit ; la CI applique les migrations lors des pushs vers main ou staging avant le déploiement. Le nom Freeappractice, le logo et la marque sont propriétaires et réservés au fondateur, tandis que le code source est ouvert au fork et aux contributions sous un autre nom.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.