No description
| assets | ||
| client | ||
| server | ||
| shared | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENCE | ||
| Makefile.toml | ||
| README.md | ||
Git Social
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
8080.
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 )
- ...
- display standard git information:
- 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
its feet.
git instawebis a good place to look at what should be done in this phase. - The result should be a single static binary with no static files and external dependencies.
- 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 though ...
- 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 streams, 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?