Learn algorithms visually through real-time, interactive animations
- About
- Features
- Quick Start
- Contributing
- Project Structure
- Documentation
- Roadmap
- Community
- Contributors
- License
Vizit is an educational platform that brings algorithms to life through smooth, interactive visualizations. Perfect for students, educators, and anyone learning computer science fundamentals.
Why Vizit?
- π― Step-by-step execution with pause/play controls
- π¨ Beautiful animations with dark/light themes
- π Performance metrics tracked in real-time
- π§© Multiple algorithms - sorting, data structures, graphs
- π Educational focus - clear explanations and pseudocode
- π€ AI Learning Assistant - Interactive chatbot for instant help
Sorting Algorithms
- Bubble Sort
- Merge Sort
- Selection Sort
Math Algorithms
- Fibonacci
- GCD (Greatest Common Divisor)
- Modular Arithmetic
- Sieve of Eratosthenes
- Prime Factorization
Data Structures
- Stack
- Queue
- B-Tree
Graph Algorithms
- Breadth-First Search (BFS)
- Maze Generation
Visualization Controls
- Step-by-step execution (play, pause, step, reset)
- Speed control
- Code highlighting
- Custom input
- Responsive design
- Dark/Light themes
π€ AI Learning Assistant
- Interactive chatbot powered by Google Gemini
- Real-time algorithm explanations and guidance
- Complexity analysis and performance insights
- Step-by-step learning with examples
- Streaming responses with beautiful formatting
- Node.js 20.x or higher
- npm, yarn, or pnpm
# Clone the repository
git clone https://github.com/masabinhok/vizit.git
cd vizit
# Install dependencies
npm install
# Set up environment variables
cp .env.local.example .env.local
# Add your Gemini API key to .env.local (see Setup Guide below)
# Run development server
npm run dev
# Open http://localhost:3000Vizit includes an AI-powered chatbot that helps users learn algorithms interactively! To enable this feature:
-
Get a free Gemini API key:
- Visit Google AI Studio
- Sign in with your Google account
- Click "Create API Key" and copy it
-
Configure the API key:
# Create environment file echo "GEMINI_API_KEY=your_actual_api_key_here" > .env.local
-
Features you'll unlock:
- π― Algorithm explanations with step-by-step breakdowns
- π Complexity analysis and performance insights
- π‘ Interactive learning with examples and practice guidance
- π Real-time streaming responses with beautiful formatting
- π¨ Visual learning integrated with Vizit's platform features
-
Test the chatbot:
- Start the dev server:
npm run dev - Click the chat icon in the bottom-right corner
- Try asking: "What is Merge Sort?" or "How does Binary Search work?"
- Start the dev server:
Note: The chatbot will work without an API key but with limited functionality. For the best learning experience, we recommend setting up the Gemini API key!
npm run build
npm run startWe welcome contributions from developers of all skill levels!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
π Read our Contributing Guide for detailed instructions.
Perfect for first-time contributors:
- π¨ Add new algorithms - Follow our Adding Algorithms Guide
- π Improve documentation - Add comments, fix typos, clarify instructions
- π Fix bugs - Check our issue tracker
- β¨ Enhance UI/UX - Improve animations, accessibility, or design
- π§ͺ Add tests - Help us improve code quality
Look for issues labeled: good-first-issue, help-wanted, hacktoberfest
- Code Style: We use ESLint and Prettier - run
npm run lintbefore committing - TypeScript: All code must be type-safe
- Commits: Use conventional commits (e.g.,
feat:,fix:,docs:) - Testing: Test your changes thoroughly before submitting
vizit/
βββ app/
β βββ api/
β β βββ chat/ # AI chatbot API endpoint
β βββ algorithm/
β β βββ bfs/
β β βββ binary-search/
β β βββ btree/
β β βββ bubble-sort/
β β βββ fibonacci/
β β βββ gcd/
β β βββ maze-generation/
β β βββ prime-factorization/
β β βββ ...
β βββ layout.tsx
β βββ page.tsx
βββ components/
β βββ ChatbotWidget.tsx # AI learning assistant
β βββ ui/
β βββ visualizers/
βββ contexts/
β βββ ChatbotContext.tsx # Chat state management
βββ utils/
β βββ gemini-service.ts # AI service integration
βββ lib/
β βββ utils/
βββ public/
βββ docs/
β βββ CONTRIBUTING.md
β βββ ADDING_ALGORITHMS.md
β βββ CHATBOT_SETUP.md # Detailed chatbot setup
βββ .env.local # Environment variables
βββ package.json
βββ tsconfig.json
βββ README.md
Key Architecture:
- Each algorithm/data structure has its own dedicated page and logic file
- Reusable, type-safe visualization components
- Easy to extend β see Adding Algorithms Guide
- Contributing Guide - How to contribute
- Adding Algorithms - Step-by-step guide for new algorithms
- GitHub Discussions - Ask questions and share ideas
- AI Learning Assistant - Interactive chatbot powered by Google Gemini
- Real-time streaming responses with beautiful formatting
- Algorithm explanations and complexity analysis
- Step-by-step learning guidance
- Quick Sort and Merge Sort improvements
- Binary Search visualization
- Graph algorithms (DFS, Dijkstra)
- Algorithm comparison mode
- Mobile app support
- Enhanced chatbot features (code examples, quizzes)
See open issues for planned features and known bugs.
- π¬ Discussions: GitHub Discussions
- π Issues: GitHub Issues
- π§ Contact: masabinhok@gmail.com
Thanks to all our contributors! π
Want to be featured here? Submit your first PR!
This project is licensed under the MIT License - see LICENSE for details.
If Vizit helps you learn algorithms:
- β Star this repository
- π Fork and contribute
- π’ Share with your learning community
- π¬ Give us feedback
Made with π by the open source community