GitGud, GitHub clone entirely written in Elixir

Thank you @tme_317. Really appreciate that people take a look into this :grin:

I started the project for learning purpose only:

  • possibility to implement almost everything with Elixir/Erlang,
  • multiple network protocols involved,
  • Git transfer protocol being renown for it complexity (I knew it would be a lot of binary pattern-match fun),
  • lot’s of C NIFs in order to use libgit2 in Elixir/Erlang,
  • modular design

It make me happy that I got so many feedback for this. I published it mainly for people interested in the technical aspect.

As I currently have lot of things going on (2nd baby arriving in a few weeks, house construction and lot’s of work to cover the costs for everything), I’m not sure if the project will be a usable product anytime soon.

Still, I want to provide a very basic user-interface for basic actions such as registration, authentication, repository management and tree browser. Also a more detailed documentation for novice developers to be able to experiment with the project without to much hassle (see #15).

I was looking through it and was curious why you decided to ditch the Vue SPA and rewrite the frontend with EEX rendered React? I’m guessing you concluded the SPA added unnecessary complexity and was slower to develop? Were there any other considerations?

Indeed, I started with the idea of a having a Vue SPA. I’m not really a front-end guy and wanted to give Vue a try. I later decided to go the EEX/HTML path because I was not feeling really well with writting that much Javascript :sweat_smile:. In the end, I will try to render most of the interface using server-side rendered HTML and React/Relay for complex components (branch/tag <select> for example).

I am going the opposite direction on my project rewriting from Vue+EEX → React SPA right now but still don’t have a good feeling for the tradeoffs regarding development speed yet.

A while ago, I wrote a small SPA using React/Relay + GraphQL. I was pretty amazed how easy it was to implement once the backend was ready (Absinthe). But still, I’m not a Javascript person and for bigger projects, I prefer to stick to render plain boring HTML from the server…

3 Likes