Version: 0.0.1
Type: Module
Recall-a-palooza is a web application built using React that helps you create and review flashcards for spaced repetition learning. It provides features for creating decks of flashcards, conducting training sessions, and reviewing your progress.
To get started with Recall-a-palooza, follow these steps:
-
Clone the repository:
git clone <repository-url> cd recall-a-palooza
-
Install dependencies:
npm install
-
Run the development server:
npm run dev
-
Open your web browser and navigate to http://localhost:3000 to access the application.
Recall-a-palooza offers an intuitive interface for creating and reviewing flashcards. Here's a sneak peek:
Easily create new decks and add flashcards to them. Each flashcard consists of a question and its corresponding answer
Select a deck and start a training session. Review each flashcard and rate your performance. The app uses spaced repetition to enhance your learning efficiency.
After completing a training session, access detailed reports showcasing your performance metrics, including response times and correctness.
Recall-a-palooza provides the following functionality:
- Visit the "Create a Deck" page.
- Add flashcards to your deck by providing questions and answers.
- Save your deck for future training sessions.
- Start a training session by selecting a deck.
- Review flashcards in your deck, and rate your performance for each card (easy, medium, or hard).
- Recall-a-palooza uses spaced repetition to schedule card reviews.
- View training reports for your completed training sessions.
- See statistics on your performance, including response times and correctness.
- Create and manage flashcard decks.
- Conduct spaced repetition training sessions.
- Track and analyze your training progress with reports.
To deploy Recall-a-palooza using Docker Compose, use the following docker-compose.yml
:
version: "3.8"
services:
frontend:
image: ghcr.io/henrikroschmann/recall-a-palooza:latest
command: npm run preview --prefix /app/frontend
ports:
- "8081:8081"
depends_on:
- backend
backend:
image: ghcr.io/henrikroschmann/recall-a-palooza:latest
environment:
MONGO_URI: "mongodb://mongo:27017/palooza"
ports:
- "3066:3066"
depends_on:
- mongo
mongo:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- /store/docker-configs/palooza:/data/db
volumes:
mongodata:
Once you have the docker-compose.yml
in place, run:
docker-compose up
This will start Recall-a-palooza's frontend, backend, and a MongoDB instance.
Contributions are welcome! If you'd like to contribute to Recall-a-palooza, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and test thoroughly.
- Commit your changes with clear and concise commit messages.
- Push your branch to your fork.
- Submit a pull request to the main repository.
Please ensure that your code follows the project's coding standards and conventions.
- Session List: A view to see a list of training sessions.
- Training Report: After each session, a detailed report of the performance.
- Training Session: The main session where users study and answer questions.
- Deck Retrieval and Update: Fetching a deck by its ID and updating it based on user feedback.
- Session Creation: Storing the data of each session.
- Interval-based Card Retrieval: Cards are retrieved for study based on their last reviewed date and their interval.
- Card Types: Different flashcard types including multiple-choice, single answer, and flip cards.
- User Feedback: After answering a card, the user can rate it as easy, medium, or hard to adjust its review interval.
- Local Storage: Storing some session data in local storage.
-
Review Algorithm: Consider implementing a more sophisticated algorithm like the SuperMemo SM2 algorithm or Anki's algorithm. The interval modification in the current implementation is quite simplistic.
-
Deck Creation and Management: Allow users to create, edit, or delete decks and cards within those decks.
-
User Authentication: Implement user sign-up, login, and authentication to make it a multi-user platform.
-
Statistics and Progress: Graphs or charts to visualize progress over time, including metrics like average correct answers, review intervals, etc.
-
Tags and Categories: For better organization of decks and cards.
-
Reminders: Push notifications or email reminders for users to review their cards.
-
Mobile App: If it's a web application, consider creating a mobile version or even a native app for iOS and Android.
-
Leitner System: Integrate a box-based system where cards move between different boxes based on the user's performance.
-
Media Integration: Allow users to include images, audio clips, or even short videos in their flashcards.
-
Search Functionality: Allow users to search through their decks and cards.
-
Keyboard Shortcuts: For power users to navigate through cards and answer options without using the mouse.
-
Feedback and Reporting: Allow users to report issues with cards or give feedback.
-
Offline Mode: Especially if it's a mobile app, allow users to review cards offline.
-
Night Mode: A darker theme for studying in low-light conditions.
-
Import/Export Functionality: Allow users to import decks from other platforms or export their decks to share with others.
This project is licensed under the MIT License.