{"id":17679294,"url":"https://github.com/bbkane/observable.bbkane.com","last_synced_at":"2026-01-19T23:02:08.080Z","repository":{"id":258883300,"uuid":"869554687","full_name":"bbkane/observable.bbkane.com","owner":"bbkane","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-22T01:56:12.000Z","size":1728,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-12T15:34:42.971Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/bbkane.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":"2024-10-08T13:45:57.000Z","updated_at":"2025-09-22T01:56:15.000Z","dependencies_parsed_at":"2025-09-22T03:32:49.066Z","dependency_job_id":null,"html_url":"https://github.com/bbkane/observable.bbkane.com","commit_stats":null,"previous_names":["bbkane/observable.bbkane.com"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bbkane/observable.bbkane.com","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbkane%2Fobservable.bbkane.com","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbkane%2Fobservable.bbkane.com/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbkane%2Fobservable.bbkane.com/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbkane%2Fobservable.bbkane.com/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbkane","download_url":"https://codeload.github.com/bbkane/observable.bbkane.com/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbkane%2Fobservable.bbkane.com/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28588968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"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"}},"keywords":[],"created_at":"2024-10-24T08:21:59.568Z","updated_at":"2026-01-19T23:02:08.066Z","avatar_url":"https://github.com/bbkane.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# observable.bbkane.com\n\nThis is an [Observable Framework](https://observablehq.com/framework) project. To start the local preview server, run:\n\n```\nnpm run dev\n```\n\nThen visit \u003chttp://localhost:3000\u003e to preview your project.\n\nFor more, see \u003chttps://observablehq.com/framework/getting-started\u003e.\n\n## Project structure\n\nA typical Framework project looks like this:\n\n```ini\n.\n├─ src\n│  ├─ components\n│  │  └─ timeline.js           # an importable module\n│  ├─ data\n│  │  ├─ launches.csv.js       # a data loader\n│  │  └─ events.json           # a static data file\n│  ├─ example-dashboard.md     # a page\n│  ├─ example-report.md        # another page\n│  └─ index.md                 # the home page\n├─ .gitignore\n├─ observablehq.config.js      # the project config file\n├─ package.json\n└─ README.md\n```\n\n**`src`** - This is the “source root” — where your source files live. Pages go here. Each page is a Markdown file. Observable Framework uses [file-based routing](https://observablehq.com/framework/routing), which means that the name of the file controls where the page is served. You can create as many pages as you like. Use folders to organize your pages.\n\n**`src/index.md`** - This is the home page for your site. You can have as many additional pages as you’d like, but you should always have a home page, too.\n\n**`src/data`** - You can put [data loaders](https://observablehq.com/framework/loaders) or static data files anywhere in your source root, but we recommend putting them here.\n\n**`src/components`** - You can put shared [JavaScript modules](https://observablehq.com/framework/javascript/imports) anywhere in your source root, but we recommend putting them here. This helps you pull code out of Markdown files and into JavaScript modules, making it easier to reuse code across pages, write tests and run linters, and even share code with vanilla web applications.\n\n**`observablehq.config.js`** - This is the [project configuration](https://observablehq.com/framework/config) file, such as the pages and sections in the sidebar navigation, and the project’s title.\n\n## Command reference\n\n| Command           | Description                                              |\n| ----------------- | -------------------------------------------------------- |\n| `npm install`            | Install or reinstall dependencies                        |\n| `npm run dev`        | Start local preview server                               |\n| `npm run build`      | Build your static site, generating `./dist`              |\n| `npm run deploy`     | Deploy your project to Observable                        |\n| `npm run clean`      | Clear the local data loader cache                        |\n| `npm run observable` | Run commands like `observable help`                      |\n\n# Ben Notes\n\nCurrently trying to get TypeScript working. See https://github.com/observablehq/framework/pull/1632/files\n\nUpdate with:\n\n```bash\nnpm update @observablehq/framework\n```\n\nTypeScript files must be imported with the .js extension and Observable Framework does not typecheck, it just strips the types\n\nSee https://github.com/observablehq/framework/blob/main/docs/javascript.md for details, but semicolons matter here. Don't add semicolons to a thing that's supposed to plot!\n\nnode --experimental-strip-types  --test src/components/commitdays_pure.test.ts\n\nNeeded to install types to get node types\n\n```\nnpm i --save-dev @types/node\n```\n\nI think the reason I'm not getting my CSS is maybe that it thhe response headers show text/html - https://stackoverflow.com/a/67202997/2958070\n\n# Commits over time\n\nhttps://observablehq.com/d/d766ad521dd479d9\n\nFor some reason, the observable plot lib doesn't like this? It doesn't like the fill property...\n\nEven though I see it in https://observablehq.com/plot/transforms/bin\n\n# Cache invalidation\n\nhttps://observablehq.com/framework/data-loaders#caching\n\nDuring preview: looks at the `mtime` of data loaders (./src/data/git-commits.csv.py) . `touch` the file to invalidate the cache\n\nDuring build: looks at `./src/.observablehq/cache/`. Delete that to invalidate the cache\n\nBecause my data loader (git-commits.csv.py) reads a separate file (./src/data/repos.json), and that file isn't checked, the cache isn't invalidated when I add a repo to that file. So I need to manually invalidate the cache using one of the methods above. I'm going to update `npm run build` to auto-invalidate the cache.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbkane%2Fobservable.bbkane.com","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbkane%2Fobservable.bbkane.com","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbkane%2Fobservable.bbkane.com/lists"}