An interactive sorting-algorithm playground built with React, TypeScript, and Vite
Project documentation is organized in docs/.
Themis Sort Visualizer helps students and developers understand sorting algorithms through:
- real-time animated execution;
- step-by-step playback controls;
- algorithm learning pages with historical and complexity context;
- runtime counters for comparisons and swaps;
- mobile-friendly interface with responsive navigation.
All educational content is local. No external AI/API dependency is required at runtime.
- Visual simulation for 25 sorting algorithms.
- Generator-based execution model (
Generator<SortStep>) for frame-by-frame rendering. - Interactive controls:
Play,Pause,Step,Reset. - Dynamic speed and array-size sliders.
- Optional Web Audio feedback for compare/swap/finish events.
- Algorithm lookup/search in the algorithm hub.
- Learning mode with contextual explanation and pseudo-code.
- React 19
- TypeScript 5
- Vite 6
- Framer Motion
- Lucide React
- CSS (custom styles in
src/styles/global.css)
.
├── docs/
│ ├── assets/
│ │ ├── preview_001.png
│ │ └── preview_002.png
│ ├── en/
│ │ ├── ALGORITHMS.md
│ │ ├── ARCHITECTURE.md
│ │ ├── DEPLOYMENT.md
│ │ ├── DEVELOPMENT.md
│ │ ├── ROADMAP.md
│ │ └── TESTING.md
│ └── README.md
├── public/
│ └── _redirects
├── src/
│ ├── components/
│ ├── data/
│ ├── services/
│ ├── styles/
│ ├── types/
│ ├── App.tsx
│ └── main.tsx
├── index.html
├── package.json
├── tsconfig.json
├── vite.config.ts
└── wrangler.toml
- Node.js 20+
- npm 10+
npm install
npm run devDefault dev URL: http://localhost:5173
npm run build
npm run previewBuild artifacts are generated in dist/.
npm run dev: start local development server.npm run build: create production bundle.npm run preview: preview production build locally.
The project is configured with two workflows:
- CI (
.github/workflows/ci.yml): runsnpm ciandnpm run buildonpushandpull_requesttargetingmain. - CD (
.github/workflows/deploy.yml): builds and automatically deploys to GitHub Pages on everypushtomain.
- Open repository
Settings. - Go to
Pages. - In
Build and deployment, selectSource: GitHub Actions. - Merge/push to
mainto trigger the first deployment.
After publishing, the URL will follow this format:
https://<owner>.github.io/Themis-Sort-Visualizer/
src/components/Visualizer.tsx currently maps a subset of algorithms in getGenerator. If an algorithm is selected but not mapped, execution falls back to Bubble Sort.
Recommended follow-up: map all AlgorithmType values in getGenerator to their corresponding generator implementations.
Contributions are welcome. Please read:
This project is licensed under the MIT License.

