An interactive, fully client-side web app for visualizing core Operating System algorithms, from CPU scheduling to memory management, virtual memory, deadlock handling, and a lot of other algorithms.
Whether you're studying for an exam or just curious about how these foundational algorithms work behind the scenes, this project helps you explore each one through animated, step-by-step visualizations.
- Vue 3 (Composition API)
- Tailwind CSS for clean, responsive design
- Vite for fast development and build performance
Every algorithm includes a brief overview of:
- What problem it's solving
- How it works conceptually
- A step-by-step breakdown of execution on user-defined input
You’re not locked to pre-filled examples. Change process data, resource matrices, memory sizes, and instantly see the results reflected in the visualization.
Built to be intuitive for learners, with a clear step-by-step illustration on how the algorithm runs.
Make sure you have:
- Node.js (v16 or above)
pnpm,npm, oryarn
Then, copy .env.example to .env in the root of the project.
Finally, open the terminal in the directory of the project and run:
npm install
npm run devSpotted a bug? Have an idea for a new feature or algorithm? Want to improve the UI or fix some typos?
Feel free to open an issue or submit a pull request. Whether it's a small tweak or a big addition, contributions of all kinds are appreciated!
Before submitting, consider:
- Keeping the codebase clean and consistent with the existing structure.
- Writing clear commit messages and PR descriptions.
- Including screenshots or context if your change affects the UI.
Thanks for helping improve the project!
Please ensure you have the appropriate .vscode extensions installed as specified in .vscode/settings.json. Use the designated formatter for each file type:
To scaffold a new algorithm, run:
npm run generate:algorithmThis script will:
- Create a new Vue component in /src/views/algorithms
- Automatically register the route
You can then begin adding your logic and UI. Once your work is complete, submit a pull request on your feature branch.
🔁 Tip: If your changes affect the UI, include a screenshot or short description in your PR to help reviewers understand the context.
Due to rate limits, the searchbar only allows you to search 10 times/hour using the default demo API keys provided in .env.example. For extended development:
- Create an algolia account.
- Replace the default demo credentials in the .env, including the app ID, search key, and write key, with your own.
- Temporarily set the
NODE_ENVtoproduction. This is so that the following script imports the records to your project. Optionally, keep it ondevelopmentto save the file toscripts/tmp/algoliaRecords.json, and manually import the records. - Then run:
npm run indexAlgoliaRecords- Set the
NODE_ENVback todevelopment. - In Algolia, the primary text is set to
title, secondary text is set tosections.0.content, tertiary text is set tosections.0.title, and image url is set tofigures.0.src. The rest should be kept as-is.
If NODE_ENV is set to production, the script will automatically import the records to your project for indexing. If not, then it will be saved in scripts/tmp/algoliaRecords.json where you can manually import it to the project.