Forge with git-based vouch trees and local-first issue tracking.
- Zig 94.5%
- Go 5.2%
- CSS 0.3%
| assets | Display username instead of login link when user is logged in | |
| lib | Add vouch flow to termbox interface | |
| manganin-http/src | Display username instead of login link when user is logged in | |
| manganin-ssh | SSH: create PTY | |
| src | Add vouch flow to termbox interface | |
| .gitignore | Add repo method | |
| build.zig | Fix translating TB_IMPL bodies | |
| build.zig.zon | Display username instead of login link when user is logged in | |
| LICENSE | Add LICENSE | |
| manganin.png | Add README.md | |
| README.md | Create issues repo on repo creation. | |
Manganin
Manganin is an alloy of manganese and copper known for maintaining a relatively constant electrical resistivity with changes in temperature. It is also a git forge with:
Vouch trees
Only those who have had their pubkey vouched by another trusted contributer can open issues or PRs, reducing spam and increasing the overall trust of the community environment.
Local-first issue tracking
TODO: Issues are stored in git, so you can clone a repository to edit issues locally using your own editor.
Terminal native design
WIP: termbox-based TUI for vouching, issue and PR management, and server configuration.
Configurable CI
TODO
User quick start
- Get vouched.
- SSH into the instance to set a username and password.
- You can now clone and push based on your permissions, and sign into the web UI.
- To push to a username prefixed branch (required for non-maintainers):
git push origin HEAD:refs/{username}/{branch}.
Developing
- You will need Go and Zig
- Make a directory to store the server information, referred to as MANGANIN_ROOT
- Make vouchlog in MANGANIN_ROOT/admin/vouchlog and add a line like
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAPUBKEY,root,vouch,null - Run the HTTP server with
env MANGANIN_ROOT=/path/to/root zig build serve - Build the Go program in manganin-ssh/ and move it to zig-out/bin (want to improve this workflow in particular)
- Run the Go SSH server with
env MANGANIN_ROOT=/path/to/root MANGANIN_DEBUG=1 ./manganin-ssh
Deploy steps
- Zig build with ReleaseSafe
- go build and move to bin/
- Copy bin/ and assets/
- Make MANGANIN_ROOT dir, and admin/ and issues/ inside that
- dd if=/dev/urandom of=$MANGANIN_AUTH_KEYFILE count=32 bs=1
- Make vouchlog and add a line like
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAPUBKEY,root,vouch,null - Run the http and ssh modules