Flash is a fast and straight forward to use flash card learning app using the SM2 Spaced repetition algorithm or just crunch cards nonstop with the simple power learning mode. Cards are created using a markdown editor that also supports uploading images per drag and drop. The app comes with an MCP server to let your favourite AI create cards for you. Also web push is supported to send push notifications to the browser even if the page is not open.
Active development - production deployment guide coming soon
- SM2 Spaced Repetition Algorithm
- crunch mode
- organize cards in decks
- markdown editor
- drag & drop image upload
- Card creation MCP server
- Web-Push notifications
- mobile friendly UI
- stats dashboard
- Backend: PHP 8.4, Symfony 7.2, PostgreSQL
- Frontend: TailwindCSS, Stimulus, Turbo
- Infrastructure: Docker, FrankenPHP
- Quality: PHPStan Level 8, PHPUnit, 80%+ test coverage
- Integrations: MCP Protocol, Web Push API
docker compose build --no-cache
docker compose up --pull always -d --waitdocker compose up -dSERVER_NAME=:80 docker compose up -ddocker compose exec -T php bin/console app:user:create <email> <password>- Generate a token at: https://localhost/user/profile
- add mcp endpoint to AI client that supports mcp over http: https://localhost/mcp
Request:POST
Header:Authorization: Bearer <your token>
Body:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_flashcards",
"arguments": {
"deck": "php",
"cards": [
{
"front": "What does array_map do?",
"back": "Applies a callback to each array element and returns new array"
},
{
"front": "Difference between include and require?",
"back": "require throws fatal error if file not found, include only warning"
},
{
"front": "What is a trait in PHP?",
"back": "A mechanism for code reuse in single inheritance languages"
}
]
}
}
}
XDEBUG_MODE=debug docker compose up -ddocker compose exec -T php bin/console -e test doctrine:database:create
docker compose exec -T php bin/console -e test doctrine:migrations:migrate --no-interaction
docker compose exec -T php bin/phpunitdocker compose exec -e XDEBUG_MODE=coverage -T php bin/phpunit --coverage-html ./coverage-reportdocker compose exec -e XDEBUG_MODE=coverage -T php bin/phpunit --coverage-clover clover.xmldocker compose exec -T php vendor/bin/phpstan analyse src --memory-limit=-1docker compose exec -T -e PHP_CS_FIXER_IGNORE_ENV=true php ./vendor/bin/php-cs-fixer fix src --dry-rundocker compose exec -T php ./vendor/bin/rector src --dry-runbin/console tailwind:build --watchphp bin/console tailwind:build --minify
php bin/console asset-map:compileThis project was bootstrapped using dunglas/symfony-docker. Thanks to Kévin Dunglas and contributors for the excellent Docker setup.
MIT
