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
- Avatar
- State
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.
URL | Author | Vanilla/Modified/...? | Note | Has an onion site? |
---|---|---|---|---|
https://lab.vern.cc | ~vern team | Vanilla. | Has alternate subdomains. Sometimes down. | Yes |
https://laboratory.vitali64.duckdns.org | Ferass | Patched. | Used as a testing ground. | Yes |
Screenshots
These screenshots may be outdated.
Main page
Browsing Group repositories
Browsing a repository