Loading repository data…
Loading repository data…
Ijee / repository
This project aims to visualize various algorithms to create and traverse mazes.
[!TIP]
Check it out at amazeing.app/.
This has been a passion project of mine which I did not create for profit and it will always remain open source and ad-free.
If you enjoy this project and want to show your appreciation, feel free to:
Contributions are welcome! :heart:
To ensure a smooth collaboration, please follow these guidelines:
There are quite a few TODOs throughout this project that could be good starting points. Feel free to browse existing issues or create a new one to propose an idea.
Note: This project is based on a previous Vue.js project of mine, which was later converted to Angular. You can check out the original Game of Life Vue project here.
Here is a quick overview of the project structure and where the most important functionality is located.
├── assets # Uncompressed source files (images & markdown articles)
├── e2e
│ └── playwright # E2E UI automation tests
├── src
│ ├── app
│ │ ├── @core # Singleton services and core logic
│ │ │ ├── algorithm # Implementation of all maze and pathfinding algorithms
│ │ │ | ├── classes # Data structures (HashSet, PriorityQueue, etc.)
│ │ │ │ ├── maze
│ │ │ │ └── path-finding
│ │ │ ├── services
│ │ │ │ ├── algorithm.service.ts # Standardizes algorithm execution & delegates data for simulation
│ │ │ │ ├── record.service.ts # Manages algorithm state and iteration history
│ │ │ │ ├── settings.service.ts # Persists user preferences
│ │ │ │ └── simulation.service.ts # Controls simulation state (play/pause/step, etc.)
│ │ │ └── types # Shared interfaces and types
│ │ ├── @shared # Reusable UI elements and helper logic
│ │ │ ├── components
│ │ │ ├── directives
│ │ │ ├── pipes
│ │ │ └── utils # Pure utility functions
│ │ ├───learn # The /learn route and components
│ │ └───simulation # The /simulation route and components
├── assets # Assets for the final bundle (compressed images & compiled frontmatter articles)
├── build-articles.js # CI: Converts Markdown + Frontmatter into JSON
└── build-version.js # CI: Injects latest Git tag version into production builds
Run ng serve for development. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.
Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.
This project uses Playwright for e2e tests and ensures that the most common use-cases are covered and don't produce errors while executing the algorithms.
More tests could be introduced but there is no way to automatically test for the correctness
of the algorithms themselves.
Run locally: npm run test:pw
This project is licensed under the MIT License.