{"id":50382602,"url":"https://github.com/bramp/grids","last_synced_at":"2026-05-30T13:01:24.254Z","repository":{"id":339878192,"uuid":"1162323749","full_name":"bramp/grids","owner":"bramp","description":"A set of grid based puzzles","archived":false,"fork":false,"pushed_at":"2026-03-27T18:17:58.000Z","size":55714,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T15:42:43.839Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://grid.bramp.net/","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bramp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"bramp","buy_me_a_coffee":"bramp"}},"created_at":"2026-02-20T05:48:53.000Z","updated_at":"2026-03-14T23:43:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bramp/grids","commit_stats":null,"previous_names":["bramp/grids"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bramp/grids","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fgrids","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fgrids/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fgrids/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fgrids/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bramp","download_url":"https://codeload.github.com/bramp/grids/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fgrids/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33692997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-05-30T13:01:23.300Z","updated_at":"2026-05-30T13:01:24.242Z","avatar_url":"https://github.com/bramp.png","language":"Dart","funding_links":["https://github.com/sponsors/bramp","https://buymeacoffee.com/bramp"],"categories":[],"sub_categories":[],"readme":"# Grids\n\n\"Grids\" is an interactive, grid-based puzzle game inspired by Taiji and The Witness. Built cross-platform with Flutter using modern, strict Dart testing environments and `provider` state management.\n\n## Documentation\n\n* [Game Design Document](docs/game_design.md): Explains the overarching puzzle rules, how different grid mechanics work, and rule logic.\n* [Architecture Design Document](docs/architecture_design.md): High-level overview of the application components and tech stack.\n* [TODO Tracker](TODO.md): Track the immediate goals and task progress.\n\n## Setup \u0026 Running\n\nThis project uses [Dart pub workspaces](https://dart.dev/tools/pub/workspaces) with Flutter.\n\n1. Ensure you have Flutter SDK installed (3.11.0 or newer).\n2. Install packages from the workspace root:\n\n   ```bash\n   flutter pub get\n   ```\n\n3. Run or deploy to your target emulator/browser:\n\n   ```bash\n   cd apps/grids \u0026\u0026 flutter run -d chrome\n   ```\n\n   (Alternatively, use `-d macos` or an iPhone/Android emulator).\n\n## Firebase Analytics Setup\n\nThis project uses Firebase Analytics to track puzzle solve attempts and timing. To configure it for your own Firebase project:\n\n1. Install the [FlutterFire CLI](https://firebase.flutter.dev/docs/cli/).\n2. Run the configuration command in the root of the project:\n\n   ```bash\n   flutterfire configure\n   ```\n\n3. Follow the prompts to select your Firebase project and select the platforms you wish to support.\n4. This will overwrite the placeholder `apps/grids/lib/firebase_options.dart` file with your real credentials, enabling analytics to begin tracking automatically.\n\n## Project Structure\n\nThis project uses [Dart pub workspaces](https://dart.dev/tools/pub/workspaces) to split the codebase into focused packages:\n\n| Package | Path | Description |\n|---------|------|-------------|\n| `grids` | `apps/grids/` | Flutter app — UI, providers, services, platform dirs |\n| `grids_engine` | `packages/engine/` | Pure Dart game engine — grid logic, solver, validators, level data |\n| `grids_tools` | `packages/tools/` | CLI tools — puzzle solver, generator |\n\n## Testing\n\nThe core engine is 100% decoupled from the UI, so it is extensively tested via unit tests. A `Makefile` provides convenient commands for running checks across all packages:\n\n| Command | Description |\n|---------|-------------|\n| `make` | Run format, analyze, and all tests |\n| `make format` | Format all Dart code |\n| `make analyze` | Run the analyzer across all packages |\n| `make test` | Run all tests (engine + app) |\n| `make test-engine` | Run engine tests only (pure Dart, fast) |\n| `make test-app` | Run app tests only |\n| `make fix` | Apply auto-fixes from the analyzer |\n| `make clean` | Delete build artifacts |\n\n## Development\n\nTo ensure code quality and consistency, we use [pre-commit](https://pre-commit.com/) hooks. To set them up locally:\n\n1. Install `pre-commit` (e.g., `brew install pre-commit`).\n2. Install the hooks in the repository:\n\n   ```bash\n   pre-commit install\n   ```\n\nThe hooks will now run automatically on every `git commit` (they delegate to the Makefile targets). You can also run them manually on all files:\n\n```bash\npre-commit run --all-files\n```\n\n### Puzzle Solver CLI\n\nThe project includes a brute-force solver that can find all possible solutions for the levels defined in the game.\n\nTo run a summary of all levels:\n\n```bash\ncd packages/tools \u0026\u0026 dart run bin/solve.dart\n```\n\nTo see all solutions for a specific level (and copy-pastable ASCII):\n\n```bash\ncd packages/tools \u0026\u0026 dart run bin/solve.dart shrine_5\n```\n\nThis tool is useful for verifying puzzle uniqueness and ensuring that every level in the repository is actually solvable.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbramp%2Fgrids","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbramp%2Fgrids","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbramp%2Fgrids/lists"}