Please sign in to access this page

Git Server

Git Server

11 devlogs
15h 9m
Created by Michael M

Self-hostable lightweight Git forge built with CGI scripts and lighttpd.

Timeline

Added a new modal view for the file browser

Update attachment

Ship 1

0 payouts of shell 0 shells

Michael M

26 days ago

Michael M Covers 10 devlogs and 13h 4m

Added a few easter eggs and setup a demo deployment with HackClub nest: https://michael-m.hackclub.app/git

The demo is read-only, so you cannot push commits. If you want to see that functionality, this devlog has a video that shows most of the features. (Or you could setup a local instance by following the instructions in the README file)

Created an API endpoint for serving raw files, and added the file browser again.

Update attachment

Added some more features to the README display. It now supports loading images from the API, and also has a few new remark plugins.

Update attachment

Designed an API for checking the state of repositories. This is much more efficient than some of my initial solutions because it doesn't need a worktree of the repository. The API also uses CGI, as that is already used on the server for handling git via git http-backend. I also enabled directory listing(just for the API scripts folder), which gives me something like Swagger for very little effort. Users can go to /api to get a list of available endpoints.

Integrated the new API with the frontend. I haven't implemented API endpoints for files or tags yet, so those tabs in the repo viewer are commented out for now. But, this means it is almost production-ready.

Update attachment

Redid the layout of the repository viewing page. It should work on mobile now as well, though the file/tag tabs will be hidden.

Update attachment

Made the Dockerfile into a multi-stage build. It builds the frontend first, and then copies it into the final image.
Added routing (or conditional configuration in lighttpd terms) to the lighttpd configuration. This allows the server to determine if a request should be handled by the frontend or if it should be passed on to the git http-backend CGI script wrapper.

Update attachment

Added a page for viewing a single repository instead of the list as a whole. It has a README viewer, a file browser, and a list of tags.

Update attachment

Added a search bar to the repository list

Update attachment

Converted the list into a table that looks decent, using Mantine.

Update attachment

Added a WIP frontend using Vite/React/Typescript. The single file plugin is included so that the final version will be easier to copy into the docker container.

The UI does not look great at the moment and it does not make API calls yet.

Update attachment