An intelligent flashcard application that leverages AI to generate educational content and optimize learning through spaced repetition algorithms.
Features โข Installation โข Usage โข Development โข Testing โข Contributing
Fiszki is a modern web application designed to revolutionize the way people learn through flashcards. By combining traditional learning methods with AI-powered content generation and scientifically-proven spaced repetition algorithms, Fiszki makes memorization more efficient and engaging.
- ๐ฏ User Management - Secure registration with email confirmation, authentication, and profile management
- ๐ฆ Deck Organization - Create and manage collections of flashcards organized by topic
- ๐ Flashcard CRUD - Full create, read, update, and delete operations for flashcards
- ๐ง Email Notifications - Automated email confirmations and notifications
- ๐ค Smart Generation - Generate flashcards automatically from text (1000-10,000 characters)
- ๐จ Multiple Formats - Support for various flashcard types and content formats
- ๐ณ Credit System - Token-based system for AI generation with usage tracking
- ๐ Usage Analytics - Track AI generation history and patterns
- ๐ง Spaced Repetition - Scientifically-proven algorithm for optimal memorization
- ๐ Progress Tracking - Monitor learning progress with detailed statistics
- ๐ฎ Study Sessions - Interactive study mode with immediate feedback
- ๐ Performance History - Review past performance and identify areas for improvement
- ๐จโ๐ผ Admin Dashboard - Comprehensive admin panel for user and system management
- โ๏ธ System Settings - Configure AI models, API keys, and system parameters
- ๐ User Analytics - Monitor user activity and system usage
- Docker >= 20.10
- Docker Compose >= 2.0
- Git
- Clone the repository
git clone https://github.com/yourusername/fiszki.git
cd fiszki- Copy environment configuration
cp .env.example .env
# Edit .env with your configuration (database, mailer, OpenAI API key)- Start Docker containers
docker-compose up -d- Install dependencies
docker-compose exec php-fpm composer install
docker-compose exec php-fpm npm install- Set up the database
docker-compose exec php-fpm php bin/console doctrine:migrations:migrate
docker-compose exec php-fpm php bin/console doctrine:fixtures:load --no-interaction # Optional: Load sample data- Build frontend assets
docker-compose exec php-fpm npm run build- Access the application
http://localhost:8080
# Start containers
docker-compose up -d
# Stop containers
docker-compose down
# Access PHP container
docker-compose exec php-fpm bash
# View logs
docker-compose logs -f# Clear cache
php bin/console cache:clear
# Create new entity
php bin/console make:entity
# Create new migration
php bin/console make:migration
# Run migrations
php bin/console doctrine:migrations:migrate
# Load fixtures
php bin/console doctrine:fixtures:load --no-interaction# Development build with watch
npm run watch
# Development build (one-time)
npm run dev
# Production build
npm run build# Run PHPStan (static analysis)
vendor/bin/phpstan analyse
# Run PHP CS Fixer
vendor/bin/php-cs-fixer fix
# Run all tests
vendor/bin/phpunit
vendor/bin/behatvendor/bin/phpunitvendor/bin/behatvendor/bin/phpstan analyse --level=6vendor/bin/phpunit --coverage-html coverage/fiszki/
โโโ assets/ # Frontend assets (JS, CSS)
โโโ bin/ # Symfony console
โโโ config/ # Application configuration
โโโ docker/ # Docker configuration
โโโ migrations/ # Database migrations
โโโ public/ # Public directory (web root)
โโโ src/ # Application source code
โ โโโ Controller/ # HTTP controllers
โ โโโ Entity/ # Doctrine entities
โ โโโ Form/ # Form types
โ โโโ Repository/ # Database repositories
โ โโโ Service/ # Business logic services
โ โโโ Security/ # Security components
โโโ templates/ # Twig templates
โโโ tests/ # Test suites
โ โโโ Behat/ # BDD tests
โ โโโ Functional/ # Functional tests
โ โโโ Unit/ # Unit tests
โโโ translations/ # Internationalization
โโโ var/ # Cache and logs
Key environment variables in .env:
# Application
APP_ENV=dev
APP_SECRET=your_secret_key
# Database
DATABASE_URL="mysql://root:password@mysql:3306/fiszki_db?serverVersion=8.0.39"
# Mailer
MAILER_DSN=smtp://user:pass@smtp.example.com:587
# OpenAI API
OPEN_AI_KEY=your_openai_api_key
AI_MODEL=gpt-3.5-turbo
AI_TEMPERATURE=0.7
AI_MAX_TOKENS=1000We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Symfony coding standards
- Use dependency injection via constructor
- Write tests for new features
- Keep controllers thin, move logic to services
- Run PHPStan and fix any issues before committing
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Symfony 6.4 LTS
- UI powered by Bootstrap 5
- AI integration via OpenAI API
- Icons from Font Awesome
For support, please open an issue in the GitHub repository or contact the maintainers.