{"id":51006012,"url":"https://github.com/snim2/noteground","last_synced_at":"2026-06-20T20:30:41.602Z","repository":{"id":349579743,"uuid":"1202331819","full_name":"snim2/noteground","owner":"snim2","description":"Somewhat kludgy, locally hosted personal notes running in your browser via WordPress Playground.","archived":false,"fork":false,"pushed_at":"2026-04-06T15:37:22.000Z","size":96,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T17:26:12.444Z","etag":null,"topics":["notes","playground","wordpress","wordpress-playground"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/snim2.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-04-05T22:45:26.000Z","updated_at":"2026-04-06T15:37:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/snim2/noteground","commit_stats":null,"previous_names":["snim2/noteground"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/snim2/noteground","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snim2%2Fnoteground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snim2%2Fnoteground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snim2%2Fnoteground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snim2%2Fnoteground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snim2","download_url":"https://codeload.github.com/snim2/noteground/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snim2%2Fnoteground/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34585195,"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-20T02:00:06.407Z","response_time":98,"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":["notes","playground","wordpress","wordpress-playground"],"created_at":"2026-06-20T20:30:38.820Z","updated_at":"2026-06-20T20:30:41.598Z","avatar_url":"https://github.com/snim2.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Noteground - personal notes running locally on WordPress Playground\n\nA personal knowledge base running locally via [WordPress Playground](https://wordpress.github.io/wordpress-playground/). No PHP installation, no database daemon, no web server configuration required — WordPress runs entirely in your browser.\n\nThis repo is public, but your notes live in a separate **private** Git repository that you clone locally via the scripts provided.\n\nNote that there is  [a proposal](https://adamadam.blog/2025/01/08/wordpress-as-a-git-repo/) from Adam Zieliński to make it possible for WordPress Playground to have content stored as Markdown files.\nYou can [follow the discussion on GitHub](https://github.com/WordPress/wordpress-playground/discussions/1524) about this, but it is not yet officially supported.\n\n## Quickstart\n\n### Prerequisites\n\n- Node.js 18+ and npm 9+\n- Git\n\n### Clone this repo and install dependencies\n\n```bash\ngit clone git@github.com:snim2/noteground.git\ncd noteground\n./script/setup\n```\n\n### Create a private notes repo\n\nCreate a new **private** repository on GitHub or any Git host, then clone it:\n\n```bash\n./script/init-data git@github.com:you/notes-data.git\n```\n\n### Start writing\n\n```bash\n./script/start\n```\n\nThe site opens at `http://127.0.0.1:9400` by default. Admin panel at `/wp-admin` — credentials `admin` / `password`.\n\n### Save your notes\n\nAfter a writing session, press Ctrl+C. You'll be asked whether to save — or run at any time:\n\n```bash\n./script/save\n```\n\nThis commits the database and media library to your private repo and pushes.\n\n## Restoring notes on a new machine\n\n```bash\ngit clone git@github.com:snim2/noteground.git\ncd noteground\n./script/setup\ngit clone git@github.com:you/notes-data.git data\n./script/start\n```\n\n## Running multiple notebooks simultaneously\n\nYou can run as many independent WordPress instances as you like from a single checkout using the `NOTES_PROFILE` environment variable. Each profile gets its own data directory, WP Playground site cache, and port (auto-detected from 9400 upward).\n\n```bash\n# Set up a named profile\nNOTES_PROFILE=work ./script/init-data git@github.com:you/notes-work.git\n\n# Start it (open another terminal for a second instance)\nNOTES_PROFILE=work ./script/start\n\n# Save after a session\nNOTES_PROFILE=work ./script/save\n```\n\nProfile names must contain only letters, numbers, and hyphens (e.g. `work`, `research-2`).\n\nEach profile stores data in its own gitignored directory (`./data-work/`, `./data-research/`, etc.), each backed by its own private repo. No note content ever touches this public repo.\n\n## Configuration\n\n`blueprint.json` controls what WordPress installs on first boot (plugins, theme, PHP version, site title). Edit it then run `./script/reset` to rebuild. Your notes are safe — the database lives in `./data/`, not in WP Playground's cache.\n\n### Per-profile overrides\n\nCreate a `blueprint-local.json` inside a profile's data directory (`./data/blueprint-local.json`, `./data-work/blueprint-local.json`, etc.) to customise that profile's local setup without affecting others. Top-level keys override the base; `plugins` and `steps` arrays are concatenated.\n\n```json\n{\n  \"preferredVersions\": { \"php\": \"8.2\" },\n  \"steps\": [\n    {\n      \"step\": \"installPlugin\",\n      \"pluginData\": { \"resource\": \"wordpress.org/plugins\", \"slug\": \"classic-editor\" }\n    }\n  ]\n}\n```\n\nThe file is kept with the private notes repo, so overrides are naturally scoped to that profile and never touch this public repo.\n\n## Scripts\n\n| Script | Purpose |\n|---|---|\n| `setup` | Install dependencies and check prerequisites |\n| `start` | Start WordPress Playground |\n| `save` | Commit database and media library to the private repo |\n| `reset` | Wipe WP Playground's cached state and rebuild from `blueprint.json` |\n| `stop` | Stop all running WordPress Playground instances |\n| `init-data \u003curl\u003e` | One-time: clone a private repo as `./data/` |\n| `test` | Run lints and schema validation |\n\n`npm` shortcuts are available for all scripts: `npm start`, `npm run save`, etc.\n\n## How privacy works\n\n```plaintext\nnoteground/                 ← this repo (public)\n└── data/                   ← your private repo, cloned here (gitignored)\n    ├── database/\n    │   └── .ht.sqlite      ← SQLite database with all your notes\n    ├── uploads/            ← media library\n    ├── plugins/            ← custom plugins\n    └── themes/             ← custom themes\n```\n\nThe public repo contains only infrastructure. The `data/` directory (and any `data-*/` profile directories) are gitignored.\n\n## File layout\n\n```plaintext\n.\n├── blueprint.json           # WordPress Playground configuration (shared)\n├── data-*/                  # Your private repo(s) — gitignored\n│   └── blueprint-local.json # Per-profile overrides — optional, kept in private repo\n├── package.json\n├── schemas/\n│   └── blueprint.json       # JSON schema for blueprint files\n└── script/\n    ├── lib/\n    │   └── profile          # Shared profile resolution for multi-notebook support\n    ├── bootstrap            # Install system dependencies (macOS/Homebrew)\n    ├── init-data            # One-time: clone private repo as ./data/\n    ├── merge-blueprints     # Merge blueprint.json + blueprint-local.json\n    ├── reset                # Wipe and rebuild WP Playground site\n    ├── save                 # Commit and push database and media\n    ├── setup                # Install dependencies\n    ├── start                # Start dev server\n    ├── stop                 # Stop all running Playground instances\n    └── test                 # Run linters and tests\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnim2%2Fnoteground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnim2%2Fnoteground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnim2%2Fnoteground/lists"}