FlashCards
A flexible learning platform built around user-created questions.
FlashCards is a learning and teaching application designed around custom questions and study materials. Instead of relying on a predefined collection of content, users can create and manage their own questions and use them as personalized learning material.
The application is built with Angular and TailwindCSS, with Firebase providing the backend infrastructure. Cloud Firestore is used for persistent application data, while Cloud Functions handle server-side operations that should not be performed directly in the client.
The application is designed around user-generated content, which required the data model and application logic to support creating, editing and organizing custom questions while keeping the experience simple for both learners and people creating study materials.
GitHub Actions is used for the CI/CD workflow, automating the build and deployment process. This allows changes to be validated and delivered without relying on manual deployment steps.
The project also serves as an exploration of building a complete modern web application with a serverless backend, from the Angular frontend and data model to cloud functions and automated deployment.
Links
$ cat challenges.md
Designing around user-generated content
The application is not based on a fixed set of questions. Users can create their own learning material, which required a flexible data model and application structure that could support different sets of questions while keeping the experience straightforward.
Choosing a serverless architecture
Instead of maintaining a traditional backend server, the application uses Firebase services for persistence and server-side functionality. This required carefully deciding which operations could safely happen in the client and which should be handled by Cloud Functions.
Keeping the application responsive
The learning experience needs to feel quick and focused, especially when moving between questions. I designed the application around lightweight interactions and avoided unnecessary work when loading or updating study content.
Managing application data
Firestore provides a flexible document-based data model, but it also requires thinking carefully about document structure, queries and how related user data should be organized. The application structure was designed around the access patterns required by the learning workflows.
Automating delivery
GitHub Actions handles the CI/CD workflow, automating the application build and deployment process. This makes releasing changes more predictable and removes repetitive manual steps from development.
A retro-space showcase site for my work and writing.