✍ https://memo.d.foundation ✍
The vault of knowledge where we keep our internal notes from everything related to our engineering practices, new tech we are learning, and as well as business and hiring notices
This is the repository where we keep our internal notes. We use this repo to share our knowledge, insights, and experiences with each other before we make it generally available to our community.
We welcome contributions from anyone who is interested in our topics. You can contribute by creating a new note, editing an existing note, or commenting on a note. To do so, you need to follow these steps:
- Fork this repo and clone it to your local machine.
- Install Devbox, a command-line tool that lets you easily create isolated shells and containers for development. Devbox will help you set up a consistent and reproducible environment for this repo, with all the necessary tools and dependencies installed.
- Run
devbox shell
in the root directory of the repo to enter an isolated shell.
To run the server, you can run our Makefile command:
make run
or through devbox:
devbox run run
The app uses client-side search with Fuse.js. To improve build performance and reduce page size, we generate a separate search index file during the build process:
pnpm run generate-search-index
This script creates a static JSON file at public/content/search-index.json
that's loaded dynamically by the client when needed, instead of being included in every page's props.
Our Git Submodule Hook Manager (scripts/git-shell-hook.ts
) automates git hooks and GitHub Actions workflows across submodules with features for:
- Automated hook installation across all submodules
- GitHub Actions workflow creation for markdown linting
- Recursive submodule discovery
- Dynamic script execution on git operations
- Complete hook management (install/remove/status)
# Generate linting script and host it in `/public/tools/ci-lint.js` to be used by the git hooks
pnpm run build-ci-lint
# Setup pre-commit hooks for markdown linting across all submodules
pnpm run setup-hook-local
# Create GitHub Actions workflows for markdown linting in all submodules
pnpm run setup-gh-lint
# Setup hooks only for specific submodules
npx -y tsx scripts/git-shell-hook.ts setup --modules vault,research,playbook
# View hook status across all submodules
npx -y tsx scripts/git-shell-hook.ts status
# Create custom workflow with specific triggers
npx -y tsx scripts/git-shell-hook.ts github-actions \
--workflow-name custom-quality-check \
--trigger-events push,pull_request,schedule \
--modules vault,research
After running the setup command, each submodule will have its own hook management script:
# In any submodule directory
./pre-commit-hook.sh install # Install hook
./pre-commit-hook.sh remove # Remove hook
./pre-commit-hook.sh status # Check status
For detailed documentation and troubleshooting, see the generated README files in each submodule after running the setup commands.
We expect all contributors to adhere to our code of conduct, which is based on the Contributor Covenant. By participating in this project, you agree to abide by its terms. Please report any unacceptable behavior to team@d.foundation.
A big thank to all who contributed to this project!
If you'd like to contribute, please check out the the above Code of conduct guide.