The goal of this project is to become a federated self-hosted git repository
management tool :)
#Set up local development environment
It should work out-of-the box (after installing cargo make), so:
$ cargo install cargo-make
$ cargo make watch
Look at Makefile.toml for more commands and what all of them do. In short,
watch builds the client files, compiles the server and starts it on port
#Phase one goals
- Repository view with rest api and wasm frontend.
- display standard git information:
- commits (git log)
- commit info (git show )
- show blob (git show :path)
- tree (git ls-tree )
- No login, no sessions, no state on the frontend. Just fetch data and display
it nicely, no details, no fancy pancy ... the point is to get the project on
git instaweb is a good place to look at what should be done in
- The result should be a single static binary with no static files and
- Add basic configuration for the server (ENV, config file and command-line).
#Phase two goals
- The goal to keep a single binary still stands, will be hard to keep it
- Repository hosting with users and permissions. Gitolite is great for this,
maybe steal the permission file format and key management ... See if and
what could be done for ssh access. If nothing, then use https only for start
and think about ssh later.
- Start implementing the social features with activity pub / activity
client to server only in this phase.
- Use bastion for it's actor model
implementation, can be pretty useful for the social features and/or
federation later on.
- Federation - server to server activity pub implementation.
#Phase three goals
- CI / CD with firecracker / cloud hypervisor.
- Issues and project management stuff.
- Review tools?