FlashyCards is a web application designed for students, educators, and anyone who wants to learn or memorize information using flashcards. It offers a user-friendly interface to create, manage, and interact with flashcards, making studying both productive and engaging.
Key features include the ability to add, edit, and delete flashcards dynamically, responsive layouts for use on any device. The application ensures data consistency and allows users to share and manage their flashcards effectively.
With this application, users can focus more on learning and less on organizing their study material.
- Features
- Technologies Used
- Project Structure
- Installation
- Usage
- Challenges and Solutions
- Future Improvements
- License
- Create Flashcards: Users can create flashcards by entering a question on the front and its answer on the back.
- Organize Flashcards Into Decks: Users can group flashcards into decks to keep them organized by topics or categories.
- User Accounts: Users can register and log in to save their flashcards and decks.
- Edit Decks: Modify the deck name or update flashcards in a deck whenever needed.
- Share Decks: Share the link to your deck with others.
- Review Flashcards: Flip through the flashcards in a selected deck to study and test your knowledge.
- Frontend: HTML, CSS, JavaScript
- Backend: Flask, Python
- Database: SQLite3
- Styling Tools:
- Bootstrap (for styling)
- FontAwesome (for icons)
Here is a breakdown of the main files in this project:
app.py: The main flask application that handles routing and logic.templates/: Contains the HTML templates for the website.static/: Contains CSS file and images.requirements.txt: Lists the required Python packages for this project.README.md: This file, explaining the project and how to use it.
Ensure you have Python installed on your system. This project requires Python 3.7 or later.
To check if Python is installed, run:
python --versionIf Python is not installed, download it here and follow the installation instructions.
git clone https://github.com/Markl1T/FlashyCards.git
cd flashycardspython -m venv venv source venv/bin/activate # On macOS/Linux
venv\Scripts\activate # On Windowspip install -r requirements.txtflask runThe app will be accessible at http://127.0.0.1:5000/ in your browser.
- Navigate to the Register page
- Fill out the required information such as the username, email and password
- Click the Register button to create you account
- Navigate to the Log In page
- Enter your username/email and password
- Click the Log In button to access your account
- Navigate to the Create page
- Enter a name for your deck
- Fill the flashcards with questions on the front and answers on the back
- Click the + button to add more flashcards
- Click the Save button to save the deck to your account
- Navigate to the Decks page
- Locate the deck you want to edit
- Click the Edit button (light blue button with a pencil icon)
- Update the deck name or modify the flashcards as needed
- Click the Save button to apply the changes
- Navigate to the Decks page
- Locate the deck you want to delete
- Click the Delete button (red button with a trash icon)
- A dialog box will appear, asking, "Are you sure you want to delete this deck?"
- Click Delete button in the dialog box to confirm
- Navigate to the Decks page
- Select the deck you want to review
- Browse through the flashcards in the deck, which will display the questions first
- Click on a card to flip it and reveal its answer
- Challenge: The back of a flashcard could contain more text than the front, causing it to overflow beyond the flashcard's boundaries.
- Solution: Created a function in JavaScript to find the optimal size for every flashcard based on the space required for their front and back text.
- Challenge: Deleting a flashcard resulted in gaps in the numbering system and the layout of the flashcards.
- Solution: Developed a logic to automatically renumber and reorganize the flashcards to maintain a consistent layout.
- Challenge: Users could accidentally delete decks or flashcards, leading to frustration and lost progress.
- Solution: Implemented a confirmation dialog ("Are you sure you want to delete this deck/flashcard?") to prevent accidental deletions, giving users a chance to review their action before proceeding.
- Email Verification
- Statistics & Progress Tracking
- Theme Customization
- Spaced Repetition System
- Badges & Achievements
This project is licensed under the MIT License.







