Sobre o projeto

O Free AP Practice é uma ferramenta de estudo de código aberto criada com SvelteKit e Svelte 5, desenvolvida e mantida por Ajay Saravanan. Seu foco é a preparação para exames AP, com o objetivo de tornar a prática mais rápida, mais personalizada e acessível sem uma assinatura paga de preparação. Os recursos principais incluem questões de múltipla escolha geradas por IA com um tutor no aplicativo, favoritos e histórico de tentativas. O aplicativo tem páginas públicas de marketing (landing, about, subjects, summer study guide, blog, stats, privacy, terms, changelog) além de uma área autenticada em /app que abrange dashboard, practice, progress, question history, resources e settings. Páginas de destino de prática voltadas para SEO ficam em /practice/[...slug], e contadores públicos de geração são exibidos em /stats. Uma assinatura opcional Super adiciona tutoria personalizada de MCQ/FRQ, um Coach e um plano de estudo semanal. A autenticação usa Better Auth para e-mail/senha e login com Google, incluindo Google One Tap quando configurado. Tecnicamente, o projeto usa TypeScript, Tailwind CSS, Neon PostgreSQL com Drizzle ORM sobre o driver HTTPS serverless, o Vercel AI SDK com uma API compatível com OpenAI (OpenAI ou LM Studio local), Resend para e-mail, Stripe com o plugin Better Auth Stripe para assinaturas, Mem0 para memória opcional do tutor, Upstash Redis para controles de IA de curta duração e Vercel para implantação. O conteúdo das questões é armazenado no Neon PostgreSQL para prática, favoritos e histórico; postagens de blog são arquivos Markdown em src/content/blog/. A configuração exige Node.js 20+, Bun e um projeto Neon PostgreSQL. Os comandos incluem bun install, bun dev, bun run build, bun run db:apply para migrações Drizzle, bun test:unit para Vitest e um teste de fumaça de geração de questões implantado. Um compose.yaml pode iniciar PostgreSQL e Redis locais para inspeção e trabalho de migração, embora o runtime deva usar uma URL de branch Neon. As variáveis de ambiente obrigatórias incluem DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, OPEN_AI_KEY e OPENAI_BASE_URL; as opcionais cobrem Google OAuth, Resend, importações legadas de S3, relatórios de bugs no GitHub e segurança de cron. As escolhas de modelo são constantes exportadas em src/lib/ai/ai-models-config.ts. As rotas de API em src/routes/api incluem fluxos do Better Auth em /api/auth/*, dados de usuário autenticado em /api/me/* (stats, progress, history, record-attempt, bookmarks), seleção de questões em POST /api/question, estatísticas públicas de geração, endpoints de chat e saudação do tutor, relatórios de bugs que criam GitHub Issues com limitação de taxa por IP e uma verificação /health. O Vercel Analytics e o Speed Insights carregam somente após o consentimento do usuário. A implantação é feita na Vercel como um aplicativo SvelteKit; a CI aplica migrações em pushes para main ou staging antes da implantação. O nome Freeappractice, o logotipo e a marca são proprietários e reservados ao fundador, enquanto o código-fonte é aberto para fork e contribuições sob um nome diferente.