Create, manage and practice your flashcard with ease!
Explore the docs
·
Submit a request
Note
This project is still in active development. It may change in the future.
This project is the Symfony backend REST API for a flashcard platform.
I started this project because I couldn’t find a flashcard app that combined both a modern, visually appealing interface and effective functionality.
My goal was to create a good-looking flashcard app that provides a streamlined user experience.
Additionally, I wanted to deepen my understanding of the algorithms that drive flashcard-based learning, particularly those focused on optimizing review timing and content retention.
While I have always worked with Symfony for both frontend and backend, I wanted to expand into using a dedicated frontend framework like Nuxt to take advantage of Vue.js, which I really enjoy working with.
This project merges these goals by offering an intuitive platform that makes studying both efficient and enjoyable.
This project is entirely built using Symfony and its ecosystem like Doctrine. It also uses Docker and Devcontainer when developing.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
-
Fork the repository
Start by forking the project repository on GitHub. This creates a copy of the project in your account where you can freely make changes.
-
Clone the repository
git clone https://github.com/<your-username>/Flashcard-API.git
-
Create a new branch
Use a descriptive branch name that reflects the purpose of your changes. For example:
git checkout -b feature/new-feature
-
Make changes
Implement your changes. Make sure to follow coding standards and write clear, maintainable code. Add tests where appropriate, especially if your changes affect core functionality.
-
Test your changes
Ensure that your changes don’t break existing functionality by running the test suite:
# Unit tests ./vendor/bin/pest # Static tests vendor/bin/phpstan analyse -c phpstan.neon --memory-limit 500M --ansi --error-format=table # Code style ./vendor/bin/php-cs-fixer fix --dry-run
-
Sync your changes
Write clear and concise commit messages that describe what you’ve done. It must follow the Conventional Commit standard. Then, push your changes and open a pull request.
Please respect other contributors and maintainers by following our Code of Conduct. Contributions should align with the values of inclusivity, transparency, and respect for everyone involved in the project.
If you’re new to open-source contribution or have questions, feel free to open an issue or open a discussion thread. We’re happy to guide you through your first contribution!
Distributed under the AGPL-3.0 License. See License for more information.
This project wouldn’t be possible without the resources from the following individuals and communities:
- Grafikart for all the great tutorials about Symfony
- Symfony for all the great tools and ecosystem they created
- Doctrine ORM for their easy to use ORM for PHP and Symfony
- Symfony Cast for all the Symfony tips
- Open Spaced Repetition for their amazing Free Spaced Repetition Scheduler (FSRS) algorithm
- Best-README-Template for this beautiful README template
- https://www.baeldung.com/rest-api-error-handling-best-practices
- https://github.com/open-spaced-repetition/fsrs4anki/wiki/Compare-Anki's-built-in-scheduler-and-FSRS
- https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm#fsrs-v4
- https://huggingface.co/spaces/open-spaced-repetition/fsrs4anki_previewer
- https://symfony.com/doc/2.x/security/access_denied_handler.html
- https://symfony.com/doc/current/security.html#security-securing-controller-attributes