*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](https://git.zx2c4.org/) and [SourceHut](https://sr.ht/). ## 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](https://en.wikipedia.org/wiki/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](https://git.vitali64.duckdns.org/misc/laboratory.vitali64.duckdns.org.git). | Used as a testing ground. | Yes | ## Screenshots These screenshots may be outdated. Main page Browsing Group repositories Browsing a repository