Skip to content

Benkyo is a simple and effective flashcard app that helps you learn anything faster.

Notifications You must be signed in to change notification settings

duonganh203/benkyo

Repository files navigation

Benkyo

A simple and effective flashcard application that helps you learn anything faster. Create your own flashcards or choose from pre-made decks. Study anytime, anywhere.


MIT License PRs Welcome

Product showcase

Create flashcards, study with spaced repetition, and chat with AI about your documents.

Features

The Benkyo application supports:

  • 💯 Free & open-source.
  • 🧠 Advanced spaced repetition system (FSRS) for optimal learning.
  • 🤖 AI-powered learning with document chat and quiz generation.
  • 🌓 Dark/light theme support.
  • 📱 Mobile-friendly responsive design.
  • 🔄 Personalized learning algorithm that adapts to your performance.
  • 📊 Track your learning progress with detailed statistics.
  • 👥 Share decks with the community.
  • 📄 Document upload and processing (PDF, DOC, DOCX).
  • 🔐 OAuth login with Google and Facebook.
  • 📊 Quiz generation and performance analysis.
  • 🖼️ Support for various media types (text, images, audio, video).

Tech Stack

Frontend

  • React with TypeScript
  • Vite for fast development and building
  • TailwindCSS for styling
  • ShadcnUI components
  • React Query for data fetching
  • React Router for navigation

Backend

  • Node.js with Express
  • TypeScript
  • MongoDB with Mongoose
  • JWT authentication
  • Passport.js for OAuth
  • Multer for file uploads

Quick Start

Note: These instructions are for setting up Benkyo for local development.

Use npm or yarn to install dependencies.

# Clone the repository
git clone https://github.com/yourusername/benkyo.git
cd benkyo

# Setup and start the backend
cd benkyo-server
npm install
cp .env.example .env  # Update with your values
npm run dev

# Setup and start the frontend (in a new terminal)
cd benkyo-client
npm install
cp .env.example .env  # Update with your values
npm run dev

Check out the documentation for more details!

Environment Setup

Backend (.env)

MONGO_URI=your_mongodb_connection_string
PORT=3000
JWT_SECRET=your_jwt_secret
JWT_REFRESH_SECRET=your_refresh_token_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
FRONTEND_URI=http://localhost:5173
FACEBOOK_APP_ID=your_facebook_app_id
FACEBOOK_APP_SECRET=your_facebook_app_secret
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_INDEX_NAME=your_pinecone_index_name
GOOGLE_AI_KEY=your_google_ai_key

Frontend (.env)

VITE_API_URL=http://localhost:3000/api
VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
VITE_UPLOAD_PRESET_AVATAR=your_cloudinary_upload_preset
VITE_GOOGLE_AI_KEY=your_google_ai_key

Docker Deployment

# Create .env file in the root directory with your values
docker-compose up -d

Access the application at http://localhost:4000

Contributing

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Benkyo is a simple and effective flashcard app that helps you learn anything faster.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages