{"id":47746762,"url":"https://github.com/saboteur-works/getwrite","last_synced_at":"2026-06-15T03:05:21.612Z","repository":{"id":340238760,"uuid":"1158906499","full_name":"saboteur-works/getwrite","owner":"saboteur-works","description":"A local-first writing studio","archived":false,"fork":false,"pushed_at":"2026-06-10T23:10:18.000Z","size":4161,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T01:09:06.824Z","etag":null,"topics":["writer-tools","writing-software"],"latest_commit_sha":null,"homepage":"https://getwrite.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/saboteur-works.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T04:16:38.000Z","updated_at":"2026-06-10T23:10:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/saboteur-works/getwrite","commit_stats":null,"previous_names":["paradoxinversion/getwrite","saboteur-works/getwrite"],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/saboteur-works/getwrite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saboteur-works%2Fgetwrite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saboteur-works%2Fgetwrite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saboteur-works%2Fgetwrite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saboteur-works%2Fgetwrite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saboteur-works","download_url":"https://codeload.github.com/saboteur-works/getwrite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saboteur-works%2Fgetwrite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34345601,"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-06-15T02:00:07.085Z","response_time":63,"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":["writer-tools","writing-software"],"created_at":"2026-04-03T01:19:01.923Z","updated_at":"2026-06-15T03:05:21.605Z","avatar_url":"https://github.com/saboteur-works.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GetWrite\n\nGetWrite is a local-first writing workspace focused on structured projects, resource templates, and reproducible project scaffolding. This monorepo contains the frontend app, CLI tooling, specs, and documentation used to develop, test, and extend GetWrite.\n\n## Quick links\n\n- Docs: `docs/features` (project types, sidecars, data types)\n- Specs examples: `specs/002-define-data-models/project-types/`\n- Runtime templates: `getwrite-config/templates/project-types/`\n- Frontend source: `frontend/src`\n\n## Requirements\n\n- Node.js \u003e= 24 (we use Volta in CI/dev). If using nvm:\n\n- pnpm (preferred package manager). Install with npm if needed:\n\n```bash\nnpm install -g pnpm\n```\n\n## Setup\n\n1. Install dependencies (repo root):\n\n```bash\npnpm install\n```\n\n2. Install frontend workspace dependencies (if working in `frontend` alone):\n\n```bash\ncd frontend\npnpm install\n```\n\n## Development\n\n- Run frontend unit tests:\n\n```bash\ncd frontend\npnpm exec vitest\n```\n\n- Run the repo test task (runs frontend tests used by CI):\n\n```bash\npnpm run test\n```\n\n- Start a local frontend dev server (when implemented / for app development):\n\n```bash\ncd frontend\npnpm run dev\n```\n\n## Project structure (high level)\n\n- `frontend/` — Next.js frontend, components, tests, and runtime models\n- `getwrite-config/` — example runtime configuration and templates shipped alongside the app\n- `specs/` — specification artifacts and example project-type definitions used for docs and tests\n- `docs/` — user- and developer-facing documentation (see `docs/features`)\n- `src/cli/` and `dist-cli/` — CLI code and built CLI artifacts\n\n## Runtime models \u0026 validation\n\nKey model files live under `frontend/src/lib/models/`:\n\n- `schemas.ts` — Zod runtime schemas and helpers (use `validateProjectType()` / `validateProjectTypeFile()`)\n- `project-creator.ts` — scaffolding helper `createProjectFromType()` which validates specs and creates folders/resources\n- `sidecar.ts` — read/write helpers for sidecar metadata\n\nSee `docs/features` for more detailed docs on project types, sidecars, and data types.\n\n## Adding project-types and templates\n\n- Examples and tests reference `specs/002-define-data-models/project-types/`.\n- Runtime-discoverable templates belong in `getwrite-config/templates/project-types/`.\n- When adding or changing project-type schemas, update `frontend/src/lib/models/schemas.ts` and add unit tests under `frontend/tests/unit`.\n\n## Tests\n\n- Unit \u0026 integration tests run with Vitest in the `frontend` workspace.\n- The repository `pnpm run test` target executes the CI test runner for the frontend workspace.\n\n## Contributing\n\n- Open issues and PRs against the `002-define-data-models` branch for data model changes.\n- Follow repository standards found under `standards/` (TypeScript implementation, package selection, template integrity).\n- Run and update unit tests for any model/schema changes.\n\n## Troubleshooting\n\n- If tests fail due to Node version mismatch, ensure you are running Node v24+.\n- Validation errors for project types include Zod error messages — use `validateProjectTypeFile()` locally to inspect problems.\n\n## Where to look next\n\n- `docs/features/project-types.md` — project-type spec guidance\n- `docs/features/sidecars.md` — sidecar metadata guidance\n- `docs/features/data/data-types.md` — data type reference\n\n## Known Issues\n\n### Resource Tree\n\n- ResourceTree selected item does not update when resource is set from outside of the component\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaboteur-works%2Fgetwrite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaboteur-works%2Fgetwrite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaboteur-works%2Fgetwrite/lists"}