このプロジェクトについて
Free AP Practiceは、SvelteKitとSvelte 5で構築されたオープンソースの学習ツールで、Ajay Saravananによって作成および維持されています。AP試験対策を対象とし、有料の対策サブスクリプションなしで、練習をより速く、よりパーソナライズされ、アクセスしやすくすることを目指しています。
主な機能には、アプリ内チューター付きのAI生成多肢選択問題、ブックマーク、受験履歴が含まれます。アプリには公開マーケティングページ(ランディング、about、subjects、summer study guide、blog、stats、privacy、terms、changelog)と、/appにある認証済みエリア(dashboard、practice、progress、question history、resources、settings)があります。SEO向けの練習ランディングページは/practice/[...slug]以下にあり、公開の生成カウンターは/statsに表示されます。
任意のSuperメンバーシップでは、パーソナライズされたMCQ/FRQチュータリング、Coach、週次の学習プランが追加されます。認証にはBetter Authを使用し、メール/パスワードとGoogleサインインに対応し、設定時にはGoogle One Tapも含まれます。
技術的には、このプロジェクトはTypeScript、Tailwind CSS、サーバーレスHTTPSドライバー上のDrizzle ORMを用いたNeon PostgreSQL、OpenAI互換API(OpenAIまたはローカルLM Studio)を用いたVercel AI SDK、メール用のResend、サブスクリプション用のBetter Auth Stripeプラグイン付きStripe、任意のチューターメモリ用のMem0、短命なAI制御用のUpstash Redis、デプロイ用のVercelを使用しています。問題コンテンツは練習、ブックマーク、履歴のためにNeon PostgreSQLに保存され、ブログ投稿はsrc/content/blog/内のMarkdownファイルです。
セットアップにはNode.js 20+、Bun、Neon PostgreSQLプロジェクトが必要です。コマンドにはbun install、bun dev、bun run build、Drizzleマイグレーション用のbun run db:apply、Vitest用のbun test:unit、およびデプロイ済みの問題生成スモークテストが含まれます。compose.yamlは検査とマイグレーション作業のためにローカルPostgreSQLとRedisを起動できますが、ランタイムはNeonブランチURLを使用する必要があります。必須の環境変数には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でエクスポートされた定数です。
src/routes/api以下のAPIルートには、/api/auth/*のBetter Authフロー、/api/me/*(stats、progress、history、record-attempt、bookmarks)のサインイン済みユーザーデータ、POST /api/questionでの問題選択、公開生成統計、チューターチャットと挨拶エンドポイント、IPごとのレート制限付きでGitHub Issuesを作成するバグレポート、/healthチェックが含まれます。Vercel AnalyticsとSpeed Insightsはユーザーがオプトインした後にのみ読み込まれます。
デプロイはSvelteKitアプリとしてVercelに行われ、CIはデプロイ前にmainまたはstagingへのプッシュ時にマイグレーションを適用します。Freeappracticeの名称、ロゴ、ブランドはプロプライエタリであり創設者のために留保されていますが、ソースコードは別名でのフォークとコントリビューションのためにオープンです。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.