Flashy Flashcard is a feature-rich web application that allows users to create, organize, and study flashcards. Users can enhance their flashcards by uploading images and audio, making studying more interactive and personalized.
- Create Flashcards: Users can create flashcards with text, images, and audio.
- Organize Flashcards: Group flashcards into different folders and study sets.
- Study Mode: Provides an intuitive interface for users to study flashcards with shuffle and repeat options.
- Media Support: Upload images and audio for flashcards, making studying interactive.
- User Authentication: Secure login and signup functionality using JWT and Firebase.
- Real-Time Performance: Optimized for scalability, ensuring fast loading and interaction.
This project was built using the following technologies:
- Frontend: React, Redux
- Backend: Express.js, MongoDB
- Caching: Redis
- Messaging Queue: Kafka
- Reverse Proxy: Nginx
- Containerization: Docker
- Cloud Platform: Azure
Follow these steps to set up the project locally:
-
Clone the repository
git clone https://github.com/your-username/flashy-flashcard.git cd flashy-flashcard -
Install dependencies
- Navigate to the
frontendandbackenddirectories and install the required packages:
# In frontend/ npm install # In backend/ npm install
- Navigate to the
-
Set up environment variables Create a
.envfile in the root directory and add the following variables:MONGO_URI="" PORT="" JWT_SECRET="" CLOUDINARY_URL="" CLOUDINARY_CLOUD_NAME="" CLOUDINARY_API_KEY="" CLOUDINARY_API_SECRET="" EMAIL_SERVICE="" EMAIL_PORT="" EMAIL_USER="" EMAIL_PASS="" DEVELOPER_EMAIL="" EVENT_HUBS_CONNECTION_STRING="" EVENT_HUBS_NAMESPACE="" EVENT_HUB_NAME="" CONSUMER_GROUP_NAME="" REDIS_HOST_NAME="" REDIS_PORT="" REDIS_PASSWORD=""
VITE_FIREBASE_API_KEY="" VITE_FIREBASE_AUTH_DOMAIN="" VITE_FIREBASE_PROJECT_ID="" VITE_FIREBASE_STORAGE_BUCKET="" VITE_FIREBASE_MESSAGING_SENDER_ID="" VITE_FIREBASE_APP_ID="" VITE_FIREBASE_MEASUREMENT_ID="" VITE_BASE_URL=""
- Log in or sign up to start creating flashcards.
- You can add text, upload images, and record or upload audio to your flashcards.
- Group flashcards into folders and sets.
- Review flashcards in study mode with the ability to shuffle and repeat cards.
The Flashy Flashcard system is designed with a focus on scalability, performance, and high availability.
(Add your architecture diagram here)
Going to upload a youtube video about working of project soon.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature-branch) - Commit your changes (
git commit -m 'Add some feature') - Push to the branch (
git push origin feature-branch) - Create a new Pull Request
This project is licensed under the MIT License.