A web application implementing the Leitner System for efficient flashcard-based learning using the MERN stack (MongoDB, Express.js, React, Node.js).
- 📚 Implementation of the Leitner System with 7 boxes
- ⏰ Spaced repetition with increasing intervals
- 📝 Create and manage flashcards
- 📊 Track learning progress
- 🎯 Focus on cards that need review
- 💻 Clean, responsive UI using Tailwind CSS
- Frontend: React, Tailwind CSS, Axios
- Backend: Node.js, Express.js
- Database: MongoDB Atlas
- Deployment: Vercel
The application implements the Leitner System, a flashcard-based learning technique that uses spaced repetition:
- Cards start in Box 1 (daily review)
- Correct answers move cards to the next box
- Incorrect answers move cards back to Box 1
- Higher boxes have longer review intervals:
- Box 1: Review daily
- Box 2: Every 3 days
- Box 3: Every 7 days
- Box 4: Every 14 days
- Box 5: Every 30 days
- Box 6: Every 60 days
- Box 7: Every 90 days
- Node.js (v14 or higher)
- MongoDB Atlas account
- npm or yarn
- Navigate to the backend directory:
cd backend
- Install dependencies:
npm install
- Create a
.env
file in the backend directory:
PORT=5000
MONGODB_URI=your_mongodb_atlas_connection_string
- Start the backend server:
npm run dev
- Navigate to the frontend directory:
cd frontend
- Install dependencies:
npm install
- Start the frontend development server:
npm start
flashcard-app/
├── backend/
│ ├── models/
│ │ └── Flashcard.js
│ ├── routes/
│ │ └── flashcardRoutes.js
│ ├── .env
│ ├── package.json
│ └── server.js
│
└── frontend/
├── src/
│ ├── components/
│ │ ├── Dashboard.js
│ │ ├── FlashcardCreator.js
│ │ ├── ReviewFlashcards.js
│ │ └── AllFlashcards.js
│ ├── services/
│ │ └── api.js
│ ├── App.js
│ └── index.js
└── package.json
GET /api/flashcards
- Get all flashcardsGET /api/flashcards/due
- Get flashcards due for reviewPOST /api/flashcards
- Create a new flashcardPUT /api/flashcards/:id/answer
- Update flashcard box based on answerDELETE /api/flashcards/:id
- Delete a flashcard
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details