- General Info
- Technologies
- Features
- Examples
- Instalation and Setup
- Things Learned
- Used Resources
- TODO
Flashcards is a modern, feature-rich flashcard application built with C# and .NET 9, designed to help users efficiently learn and retain information.
It supports creating and managing stacks of flashcards with various card types, including basic, multiple choice and cloze deletion.
The application implements the Leitner System for spaced repetition, allowing users to optimize their study sessions.
- C#
- SQL Server
- Dapper
- Spectre.Console
- Docker
- XUnit
- NSubstitute
- TestContainers
- Create and manage stacks of flashcards.
- Support for multiple flashcard types: basic, multiple choice and cloze deletion.
- Practise flashcards with spaced repetition using the Leitner System.
- Review study sessions statistics, including monthly reports (average score, number of sessions per stack).
- User-friendly interface: Provides clear menus and prompts for interaction.
- (Planned) Generate flashcards from text files or other formats.
You can run the Flashcards app either locally or using Docker.
- Clone or download this project repository.
- Open the solution file (Flashcards.Dejmenek.sln) in Visual Studio.
- Install the required NuGet packages
- Update the appsettings.json file.
- Make sure you have two connection strings:
{ "ConnectionStrings": { "Default": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Flashcards;Integrated Security=True;", "Master": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;" } }
- Make sure you have two connection strings:
- Build and Run the application from Visual Studio or CLI.
- Docker installed on your machine.
- Docker Compose installed.
- Clone or download this project repository.
- Navigate to the project directory in your terminal.
- Run the following command to build and start the Docker containers:
docker-compose up -d --build
Once the containers are running, you can access the application through the terminal. You can run the application using the following command:
docker compose run --service-ports -it flashcards- Main Menu

- Manage Stacks


- Manage Flashcards

- Card Types
- Study Session
study_example.mp4
- View Study Sessions

- View monthly study session reports per stack:
I have some previous experience with other DBMS like MySQL and SQLite so using SQL Server wasn't that hard.
I only had to look up for data types and how to create pivot tables.
I've also learned about Data Transfer Objects (DTOs).
They provide a clean way to transfer data between different layers of an application, reducing the amount of unnecessary data sent.
Working with Docker taught me how to containerize .NET applications and manage dependencies in isolated environments.
I learned how to write Dockerfiles, use Docker Compose for multi-container setups, and troubleshoot common issues related to networking and persistent storage.
Implementing GitHub Actions introduced me to automating CI/CD workflows.
I learned how to set up automated builds and tests for pull requests.
- SQL Server Tutorial used to learn some SQL Server syntax
- C# Corner used to learn about DTOs
- The Leitner System used to learn about spaced repetition
- Add unit tests for the application.
- Add integration tests for the application.
- Add more card types (e.g., multiple choice, cloze).
- Leitner System implementation for spaced repetition.
- Generate flashcards from text files or other formats.




