{"id":15392650,"url":"https://github.com/jackdbd/calderone","last_synced_at":"2025-04-15T23:29:01.281Z","repository":{"id":37789809,"uuid":"467508059","full_name":"jackdbd/calderone","owner":"jackdbd","description":"My personal TypeScript monorepo","archived":false,"fork":false,"pushed_at":"2024-09-20T08:44:44.000Z","size":4519,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T13:38:47.393Z","etag":null,"topics":["monorepo"],"latest_commit_sha":null,"homepage":"https://jackdbd.github.io/calderone/","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/jackdbd.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}},"created_at":"2022-03-08T12:44:36.000Z","updated_at":"2024-10-11T16:06:33.000Z","dependencies_parsed_at":"2024-10-19T00:17:12.536Z","dependency_job_id":"96308979-a6cb-4d8e-ba9e-f0f71aeb6bfa","html_url":"https://github.com/jackdbd/calderone","commit_stats":{"total_commits":523,"total_committers":3,"mean_commits":"174.33333333333334","dds":0.2562141491395793,"last_synced_commit":"7074c72a9d64ca3ef5e333335b10b58026bce1de"},"previous_names":[],"tags_count":128,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackdbd%2Fcalderone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackdbd%2Fcalderone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackdbd%2Fcalderone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackdbd%2Fcalderone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jackdbd","download_url":"https://codeload.github.com/jackdbd/calderone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239458912,"owners_count":19642099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["monorepo"],"created_at":"2024-10-01T15:15:30.039Z","updated_at":"2025-02-28T19:30:44.519Z","avatar_url":"https://github.com/jackdbd.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Calderone\n\n![CI workflow](https://github.com/jackdbd/calderone/actions/workflows/ci.yaml/badge.svg)\n![Release to npmjs.com workflow](https://github.com/jackdbd/calderone/actions/workflows/release-to-npmjs.yaml/badge.svg)\n[![codecov](https://codecov.io/gh/jackdbd/calderone/branch/main/graph/badge.svg?token=P5uJ3doRer)](https://codecov.io/gh/jackdbd/calderone)\n[![CodeFactor](https://www.codefactor.io/repository/github/jackdbd/calderone/badge)](https://www.codefactor.io/repository/github/jackdbd/calderone)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits\u0026logoColor=white)](https://conventionalcommits.org)\n\nMonorepo that I use for a bunch of stuff, managed with [npm workspaces](https://docs.npmjs.com/cli/v7/using-npm/workspaces/) (requires npm 7.x or later).\n\n![Calderone logo](./assets/images/calderone-logo.png)\n\n\u003e 📦 **ESM only:**\n\u003e \n\u003e All libraries of this monorepo are published to npmjs as ECMAScript modules.\n\u003e\n\u003e At the moment none of these packages has a CommonJS build.\n\n## Installation\n\nClone the repo:\n\n```shell\ngit clone git@github.com:jackdbd/calderone.git\n\ncd calderone\n```\n\nInstall all dependencies from npm.js and setup git hooks with [husky](https://typicode.github.io/husky/):\n\n```sh\nnpm install --include dev\n```\n\n\u003e [!NOTE]\n\u003e The flag `--include dev` is just to make sure dev dependencies get installed even if you have set the environment variable `NODE_ENV=production` on your machine.\n\n## Build\n\nThis monorepo uses [Typescript project references](https://www.typescriptlang.org/docs/handbook/project-references.html) to build all of its libraries.\n\nDocumentation is built by [TypeDoc](https://typedoc.org/).\n\nAPI docs are built by [api-extractor](https://api-extractor.com/) + [api-documenter](https://api-extractor.com/pages/setup/generating_docs/).\n\nBuild all libraries and their documentation (code to `\u003cpackage-root\u003e/lib`, TypeDoc docs to `\u003cmonorepo-root\u003e/docs`, api-documenter API docs to `\u003cpackage-root\u003e/api-docs`):\n\n```sh\nnpm run build\n```\n\nBuild all libraries, but with no docs (much faster, since building docs takes some time):\n\n```sh\nnpm run build:libs\n```\n\nBuild all development scripts in watch mode and all libraries in watch mode (useful for developing new scripts in TypeScript):\n\n```sh\nnpm dev:scripts\n```\n\nBuild all applications:\n\n```sh\nnpm run build -w packages/telegram-bot\nnpm run build -w packages/wasm-news\nnpm run build -w packages/webhooks\n```\n\n## Test\n\nRun all tests on all packages:\n\n```sh\nnpm run test\n```\n\n## Documentation\n\nThe documentation for all libraries in this monorepo is built by [TypeDoc](https://typedoc.org/).\n\nAPI docs are built by [api-extractor](https://api-extractor.com/) + [api-documenter](https://api-extractor.com/pages/setup/generating_docs/).\n\nWhenever there are changes to a library, rebuild its documentation to see if the public API was changed.\n\nFor example, let's say that we made some changes to the [checks](./packages/checks/README.md) package.\n\nFirst, rebuild the library and its documentation:\n\n```sh\nnpm run build -w packages/checks\n```\n\n\u003e :warning: **Warning:**\n\u003e\n\u003e If you changed the public API of the library (e.g. the doctring of the `isEuropeanVat()` function no longer declares the function as `@public`, but now declares it as `@internal`) API Extractor will print a warning and the build script will fail. Follow the instructions API Extractor gives you and re-run the build script, which this time should pass.\n\nSecond, spin up a dev server and double-check the documentation generated for the library:\n\n```sh\nnpx http-server --port 8080 -o docs/checks\n```\n\n*Note*: if the documentation was generated but you don't see it in the browser, open DevTools and click on `Empty Cache and Hard Reload`.\n\nThird, commit the changes, either with a single commit:\n\n```sh\ngit add packages/checks\ngit add docs/checks\ngit commit -m 'feat(checks): add function foo()'\n```\n\nor with 2 commits:\n\n```sh\n# source code\ngit add packages/checks/src\ngit commit -m 'feat(checks): add function foo()'\n```\n\n```sh\n# docs\ngit add packages/checks/.ae\ngit add packages/checks/api-docs\ngit add docs/checks\ngit commit -m 'docs(checks): rebuild docs'\n```\n\n## Monorepo management\n\nKeep the npm packages up to date using [taze](https://github.com/antfu-collective/taze):\n\n```sh\nnpx taze\n```\n\nSee also:\n\n- [docs](./docs/README.md)\n- [scripts](./scripts/README.md)\n\n## Applications\n\n- [@jackdbd/send-telegram-message](./packages/send-telegram-message/README.md): application that sends a message to a Telegram chat.\n- [@jackdbd/telegram-bot](./packages/telegram-bot/README.md): Telegram bot that I use for several things.\n- [@jackdbd/wasm-news](./packages/wasm-news/README.md): application that retrieves news about webassembly from several APIs (Reddit, Twitter, etc) and populates [this Google Sheets worksheet](https://docs.google.com/spreadsheets/d/1_px1dEv87iuDTTG6f6QfeSdNrGUhIsb941KDQwTOGLc).\n- [@jackdbd/webhooks](./packages/webhooks/README.md): application that receives webhook events from several third parties and handles them.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackdbd%2Fcalderone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjackdbd%2Fcalderone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackdbd%2Fcalderone/lists"}