# Farga Farga is a lightweight and easily self-hostable Git forge built with Go. It's meant for personal use. Farga is a work in progress. ## Features - Easily self-hostable. Uses Sqlite and stores all repos on-disk. - All features work without Javascript. It ships very little JS to the frontend. - It's small and cool. (Your computer won't overheat because of it) - A useful web view that allows you to browse different branches. - `tree`, `blob` and `raw` modes let you view directories, files and raw files. - It has a Hackatime integration. Show how much time you've spent coding, on the repo page itself! ## Running Farga ### Prerequisites - Go 1.26 or higher. - Git knowledge. ### Setup 1. Copy `example.env` and rename it to `.env`. 2. Modify any ENV vars you need. It is MANDATORY to set CSRF_KEY to a random string at least 32 characters in length. 3. (Optional) Setup Hackatime OAuth: If you want to enable the hackatime integration, go to Hackatime's [OAuth2 Applications](https://hackatime.hackclub.com/oauth/applications) page, create a new application, and put the resulting App ID and Secret to the the `.env`. 4. `go run .` ## TODO: As mentioned before, Farga is a work-in-progress. Here's a list of what's implemented and what's not. Items with a `?` prefix are "possible future features". - [ ] TESTS. - [ ] Auth: - [x] Registration, login, logout. - [x] Auth Middleware. - [x] Hackatime OAuth2. - [ ] Account deletion. - [ ] Repos: - [x] Repo creation. - [ ] Repo log: - [x] Per-branch list - [ ] Commit view - [x] Different branches. - [ ] Issues: - [x] Issue creation. - [ ] Issue deletion. - [ ] Replies and comments. - [x] Reply creation. - [ ] Reply deletion? - [ ] Polling. - [ ] Tags. - [x] Raw, Blob and Tree views. - [ ] SSH: - [x] Private repos. - [ ] Cloning. - [ ] Public repos. - [x] Private repos. - [x] Pubkeys. - [ ] Hackatime: - [ ] "Time spent" badge on repos. - [x] Link Hackatime. - [ ] Frontend: - [ ] Make it responsive. - [x] Error and Message middleware. - [ ] ? CI: - [ ] ? Lua config files. - [ ] ? CI is just running .sh scripts. - [ ] Debug errors in CI. ## Contributing Contributions are welcome and greatly appreciated. Read [DEVELOPMENT.md](DEVELOPMENT.md) for reference. Don't hesitate to contact me if you have any questions or want to talk about the project itself. ## License Farga is free open source software. This project is licensed under the `GNU AGPLv3` license. See the [LICENSE](LICENSE) file for details.