A Simple Accounting Ledger
- Simple application which writes and reads accounting ledger entries
Core dependencies are nix and nix-direnv. Everything else required for this repository is managed by these two!
We use direnv to manage all toolings and dependencies. You can reference the ./flake.nix file for their declarations and ./flake.lock for versions. Currently we are not pinning versions in flake.nix via import, but we should do that soon. Below are some tools we use, and a description of how we use them.
- nix-direnv
- we use direnv, as started above, but we use a specific nix-direnv that allows us to use nix, specifically nix develop via flake.nix, to manage our toolings such that we're all using the same thing.
- buf
- we use buf for proto toolchain. Linting, formatting, and generation. Also in CI allows for backwards-breaking change detection.
- gofumpt for formatting.
- gofumpy for formatting go code.
- golangci-lint for linting.
- golangci-lint for linting go code. I like to update golangci-lint versions and use it's default opinions; hence we have no .golangci-lint configuration file.
- colima for container runtimes.
- jaeger for local trace collector and ui.
- nats for eventing.
Read the Tooling section.
Navigate in your shell to this repos directory and a developer environment will be configured for you. Either have a global container runtime available, or use this environments colima, by running colima start. Review the Makefile to see available commands. Otherwise, everything is what you'd expect. Best of luck!