~vladan/git-social

A git in the fediverse
Fix commit link from blame
Get first commit and author
Use struct_urls!() for all repo pages

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~vladan/git-social
read/write
git@git.sr.ht:~vladan/git-social

You can also use your local clone with git send-email.

#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

  1. 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 )
      • ...
  2. 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 instaweb is a good place to look at what should be done in this phase.
  3. The result should be a single static binary with no static files and external dependencies.
  4. Add basic configuration for the server (ENV, config file and command-line).

#Phase two goals

  1. The goal to keep a single binary still stands, will be hard to keep it though ...
  2. 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.
  3. Start implementing the social features with activity pub / activity streams, client to server only in this phase.
  4. Use bastion for it's actor model implementation, can be pretty useful for the social features and/or federation later on.
  5. Federation - server to server activity pub implementation.

#Phase three goals

  1. CI / CD with firecracker / cloud hypervisor.
  2. Issues and project management stuff.
  3. Review tools?