IbrahimMoftah329 / Capstone

1 stars 0 forks source link

CardMates

Overview

CardMates is an AI-powered flashcard and quizzing web app designed to optimize the learning process. Users can create, organize, and manage flashcards by subjects or groups. AI automates keyword extraction, enhances flashcard wording, and generates multiple question types (multiple-choice, true/false, matching, short response). Users can customize quizzes by setting the number of questions and difficulty levels, and the app is fully responsive for use on all devices (desktops, tablets, phones).

Key Features

Flashcard Management: Create, edit, and delete flashcards organized into decks.
AI-Enhanced Flashcards: AI searches for relevant study materials.
Quiz Generation: Generate quizzes (multiple-choice, true/false, matching, short-response) based on flashcard decks.
Difficulty Settings: Customize quizzes by specifying difficulty (easy, medium, hard) with predefined question distribution.

Tech Stack

Frontend: React.js
Backend: Node.js (with Express.js)
AI Integration: OpenAI API (for keyword extraction, quiz generation, and resource lookup)
Database: MongoDB
Hosting: AWS or Heroku
Version Control: GitHub

Planned MVP Features

Flashcard Creation & Management: Group and organize flashcards. AI Assistance: Keyword extraction and flashcard enhancement. Customizable Difficulty: Create quizzes with varied difficulty settings.

Reach Goals

Spaced Repetition: AI-based learning schedules for better retention.
Progress Tracking: Analytics and performance insights.
Collaborative Study: Share flashcards and quizzes with others.
Advanced AI: Improved language processing for more accurate question generation.

Team

Frontend: Nina and Ella - React UI and responsiveness.
Backend: Luis and Calvin - Java backend and database.
API Integration: Ibrahim - OpenAI API for AI-powered features and user authentication.
Testing & Deployment: All team members - QA, deployment on AWS/Heroku.

How to run/setup the project

Follow these steps to set up and run the project:

1. Clone the Repository Clone the repo using either the HTML or SSH link:

git clone <repository-url>

2. Check for Nodemon Installation Verify if Nodemon is installed globally:

npm list -g nodemon

3. Install dependencies If dependencies are not installed, you can install it globally by running:

bash npm install -g nodemon

bash npm install --save-dev @clerk/clerk-react

bash npm install react-router-dom

4. Navigate to the Backend Directory Change into the cloned repository's Backend directory:

cd Backend

5. Start the Server To start the server, run:

npm run dev

6. Navigate to the Frontend Directory Change into the cloned repository's Frontend directory:

bash cd Frontend

7. Start the Webpage To start the Webpage, run:

bash npm run dev

Updating your main branch without overwriting your local

Your local main branch is behind the remote main branch, what do you do?

At this point, your local main branch is equal to the remote main branch.

If you would also like your local test branch to be equal/updated with the remote main branch (could involve changes from other people), do these steps:

At this point, your main branch that was previously behind the remote changes (on github) is now updated you should continue to work on the testing branch and push any changes when done git push (push your changes to github as normal, pushes commited changes onto the remote version of whichever branch you are on)

Pulling a remote branch that doesn't exist on your local machine yet.

There is a new branch created on Github that you would like to access locally and be able to change the code to, but it does not exist on your local machine yet, what do you do?