{"id":18720124,"url":"https://github.com/lokicoule/pathfinding-viewer","last_synced_at":"2026-02-18T07:01:46.343Z","repository":{"id":208686224,"uuid":"705766690","full_name":"Lokicoule/pathfinding-viewer","owner":"Lokicoule","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-16T09:53:49.000Z","size":26592,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-31T19:36:34.914Z","etag":null,"topics":["astar-algorithm","cqrs","dijkstra-algorithm","maze-algorithms","maze-generator","pathfinding","pathfinding-algorithms","pathfinding-visualizer","react","typescript","vizualiser"],"latest_commit_sha":null,"homepage":"https://pathfinding-viewer.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lokicoule.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-16T16:45:32.000Z","updated_at":"2024-11-16T09:53:53.000Z","dependencies_parsed_at":"2023-12-24T10:26:56.384Z","dependency_job_id":"892846a1-3de5-4853-8674-cab2a9778dad","html_url":"https://github.com/Lokicoule/pathfinding-viewer","commit_stats":null,"previous_names":["lokicoule/pathfinding-viewer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Lokicoule/pathfinding-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lokicoule%2Fpathfinding-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lokicoule%2Fpathfinding-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lokicoule%2Fpathfinding-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lokicoule%2Fpathfinding-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lokicoule","download_url":"https://codeload.github.com/Lokicoule/pathfinding-viewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lokicoule%2Fpathfinding-viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29571887,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T06:19:27.422Z","status":"ssl_error","status_checked_at":"2026-02-18T06:18:44.348Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astar-algorithm","cqrs","dijkstra-algorithm","maze-algorithms","maze-generator","pathfinding","pathfinding-algorithms","pathfinding-visualizer","react","typescript","vizualiser"],"created_at":"2024-11-07T13:29:34.535Z","updated_at":"2026-02-18T07:01:46.296Z","avatar_url":"https://github.com/Lokicoule.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎯 Pathfinding Algorithm Visualizer\n\n![Project Status: Active](https://img.shields.io/badge/Project_Status-Active-green)\n![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.0.2-blue)\n![React](https://img.shields.io/badge/React-18.2-blue)\n[![Website](https://img.shields.io/website?url=https://pathfinding-viewer.vercel.app/)](https://pathfinding-viewer.vercel.app/)\n\nAn interactive pathfinding algorithm visualizer built with React and CQRS architecture. Watch algorithms like A\\*, Dijkstra, and BFS find their way through mazes in real-time.\n\n![Demo](https://github.com/Lokicoule/pathfinding-viewer/blob/main/docs/gifs/demo.gif)\n\n## Features\n\n- 🔍 Pathfinding solver algorithms\n  - A\\* - Fastest path with heuristic\n  - Dijkstra - Guaranteed shortest path\n  - BFS - Shortest path for unweighted graphs\n  - DFS - Memory-efficient path finding\n- 🎲 Maze generation algorithms\n  - Prim's - Random weighted maze\n  - Recursive Division - Room-like structures\n  - DFS - Long winding passages\n- ⚡ Real-time visualization with step tracking\n- 🎮 Interactive grid controls (drag \u0026 draw)\n- ⏯️ Animation controls with adjustable speed\n\n## Architecture\n\nA proof of concept demonstrating how CQRS (Command Query Responsibility Segregation) can be effectively implemented in a React frontend application. This project showcases clean architecture principles through an interactive pathfinding visualization, separating read and write operations while maintaining a clear boundary between business logic and UI concerns.\n\n```\nApplication Core\n   │\n   ├── Domain Layer\n   │      ├── Commands (SetAlgorithm, PathfindingRunner)\n   │      ├── Events (AnimationCompleted, PathfindingCompleted)\n   │      ├── Value Objects (Speed, Algorithm, Grid)\n   │      └── Entities (Node, Grid)\n   │\n   ├── Application Layer\n   │      ├── Command Handlers\n   │      ├── Event Handlers\n   │      ├── Query Handlers\n   │      └── Sagas\n   │\n   ├── Infrastructure Layer\n   │      ├── CQRS Implementation\n   │      ├── Store Management\n   │      ├── Animation Manager\n   │      └── Data Structures\n   │\n   └── Presentation Layer\n         ├── Components\n         ├── Hooks\n         └── View Models\n```\n\n## Usage\n\nThe visualizer supports two modes of operation:\n\n### Manual Mode\n\nCreate custom mazes and obstacles:\n\n- Draw walls by clicking/dragging\n- Place start and end points\n- Design custom scenarios\n\n### Automatic Mode\n\nLet algorithms generate mazes:\n\n- Choose a maze generation algorithm\n- Grid auto-clears before generation\n- Ensures valid path existence\n\n```mermaid\nstateDiagram-v2\n    [*] --\u003e EmptyGrid: Initial State\n\n    state \"Grid Creation\" as GridCreation {\n        EmptyGrid --\u003e Manual: User Choice\n        EmptyGrid --\u003e AutoGen: User Choice\n\n        state \"Manual Creation\" as Manual {\n            [*] --\u003e DrawWalls: Click/Drag\n            DrawWalls --\u003e MovePoints: Drag Start/End\n            MovePoints --\u003e DrawWalls: Continue Editing\n        }\n\n        state \"Auto Generation\" as AutoGen {\n            [*] --\u003e SelectMazeAlgo: Choose Generator\n            SelectMazeAlgo --\u003e SetSpeed: Adjust Speed\n            SetSpeed --\u003e RunGeneration: Generate\n            RunGeneration --\u003e ClearGrid: Auto Clear\n            ClearGrid --\u003e GenerateMaze: Create Maze\n\n            state \"Generation Animation\" as GenAnimation {\n                GenerateMaze --\u003e AnimatingMaze: Running\n                AnimatingMaze --\u003e PausedMaze: Pause\n                PausedMaze --\u003e AnimatingMaze: Resume\n                AnimatingMaze --\u003e StoppedMaze: Stop\n                AnimatingMaze --\u003e CompleteMaze: Finish\n                PausedMaze --\u003e StoppedMaze: Stop\n                StoppedMaze --\u003e CompleteMaze: Show Full Maze\n            }\n        }\n    }\n\n    state \"Pathfinding\" as Pathfinding {\n        [*] --\u003e SelectAlgorithm: Choose Algorithm\n        SelectAlgorithm --\u003e SetVisualizationSpeed: Set Speed\n        SetVisualizationSpeed --\u003e RunVisualization: Start\n\n        state \"Solving Animation\" as SolveAnimation {\n            RunVisualization --\u003e AnimatingSolve: Running\n            AnimatingSolve --\u003e PausedSolve: Pause\n            PausedSolve --\u003e AnimatingSolve: Resume\n            AnimatingSolve --\u003e StoppedSolve: Stop\n            AnimatingSolve --\u003e CompleteSolve: Finish\n            PausedSolve --\u003e StoppedSolve: Stop\n            StoppedSolve --\u003e CompleteSolve: Show Full Path\n        }\n\n        CompleteSolve --\u003e DisplayResult: Show\n    }\n\n    state DisplayResult {\n        [*] --\u003e FinalGrid\n        note right of FinalGrid\n            Shows:\n            - Explored nodes\n            - Final path\n            - Walls\n            - Start/End points\n        end note\n    }\n\n    Manual --\u003e Pathfinding: Ready\n    AutoGen --\u003e Pathfinding: Ready\n    CompleteMaze --\u003e Pathfinding: Ready\n\n    note right of AutoGen\n        Grid automatically clears\n        before generating new maze\n        to ensure valid paths\n    end note\n\n    note right of Manual\n        User must ensure valid\n        path exists between\n        start and end points\n    end note\n\n    DisplayResult --\u003e EmptyGrid: Reset/Clear\n```\n\n### Algorithm Controls\n\n- Start/Stop visualization\n- Adjust animation speed\n- Reset grid\n- Clear path/walls\n- Swap start/end points\n\n## Getting Started\n\n1. Clone the repository\n\n```bash\ngit clone https://github.com/Lokicoule/pathfinding-visualizer.git\n```\n\n2. Install dependencies\n\n```bash\nnpm install\n```\n\n3. Start the development server\n\n```bash\nnpm run dev\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flokicoule%2Fpathfinding-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flokicoule%2Fpathfinding-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flokicoule%2Fpathfinding-viewer/lists"}