{"id":51205550,"url":"https://github.com/omercnet/shevet","last_synced_at":"2026-06-28T03:03:43.370Z","repository":{"id":367785740,"uuid":"1282139231","full_name":"omercnet/shevet","owner":"omercnet","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-27T17:03:53.000Z","size":370,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-27T17:23:03.745Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","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/omercnet.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":"2026-06-27T11:25:35.000Z","updated_at":"2026-06-27T16:54:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/omercnet/shevet","commit_stats":null,"previous_names":["omercnet/shevet"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/omercnet/shevet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omercnet%2Fshevet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omercnet%2Fshevet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omercnet%2Fshevet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omercnet%2Fshevet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omercnet","download_url":"https://codeload.github.com/omercnet/shevet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omercnet%2Fshevet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34875369,"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-28T02:00:05.809Z","response_time":54,"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-06-28T03:03:42.278Z","updated_at":"2026-06-28T03:03:43.352Z","avatar_url":"https://github.com/omercnet.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# שבט אמהות — rebuild\n\nRebuild of shevet-imahot.co.il off WordPress onto a lean, low-cost stack.\n\n- **`WEBSITE_SPEC.md`** — current-site spec (verified against WP admin) + rebuild scope.\n- **`ARCHITECTURE.md`** — target architecture + decisions.\n- **`pitch/`** — Hebrew client pitch deck (`shevet-pitch.html`).\n- **`studio/`** — Sanity CMS (content model / schemas).\n- **`web/`** — Astro static front-end.\n\n## Stack\nAstro (static) · Sanity (Free) · Netlify · Responder (forms/email) · Meshulam (payments). $0 fixed/mo.\n\n## Hosting (Netlify)\nConfig in `netlify.toml` (base `web/`, publish `dist`). One-time setup:\n1. Netlify → **Add new site → Import from Git** → pick this repo (private is fine).\n2. **Site settings → Environment variables** → add `SANITY_TOKEN` = a Sanity **read** token (dataset is private). `SANITY_PROJECT_ID`/`DATASET` come from `netlify.toml`.\n3. **Domain** → add `shevet-imahot.co.il`; point DNS at Netlify (their apex/ALIAS records) — auto-HTTPS.\n4. **Auto-rebuild on content publish:** Netlify → **Build hooks** → create one → copy the URL. In Sanity (manage.sanity.io → API → Webhooks) add a webhook to that URL, **POST, no headers, no body** (uncheck drafts). Publishing in Studio then redeploys the site (~1-2 min).\n\nNo PAT, no GitHub Pages, repo stays private.\n\n## Setup\n\n### 1. Sanity (CMS)\n```bash\ncd studio\nnpm install\nnpx sanity init        # create/link a project; copy the projectId\nnpm run dev            # studio at http://localhost:3333\n```\nSet `SANITY_STUDIO_PROJECT_ID` (or edit `sanity.config.ts` / `sanity.cli.ts`).\n\n### 2. Web (Astro)\n```bash\ncd web\nnpm install\ncp .env.example .env   # fill SANITY_PROJECT_ID, dataset, GTM id\nnpm run dev            # http://localhost:4321\n```\n\n### 3. Deploy the Studio (gives Keren a login URL)\n```bash\ncd studio\nnpx sanity login      # interactive, one-time (only the owner can do this)\nnpx sanity deploy     # pick a hostname → https://\u003cname\u003e.sanity.studio\n```\nThen invite editors at manage.sanity.io (Free plan = up to 20 seats). Keren edits there — no terminal.\n\n### 4. Import content from the old WordPress site\nThe WXR export (not committed — contains practitioner PII) loads into Sanity via `tools/import`:\n```bash\ncd tools/import\nnpm install\necho \"SANITY_TOKEN=\u003cwrite token\u003e\" \u003e\u003e .env   # plus SANITY_PROJECT_ID/DATASET; .env is gitignored\nnpm run dry-run -- --dir /path/to/wxr        # parse + preview, writes nothing\nnpm run import  -- --dir /path/to/wxr        # writes; idempotent (createOrReplace)\n```\nImports practitioners, articles, benefits + hospital/field/region taxonomy terms. `--no-images` skips asset upload. Re-running is safe (deterministic ids).\n\n\u003e **Private dataset:** it holds practitioner contact info, so it is **not** public. Both the build and the import need a Sanity token. For CI, add a **read** token as the `SANITY_TOKEN` GitHub Actions secret (Settings → Secrets → Actions). Without it, CI still passes — the site builds empty.\n\n## What's built\n- **Two search engines** — `/doulas/` (hospital · due date · support style · budget) and `/professionals/` (field · region · language). Client-side, instant.\n- **Converting doula profile** — `/doulas/[slug]` with video embed + sticky WhatsApp CTA + reviews.\n- Brand locked: **Oron Yad** font (`web/public/fonts/`) + raspberry/peach/cream tokens (`src/styles/brand.css`).\n\n## TODO (tracked in ARCHITECTURE.md §9)\n- Confirm with Keren: `supportStyle` values, `budget` bands, due-date matching rule, GTM id.\n- Pages: `/articles/`, `/benefits/`, `/community/`, `/doulas/join/` (self-serve), sale pages.\n- Embed Rav-Messer forms (matchmaking + profile contact) from `siteSettings`.\n- Import script: WXR export → Sanity docs.\n- `_redirects` from old URLs + the 301-plugin map.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomercnet%2Fshevet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomercnet%2Fshevet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomercnet%2Fshevet/lists"}