- TypeScript 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .mono | ||
| .vscode | ||
| static | ||
| workspaces | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .markdownlint.jsonc | ||
| .mono.env.ts | ||
| .mono.ts | ||
| biome.jsonc | ||
| bun.lock | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
howionlabsmono
Howion's custom (hence quite opinionated) monorepo to manage all of its (public and private) @howionlabs repositories and/or packages.
Motivation
None of the existing monorepo tools or structures were good enough and always resulted writing custom scripts. Google's Bazel seemed like a solid choice but the complexity and management of it wasn't worth it. Therefore, hereby we represent our custom monorepo (skeleton) by us for us.
This monorepo is currently is being used by us therefore, especially .mono.ts, is subject to change.
Dependencies
In order to work under this monorepo structure, make sure bun and git are installed.
Moreover, existence of fundamental unix commands such as rm, cp and mkdir are assumed.
Addons
$author(author: MonoPerson | MonoFormattedPersonText)$biomejs()$contributor(contributor: MonoPerson | MonoFormattedPersonText)$dependency(id: string)$env(...variables: string[])$git(uri: MonoGitURI)$github()Not implemented yet.$keys()Not implemented yet.$license(id: MonoLicenseId)$markdownlint()$npm(name: string)$static(from: string, to?: string, alwaysOverwrite = false)$vscode()
Mono CLI
remold
pull [id]
commit [id]
push [id]
Best Practices
- This monorepo supports single branch for managing it's git-tracked entries. By default it uses the current branch of the root (mono) and throws if tracked entries are on different branch.
- Each entry must be independent repository in a way that they should be standalone developable assuming access to possibly private packages. Therefore, assume each entry is its own repository and avoid relative file access outside the entry. Note that this monorepo supports monorepo dependencies via Bun workspaces.
Tech Stack
Roadmap
- Better mono documentation.
- Git branch management.
- Better tracking reporting both by mono and git for all workspace directories.
- Consider adding
.exampleto mono env schema/builder for.env.example. bun mono pushsafety checks.- Better key management via
keysaddon. - Gitleaks or Betterleaks?
- Add cache for faster remold?
- Maybe support multiple git remotes? Will probably be abandoned as many git providers provide mirroring.
License
The code related to the monorepo skeleton (which excludes ./zones that contain proprietary code) is licensed under the MIT License.