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,blobandrawmodes 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#
- Copy
example.envand rename it to.env. - (Optional) Setup Hackatime OAuth: If you want to enable the hackatime integration, go to Hackatime's OAuth2 Applications page, create a new application, and put the resulting App ID and Secret to the the
.env. 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:
- Registration, login, logout.
- Auth Middleware.
- Hackatime OAuth2.
- Account deletion.
- Repos:
- Repo creation.
- Repo log:
- Per-branch list
- Commit view
- Different branches.
- Issues:
- Issue creation.
- Issue deletion.
- Replies and comments.
- Tags.
- Raw, Blob and Tree views.
- SSH:
- Private repos.
- Cloning.
- Public repos.
- Private repos.
- Pubkeys.
- Hackatime:
- "Time spent" badge on repos.
- Link Hackatime.
- Frontend:
- Make it responsive.
- 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 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 file for details.