A modern flashcard application for effective learning using the Spaced Repetition System (SRS). Built with Next.js 15, TypeScript, and Turso database. Features AI-powered flashcard generation and Pro subscription plans. Available in English and German.
Important
This project is currently in beta. While core features are stable, some features may change based on user feedback.
- Spaced Repetition Algorithm: Optimized review intervals based on SuperMemo-2
- Progress Tracking: Detailed statistics and learning analytics
- Multiple Study Modes: Focus on due cards, difficult cards, or all cards
- AI Flashcard Generation: Create flashcards from text prompts or PDF documents
- Intelligent Content Processing: Automatically extract key concepts and definitions
- Quality Validation: AI-generated content is validated for educational value
- Unlimited AI Generation: Pro users get unlimited AI flashcard creation
- Advanced Features: Enhanced study modes and detailed analytics
- Secure Billing: Powered by Stripe with automatic payment recovery
- Deck Management: Organize flashcards into themed collections
- Export Functionality: Export decks for backup or sharing
- Multi-language Support: Available in English and German
- Responsive Design: Works seamlessly on desktop and mobile
- Node.js 18+ and pnpm
- Turso database
- Resend for emails
- Google AI API key (for AI features)
- Stripe account (for subscriptions)
Create .env.local from .env.local.example:
# Core Configuration
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key"
# Database
DATABASE_URL="your-turso-url"
DATABASE_AUTH_TOKEN="your-turso-token"
# Email Service
RESEND_API_KEY="your-resend-key"
EMAIL_FROM="learn@yourdomain.com"
# AI Features (Optional)
GOOGLE_GENERATIVE_AI_API_KEY="your-google-ai-key"
# Stripe Subscriptions (Optional)
STRIPE_SECRET_KEY="your-stripe-secret-key"
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="your-stripe-publishable-key"
STRIPE_WEBHOOK_SECRET="your-webhook-secret"
# Rate Limiting (Optional)
REDIS_URL="your-redis-url"- Clone and install dependencies:
git clone https://github.com/Fx64b/learn.git
cd learn
pnpm install- Set up the database:
pnpm db:migrate- Start development server:
pnpm devVisit http://localhost:3000 to start learning!
- Framework: Next.js 15 with App Router
- Language: TypeScript with strict type checking
- Database: Turso (LibSQL) with Drizzle ORM
- Authentication: NextAuth.js
- UI Components: shadcn/ui with Tailwind CSS
- AI Integration: Google AI (Gemini)
- Payments: Stripe
- Email: Resend
- Deployment: Vercel
Manual Creation:
- Create a new deck or select existing one
- Add flashcards with front/back content
- Start studying immediately
AI Generation (Pro Feature):
- Navigate to any deck
- Click the "AI" Tab
- Enter a topic and optionally upload a PDF document
- Let AI create optimized flashcards for you
- Select a study mode (Due, Difficult, or All cards)
- Review each flashcard and rate your confidence
- The algorithm adjusts future review intervals automatically
- Track your progress in the statistics dashboard
- Free Plan: Basic flashcard functionality
- Pro Plan: Unlimited AI generation, priority support
- Billing: Secure payment processing with automatic recovery
- Build the project:
pnpm build- Set production environment variables
- Start the server:
pnpm start(Docker support is planned for future releases)
- Vercel Analytics: Automatic performance monitoring
- Rate Limit Status: Monitor API usage
- Database Metrics: Available through Turso dashboard
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to your fork
- Submit a pull request
MIT License - see LICENSE for details
- Issues: GitHub Issues
- Email: learn@fx64b.dev
- Documentation: Coming soon
- Technical Documentation: fx64b.dev/projects/flashcard-app
- shadcn/ui for the component library
- Turso for the database platform
- Resend for email infrastructure
- Google AI for AI-powered features
- Stripe for secure payment processing
- The spaced repetition algorithm is based on SuperMemo-2
Built with ❤️ by Fx64b
