{"id":314697,"name":"Green Goods","description":"Measures, tracks, and rewards the impact on gardens with a simple Progressive Web App.","url":"https://github.com/greenpill-dev-guild/green-goods","last_synced_at":"2026-05-13T22:01:43.575Z","repository":{"id":242139512,"uuid":"793298191","full_name":"greenpill-dev-guild/green-goods","owner":"greenpill-dev-guild","description":"Bringing community and environmental actions onchain to better measure, track and reward impact on local communities with a simple PWA.","archived":false,"fork":true,"pushed_at":"2026-05-08T01:42:48.000Z","size":163823,"stargazers_count":22,"open_issues_count":3,"forks_count":5,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-05-08T03:37:12.468Z","etag":null,"topics":["attestations","collaboration","community","environment","ethereum","filecoin","foundry","greenpill","ipfs","knowledge-garden","local-first","p2p","pwa","regen-coordination","solidity","storacha","tailwindcss","typescript","vite"],"latest_commit_sha":null,"homepage":"https://greengoods.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"greenpill-dev-guild/camp-green","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greenpill-dev-guild.png","metadata":{},"created_at":"2024-04-29T00:11:50.000Z","updated_at":"2026-05-07T22:40:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/greenpill-dev-guild/green-goods","commit_stats":null,"previous_names":["greenpill-dev-guild/green-goods"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/greenpill-dev-guild/green-goods","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greenpill-dev-guild","download_url":"https://codeload.github.com/greenpill-dev-guild/green-goods/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33001377,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"ssl_error","status_checked_at":"2026-05-13T13:14:51.610Z","response_time":115,"last_error":"SSL_read: 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"}},"owner":{"login":"greenpill-dev-guild","name":"Greenpill Dev Guild","uuid":"148837355","kind":"organization","description":"We're a collective of regen developers building tools for Greenpill chapters and regen communities.","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/148837355?v=4","repositories_count":2,"last_synced_at":"2024-03-15T01:28:40.225Z","metadata":{"has_sponsors_listing":false,"funding":{"github":["greenpill-dev-guild"],"custom":[{"url":"https://explorer.gitcoin.co/#/projects/0x4f354435756ee1c1ea18402a559874cd2bb918ad795b7e361e1257425e57a7de","label":"Gitcoin"},{"url":"https://giveth.io/project/greenpill-dev-guild","label":"Giveth"}]}},"html_url":"https://github.com/greenpill-dev-guild","funding_links":["https://github.com/sponsors/greenpill-dev-guild",{"url":"https://explorer.gitcoin.co/#/projects/0x4f354435756ee1c1ea18402a559874cd2bb918ad795b7e361e1257425e57a7de","label":"Gitcoin"},{"url":"https://giveth.io/project/greenpill-dev-guild","label":"Giveth"}],"total_stars":2,"followers":null,"following":null,"created_at":"2023-12-12T20:11:27.023Z","updated_at":"2024-03-15T01:28:40.260Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greenpill-dev-guild","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greenpill-dev-guild/repositories"},"packages":[{"id":14389630,"name":"github.com/greenpill-dev-guild/green-goods","ecosystem":"go","description":null,"homepage":null,"licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/greenpill-dev-guild/green-goods","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2026-05-05T19:36:26.000Z","latest_release_published_at":"2026-05-05T19:36:26.000Z","latest_release_number":"v1.1.0","last_synced_at":"2026-05-11T21:05:25.476Z","created_at":"2026-05-06T12:38:04.557Z","updated_at":"2026-05-11T21:05:25.476Z","registry_url":"https://pkg.go.dev/github.com/greenpill-dev-guild/green-goods","install_command":"go get github.com/greenpill-dev-guild/green-goods","documentation_url":"https://pkg.go.dev/github.com/greenpill-dev-guild/green-goods#section-documentation","metadata":{},"repo_metadata":{},"repo_metadata_updated_at":"2026-05-06T15:26:43.860Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.10009395951028,"dependent_packages_count":4.778736471275303,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":4.939415215392792},"purl":"pkg:golang/github.com/greenpill-dev-guild/green-goods","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/greenpill-dev-guild/green-goods","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/greenpill-dev-guild/green-goods","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/greenpill-dev-guild/green-goods/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgreenpill-dev-guild%2Fgreen-goods/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgreenpill-dev-guild%2Fgreen-goods/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgreenpill-dev-guild%2Fgreen-goods/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgreenpill-dev-guild%2Fgreen-goods/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgreenpill-dev-guild%2Fgreen-goods/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgreenpill-dev-guild%2Fgreen-goods/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2136979,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":1749983,"full_name":"greenpill-dev-guild/green-goods","default_branch":"develop","total_commits":1613,"total_committers":10,"total_bot_commits":23,"total_bot_committers":2,"mean_commits":161.3,"dds":0.05517668939863607,"past_year_total_commits":1466,"past_year_total_committers":8,"past_year_total_bot_commits":22,"past_year_total_bot_committers":2,"past_year_mean_commits":183.25,"past_year_dds":0.03683492496589358,"last_synced_at":"2026-05-11T21:04:50.605Z","last_synced_commit":"07cb01e1a90bd613d504a95784e820781a316512","created_at":"2024-09-17T12:51:50.460Z","updated_at":"2026-05-11T21:04:46.283Z","committers":[{"name":"Afo","email":"contact@afolabi.info","login":"Oba-One","count":1524},{"name":"0xWildhare","email":"sschell1979@gmail.com","login":"0xWildhare","count":31},{"name":"Tarun Gupta","email":"tarungupta_er@rediffmail.com","login":"Tarun-k-Gupta","count":18},{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":16},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":7},{"name":"Cursor Agent","email":"cursoragent@cursor.com","login":"cursoragent","count":6},{"name":"Athus","email":"atsaudio@gmail.com","login":"AtsKotzen","count":5},{"name":"Alexander Mangel","email":"cygnusfear@gmail.com","login":"Cygnusfear","count":3},{"name":"Claude","email":"noreply@anthropic.com","login":null,"count":2},{"name":"mrcn","email":"marcin.uxa@gmail.com","login":"mrcn","count":1}],"past_year_committers":[{"name":"Afo","email":"contact@afolabi.info","login":"Oba-One","count":1412},{"name":"Tarun Gupta","email":"tarungupta_er@rediffmail.com","login":"Tarun-k-Gupta","count":18},{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":16},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":6},{"name":"Cursor Agent","email":"cursoragent@cursor.com","login":"cursoragent","count":6},{"name":"Athus","email":"atsaudio@gmail.com","login":"AtsKotzen","count":5},{"name":"Claude","email":"noreply@anthropic.com","login":null,"count":2},{"name":"Alexander Mangel","email":"cygnusfear@gmail.com","login":"Cygnusfear","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-13T00:00:10.629Z","repositories_count":6233866,"commits_count":894176909,"contributors_count":34890139,"owners_count":1152628,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"greenpill-dev-guild/green-goods","html_url":"https://github.com/greenpill-dev-guild/green-goods","last_synced_at":"2026-05-11T21:05:16.671Z","status":"active","issues_count":222,"pull_requests_count":137,"avg_time_to_close_issue":7817704.479166667,"avg_time_to_close_pull_request":572664.24,"issues_closed_count":96,"pull_requests_closed_count":100,"pull_request_authors_count":7,"issue_authors_count":8,"avg_comments_per_issue":0.19369369369369369,"avg_comments_per_pull_request":1.562043795620438,"merged_pull_requests_count":74,"bot_issues_count":0,"bot_pull_requests_count":32,"past_year_issues_count":122,"past_year_pull_requests_count":94,"past_year_avg_time_to_close_issue":2417981.3191489363,"past_year_avg_time_to_close_pull_request":841700.3157894737,"past_year_issues_closed_count":47,"past_year_pull_requests_closed_count":57,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":0.28688524590163933,"past_year_avg_comments_per_pull_request":1.7659574468085106,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":28,"past_year_merged_pull_requests_count":36,"created_at":"2024-09-17T12:51:51.145Z","updated_at":"2026-05-11T21:05:16.671Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpill-dev-guild%2Fgreen-goods/issues","issue_labels_count":{"story":42,"contract":32,"state-logic":31,"task":29,"component":28,"design":23,"enhancement":21,"documentation":18,"api":14,"bug":14,"client":10,"admin":9,"shared":6,"infrastructure":5,"polish":4,"good first issue":3,"javascript":3,"spike":1,"impact-reporting":1,"size: large":1,"status: ready":1,"sprint: active":1,"priority: high":1},"pull_request_labels_count":{"dependencies":31,"javascript":29,"contract":20,"component":20,"api":17,"state-logic":17,"documentation":4,"database":2,"enhancement":2,"infrastructure":2,"hacktoberfest-accepted":1,"automated/codex":1,"admin":1,"codex":1},"issue_author_associations_count":{"MEMBER":156,"NONE":63,"COLLABORATOR":3},"pull_request_author_associations_count":{"MEMBER":82,"NONE":54,"OWNER":1},"issue_authors":{"Oba-One":196,"c-georgen":14,"marcaumdesign":4,"cauetomaz":3,"moose-code":2,"Cygnusfear":1,"NFTthat":1,"kitblake":1},"pull_request_authors":{"Oba-One":93,"dependabot[bot]":31,"Cygnusfear":6,"Tarun-k-Gupta":4,"adigulalkari":1,"saket0392":1,"fly-io[bot]":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-13T00:00:11.310Z","repositories_count":14590477,"issues_count":34252077,"pull_requests_count":112128422,"authors_count":11261011,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"task":29,"enhancement":21,"state-logic":20,"story":18,"component":18,"contract":15,"documentation":15,"bug":14,"client":10,"api":10,"admin":9,"design":8,"shared":6,"polish":4,"infrastructure":3,"javascript":3,"good first issue":2,"spike":1,"sprint: active":1,"size: large":1,"status: ready":1,"priority: high":1,"impact-reporting":1},"past_year_pull_request_labels_count":{"javascript":29,"dependencies":27,"component":3,"state-logic":3,"api":3,"documentation":3,"infrastructure":2,"enhancement":2,"contract":2,"automated/codex":1,"hacktoberfest-accepted":1,"admin":1,"codex":1},"past_year_issue_author_associations_count":{"MEMBER":119,"NONE":3},"past_year_pull_request_author_associations_count":{"MEMBER":58,"NONE":35,"OWNER":1},"past_year_issue_authors":{"Oba-One":115,"cauetomaz":2,"moose-code":2,"c-georgen":1,"kitblake":1,"NFTthat":1},"past_year_pull_request_authors":{"Oba-One":58,"dependabot[bot]":27,"Tarun-k-Gupta":4,"Cygnusfear":2,"adigulalkari":1,"fly-io[bot]":1,"saket0392":1},"maintainers":[{"login":"Oba-One","count":224,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Oba-One"},{"login":"c-georgen","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/c-georgen"},{"login":"cauetomaz","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cauetomaz"},{"login":"adigulalkari","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/adigulalkari"},{"login":"NFTthat","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/NFTthat"}],"active_maintainers":[{"login":"Oba-One","count":173,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Oba-One"},{"login":"cauetomaz","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cauetomaz"},{"login":"adigulalkari","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/adigulalkari"},{"login":"c-georgen","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/c-georgen"},{"login":"NFTthat","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/NFTthat"}]},"events":{"total":{"DeleteEvent":60,"PullRequestEvent":143,"ForkEvent":3,"IssuesEvent":486,"WatchEvent":10,"IssueCommentEvent":181,"PushEvent":409,"PullRequestReviewCommentEvent":186,"PullRequestReviewEvent":159,"CreateEvent":85,"CommitCommentEvent":50},"last_year":{"DeleteEvent":59,"PullRequestEvent":128,"ForkEvent":2,"IssuesEvent":467,"WatchEvent":5,"IssueCommentEvent":171,"PushEvent":352,"PullRequestReviewCommentEvent":186,"PullRequestReviewEvent":144,"CreateEvent":78,"CommitCommentEvent":40}},"keywords":["attestations","collaboration","community","environment","ethereum","filecoin","foundry","greenpill","ipfs","knowledge-garden","local-first","p2p","pwa","regen-coordination","solidity","storacha","tailwindcss","typescript","vite"],"dependencies":[],"score":null,"created_at":"2025-04-20T00:10:48.393Z","updated_at":"2026-05-13T22:01:43.577Z","avatar_url":"https://github.com/greenpill-dev-guild.png","language":"TypeScript","category":"Biosphere","sub_category":"Biodiversity Citizen Science","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Green Goods\n\n[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/greenpill-dev-guild/green-goods/releases)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n\n**Bringing community and environmental actions onchain to better measure, track and reward impact.**\n\nGreen Goods is an offline-first platform for documenting ecological and social work and proving impact on-chain. Operators approve gardener submissions, and the protocol anchors results in Ethereum attestation infrastructure.\n\n## Getting Started\n\n### Prerequisites\n\nInstall **Node.js 22+** and **Git**. Install **Docker Desktop** if you plan to run the full stack or indexer locally. Node includes `npm`, and `npm run setup` installs Bun automatically if it is missing.\n\n**Optional tools:** Foundry is needed for contract work. `cloudflared` is useful for mobile-device PWA testing. macOS and Linux are supported natively; use WSL2 or a dev container on Windows.\n\n### Clone\n\n[![Clone on GitHub](https://img.shields.io/badge/Clone-on%20GitHub-2da44e?logo=github)](https://github.com/greenpill-dev-guild/green-goods)\n\nUse GitHub's **Code** button to choose the SSH or HTTPS remote that matches your local Git setup. Then run the setup commands from the repo root.\n\n### Agent-Assisted Setup\n\nIf you are using Codex, Claude Code, or another coding agent, start by loading [ONBOARDING.md](./ONBOARDING.md). It gives the agent the repo context, setup flow, environment model, and first-run checks before it starts changing files.\n\n```text\nRead ONBOARDING.md and AGENTS.md, then walk me through first-time setup for this repo.\nStart with prerequisites, run npm run setup, check web readiness, start the browser\nstack, and explain any env blockers before making changes.\n```\n\n### Setup\n\n#### Install dependencies\n\n```bash\nnpm run setup\n```\n\nAfter setup, use `bun` for repo scripts and package operations. `npm run setup` is the only documented npm entrypoint because fresh machines may not have Bun yet.\n\n#### Environment defaults\n\nGreen Goods uses a single root `.env`, materialized from `.env.template` via the [1Password CLI](https://developer.1password.com/docs/cli/) (`op inject`). Bun, Vite, and Node read it natively — no per-command secret fetch.\n\n```bash\nbun run env:template:init   # one-time: scaffold .env.template from .env.schema\nbun run env:sync             # materialize .env from .env.template (runs `op inject`)\nbun run env:check            # validate .env satisfies .env.schema\n```\n\n`.env.schema` defines the contract; `.env.template` is the team-shared file with `op://Vault/Item/field` refs for shared secrets and plain values for non-secrets. Keep personal local-only credentials directly in `.env`.\n\n| Variable | Needed for | Default setup state |\n| --- | --- | --- |\n| `APP_ENV` | Local tooling mode | Generated as `development` |\n| `VITE_CHAIN_ID` | Client/admin chain selection | Generated for Sepolia |\n| `VITE_ENVIO_INDEXER_URL` | Local indexer reads | Generated for local GraphQL; needs the indexer running for live local data |\n| `VITE_PINATA_JWT` | Upload-capable media | Add only when testing uploads |\n| `VITE_PIMLICO_API_KEY` | Passkey auth | Add only when testing passkey flows |\n| `VITE_WALLETCONNECT_PROJECT_ID` | Wallet auth | Add only when testing wallet flows |\n| `TELEGRAM_BOT_TOKEN` | Agent service | Add only when running a useful local agent |\n\nFor shared team secrets, edit `.env.template` and set the value to `op://Vault/Item/field`, then run `bun run env:sync`. For personal local credentials, set the variable directly in the root `.env`. Never create package-level `.env` files.\n\n### Check readiness\n\n```bash\nbun run dev:doctor -- --profile web\n```\n\n### Start stack\n\n```bash\nbun run dev:web\n```\n\nStarts the four browser-based surfaces: client, admin, docs, and Storybook.\n\n### Testing\n\n```bash\nbun run dev:smoke:web\n```\n\nRun this after the browser stack is starting.\n\n## Tech Stack\n\n### Stack Overview\n\n- Node.js 22+ provides `npm` for first-clone setup.\n- `npm run setup` installs Bun, installs dependencies, and creates the root `.env`.\n- Bun is the workspace runtime after setup.\n- `.env.schema` (key contract) + `.env.template` (1Password refs) materialize `.env` via `bun run env:sync` (`op inject`).\n- PM2 manages local dev services.\n- Docker powers full-stack indexer development.\n- Storybook runs from the shared package.\n- Full-stack work adds Docker-backed indexer services, the agent, tunnel, and workflow-specific env or secrets.\n\n### Core Local URLs\n\nClient and admin can start with generated defaults. Live data, uploads, authenticated onchain flows, and the local agent depend on the matching env and services.\n\n| Surface | URL | Started by |\n| --- | --- | --- |\n| Client | \u003chttps://localhost:3001\u003e | `bun run dev:web` or `bun run dev` |\n| Admin | \u003chttps://localhost:3002\u003e | `bun run dev:web` or `bun run dev` |\n| Docs | \u003chttp://localhost:3003\u003e | `bun run dev:web` or `bun run dev` |\n| Storybook | \u003chttp://localhost:6006\u003e | `bun run dev:web` or `bun run dev` |\n| Agent | \u003chttp://localhost:3000/health\u003e | `bun run dev` with configured agent env |\n| Indexer | \u003chttp://localhost:8080/v1/graphql\u003e | `bun run dev` with Docker running |\n\n### Dev Commands\n\n#### Start browser surfaces\n\n```bash\nbun run dev:web\n```\n\nRuns the four browser-based sites: client, admin, docs, and Storybook.\n\n#### Start full local stack\n\nCheck full-stack readiness first:\n\n```bash\nbun run dev:doctor -- --profile full\n```\n\nThen start the full stack:\n\n```bash\nbun run dev\n```\n\nUse the full stack for Docker/indexer, agent, tunnel, or mobile-device PWA work. Run the full doctor first; some services need workflow-specific env or secrets before they are useful.\n\n#### Stop local services\n\n```bash\nbun run dev:stop\n```\n\n## Contributing\n\n### Guides\n\nRead the [Greenpill Dev Guild contributing guide](https://github.com/greenpill-dev-guild/.github/blob/main/CONTRIBUTING.md) and the full [How to Contribute](https://docs.greengoods.app/builders/how-to-contribute) guide before opening a pull request.\n\n### Before Pushing\n\nRun each command from the repo root before pushing.\n\n#### Check formatting\n\n```bash\nbun run format:check\n```\n\n#### Run lint\n\n```bash\nbun run lint\n```\n\n#### Run tests\n\n```bash\nbun run test\n```\n\n#### Build workspace\n\n```bash\nbun run build\n```\n\n### Funded Scoped Work\n\nPaid implementation work is grant-dependent and must be clearly scoped with maintainers before work begins. Green Goods does not run open-ended bounties.\n\n## Resources\n\n### Documentation\n\n- [Developer Getting Started](https://docs.greengoods.app/builders/getting-started) - setup, env bootstrap, local services, and first-run workflow\n- [Architecture](https://docs.greengoods.app/builders/architecture) - system design, boundaries, and diagrams\n- [Builder API Index](https://docs.greengoods.app/builders/packages/api-index) - package APIs, contracts, and shared surfaces\n- [Operations](https://docs.greengoods.app/builders/operations) - build, deploy, environment, and workflow references\n- [How to Contribute](https://docs.greengoods.app/builders/how-to-contribute) - contributor workflow and expectations\n\n### Agent References\n\n- [ONBOARDING.md](./ONBOARDING.md) - paste into Claude Code on day one for a guided setup walkthrough\n- [AGENTS.md](./AGENTS.md) - runtime rules and repo invariants for Codex and other coding agents\n- [CLAUDE.md](./CLAUDE.md) - Claude Code commands, patterns, and working conventions\n\n### Community and Security\n\n- [Code of Conduct](https://github.com/greenpill-dev-guild/.github/blob/main/CODE_OF_CONDUCT.md)\n- [Security Policy](https://github.com/greenpill-dev-guild/.github/blob/main/SECURITY.md)\n- [MIT License](./LICENSE)\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["conservation","biodiversity","biodiversity-monitoring","impact","regenerative","smart-contracts"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/314697","html_url":"https://ost.ecosyste.ms/projects/314697"}