Об этом проекте

Free AP Practice — это открытый учебный инструмент, созданный на SvelteKit и Svelte 5, который разрабатывает и поддерживает Ajay Saravanan. Он предназначен для подготовки к экзаменам AP и стремится сделать практику быстрее, более персонализированной и доступной без платной подписки на подготовку. Ключевые функции включают сгенерированные ИИ вопросы с несколькими вариантами ответа, встроенного тьютора, закладки и историю попыток. В приложении есть публичные маркетинговые страницы (лендинг, о проекте, предметы, летнее руководство по подготовке, блог, статистика, конфиденциальность, условия, список изменений), а также аутентифицированная зона по адресу /app, охватывающая панель управления, практику, прогресс, историю вопросов, ресурсы и настройки. Ориентированные на SEO практические лендинги находятся по адресу /practice/[...slug], а публичные счётчики генерации отображаются на /stats. Опциональное членство Super добавляет персонализированное обучение по MCQ/FRQ, Coach и недельный учебный план. Аутентификация использует Better Auth для входа по электронной почте и паролю и через Google, включая Google One Tap при соответствующей настройке. С технической точки зрения проект использует TypeScript, Tailwind CSS, Neon PostgreSQL с Drizzle ORM через бессерверный HTTPS-драйвер, Vercel AI SDK с API, совместимым с OpenAI (OpenAI или локальный LM Studio), Resend для электронной почты, Stripe с плагином Better Auth Stripe для подписок, Mem0 для опциональной памяти тьютора, Upstash Redis для краткосрочного управления ИИ и Vercel для развёртывания. Содержимое вопросов хранится в Neon PostgreSQL для практики, закладок и истории; сообщения блога — это Markdown-файлы в src/content/blog/. Для настройки требуются Node.js 20+, Bun и проект Neon PostgreSQL. Команды включают bun install, bun dev, bun run build, bun run db:apply для миграций Drizzle, bun test:unit для Vitest и развёрнутый smoke-тест генерации вопросов. compose.yaml может запускать локальные PostgreSQL и Redis для проверки и работы с миграциями, хотя во время выполнения необходимо использовать URL ветки Neon. Обязательные переменные окружения включают DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, OPEN_AI_KEY и OPENAI_BASE_URL; опциональные охватывают Google OAuth, Resend, устаревшие импорты S3, отчёты об ошибках GitHub и безопасность cron. Выбор моделей экспортируется как константы в src/lib/ai/ai-models-config.ts. Маршруты API в src/routes/api включают потоки Better Auth по адресу /api/auth/*, данные вошедшего пользователя по адресу /api/me/* (статистика, прогресс, история, record-attempt, закладки), выбор вопроса через POST /api/question, публичную статистику генерации, конечные точки чата и приветствия тьютора, отчёты об ошибках, которые создают GitHub Issues с ограничением частоты по IP, и проверку /health. Vercel Analytics и Speed Insights загружаются только после согласия пользователя. Развёртывание выполняется на Vercel как приложение SvelteKit; CI применяет миграции при пушах в main или staging перед развёртыванием. Название Freeappractice, логотип и бренд являются собственностью и зарезервированы за основателем, тогда как исходный код открыт для форков и вкладов под другим названием.