A Simple GitLab frontend.
How does it work?
Laboratory uses GitLab's REST API to fetch data about users/groups and
repositories (those so-called 'projects').
Then it parses that data and shows it in a JS-free lightweight webpage
inspired by Cgit and SourceHut.
Dependencies
pycmarkgfm
requests
flask
and all its dependencies
Features
Basic
- List projects for any instance
- List group projects
- List group subgroups
Repositories
- Issues (no comments though)
- Wikis
- Tree
- Show a commit
- Log
- Partial README rendering
- Refs
- Description
- Idle
- Avatar
Groups
- Subgroups
- Repositories
- Avatar
Users
Unfourtunately, accessing more data about users requires authentication,
so don't expect Laboratory to fetch more than that unless GitLab changes
that.
TODO
- Implement Merge Requests (currently all API calls to MRs must be
authenticated)
- Implement Logging in (possibly just a matter of getting the token key and
using it for all requests, plus some other features like creating repos)
- Group wikis
- Proper support for project wikis that aren't really repositories
- And more
Known Issues
- When searching for a repository in GitLab.com, the API returns an internal
server error. This is GitLab.com's problem, not ours.
- Laboratory is very sensitive about URLs
- Laboratory currently cannot render RST-formatted README files
- Laboratory freaks out when a blob is not a "normal" file (e.g. an image)
Instances
For an instance to be listed here, it needs to meet the following
requirements:
- Instances MUST have been up for at least a month before it can be added
to this list.
- Instances MUST have been updated in the last month. An instance that hasn't
been updated in the last month is considered unmaintained and is removed
from the list.
- Instances MUST be served via domain name.
- Instances MUST be served via HTTPS (or/and onion).
- Instances using any man-in-the-middle service MUST be marked as such
(e.g. Cloudflare, DDoS-Guard...).
- Instances using any type of anti-bot protection MUST be marked as such.
- Instances MUST NOT use any type of analytics.
- Instances running a modified source code MUST respect the AGPL by publishing
their source code and stating their changes before they are added to the
list and MUST contain a link to both the modified and original source code
of Laboratory in the footer.
- Instances MUST NOT serve ads NOR promote products.
- Instances MUST NOT restrict or disallow the access / usage to any
natural person
(e.g. a country's IP range MUST NOT be blocked, access by a natural
person MUST NOT be disallowed for arbirary reason) - this rule doesn't
apply to juridical persons.
Note: If you see any instance in this list not following the rules,
please let us know.
Screenshots
These screenshots may be outdated.
Main page
Browsing Group repositories
Browsing a repository