chore: agent infra — SOUL, MEMORY, AGENTS, CI, EPIC, README

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-20 05:30:16 +01:00
parent afdbd9b7c5
commit f96fdbdf51
8 changed files with 400 additions and 192 deletions
+31
View File
@@ -0,0 +1,31 @@
# AGENTS — tinqs-git
## This Agent
**tinqs-git** — Go codebase, Cursor IDE, `tinqs-ltd/tinqs-git`. Identity: `.cursor/SOUL.md`. Memory: `.cursor/MEMORY.md`. Domain: self-hosted Git+LFS hosting fork of Gitea v1.26.1.
## Sibling Agents
| Agent | Repo | Coordination |
|-------|------|-------------|
| **CIO (Singularity)** | `tinqs-ltd/docs` | Hub docs, cross-repo orchestration, epic tracking. Plan: `docs/.cursor/plans/tinqs-git-fork.plan.md`. |
| **Platform** | `tinqs-ltd/tinqs-tools` | Platform SSO integration target. OAuth2 client. |
| **Devops** | `tinqs-ltd/devops` | Lightsail, DNS, tinqs-proxy, deploy. |
| **Bot** | `tinqs-ltd/bot` | tinqs-proxy, Team Tool, inference proxy. |
## Delegation
| Task | Action |
|------|--------|
| Epic updates, plan changes | Update `docs/.cursor/plans/tinqs-git-fork.plan.md` |
| Deploy, DNS, infra | Coordinate with devops agent |
| Platform OAuth2 wiring | Coordinate with platform agent |
| Cross-repo decisions | Open issue on docs, flag for CIO |
| Build failures, CI issues | Fix here, notify in MEMORY.md |
## CI
- `.gitea/workflows/build.yml` — builds `tinqs-git` binary on push to `tinqs/main`
- Runner: `lightsail-v2-host` (ID 4)
- Artifact: single `tinqs-git` Linux amd64 binary
- After push: verify CI passes. Skill in docs: `.cursor/skills/ci-pipeline-discipline/SKILL.md`.
+20
View File
@@ -0,0 +1,20 @@
# MEMORY — tinqs-git
Prune past ~30 lines. Old entries archived in git history.
## Facts
- Fork of Gitea v1.26.1 (MIT license). Go module: `code.gitea.io/gitea`.
- Binary name: `tinqs-git`. Product name: `tinqs-git`.
- Domain: `git.tinqs.com` (dev) → eventually replaces `git.arikigame.com` on cutover.
- DB: SQLite (`gitea.db`), compiled into binary via CGo `sqlite` tag.
- LFS: S3 backend (`tinqs-gitea-lfs` bucket), `SERVE_DIRECT = true`.
- Build: `TAGS="bindata sqlite sqlite_unlock_notify" make build` → single binary.
- CI: Gitea Actions on `lightsail-v2-host` runner.
- Upstream sync: quarterly rebase onto upstream main + cherry-pick CVEs.
- Live instance: AWS Lightsail `gitea-tinqs` (46.51.144.31), Ubuntu 24.04.
- Platform integration: OAuth2 SSO between `git.tinqs.com``platform.tinqs.com`.
## Recent
- **2026-05-20 — Repo created, agent infrastructure set up.** Forked Gitea v1.26.1 into `tinqs-ltd/tinqs-git`. Branch `tinqs/main` for our customizations. Full `.cursor/` agent infrastructure (SOUL, MEMORY, AGENTS, rules), CI pipeline (`.gitea/workflows/build.yml`), EPIC.md, README.md. Epic in docs: `tinqs-ltd/docs/.cursor/plans/tinqs-git-fork.plan.md`.
+109
View File
@@ -0,0 +1,109 @@
# SOUL — tinqs-git
**Cold start.** Read this, then `MEMORY.md`, then `AGENTS.md`.
You are the **tinqs-git** agent, working inside Cursor IDE on `tinqs-ltd/tinqs-git` — a fork of Gitea v1.26.1, customized for Tinqs game-dev workflows.
## Identity
- **Product:** `tinqs-git` — self-hosted Git+LFS hosting for game studios, served at `git.tinqs.com`
- **Upstream:** Gitea v1.26.1 (Go 1.26.2+, MIT license)
- **Repo:** `tinqs-ltd/tinqs-git` on Git Studio (`git.arikigame.com`)
- **Docs:** Hub docs live at `tinqs-ltd/docs` — read `docs/.cursor/plans/tinqs-git-fork.plan.md` for the epic
- **DB:** SQLite (compiled into binary via CGo `sqlite` tag)
- **LFS:** S3 backend (`tinqs-gitea-lfs` bucket)
## Build
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build # full build (backend + frontend)
TAGS="bindata sqlite sqlite_unlock_notify" make backend # Go only (45s)
TAGS="bindata sqlite sqlite_unlock_notify" make frontend # JS/CSS only (90s)
./tinqs-git web --port 4141 # run locally
```
## Dev
```bash
make watch-backend # Go hot reload via air
make watch-frontend # Vite dev server with HMR
make watch # both
```
## Test
```bash
make test # everything
make test-backend # Go unit tests (sqlite)
make test-sqlite # SQLite integration tests
make test-e2e # Playwright end-to-end (needs browsers)
make lint # all linters (go, js, css, spelling)
make fmt # format Go + templates
```
## Repo structure
```
tinqs-git/ ← Go module: code.gitea.io/gitea
├── main.go ← entry point
├── Makefile ← build system
├── cmd/ ← CLI commands (web, migrate, admin, cert)
├── routers/ ← HTTP routes (web/ + api/)
├── modules/ ← business logic (auth, lfs, git, setting, webhook, ...)
├── models/ ← DB models + migrations (NEVER modify — owned by upstream)
├── services/ ← service layer
├── templates/ ← Go HTML templates (server-rendered)
├── web_src/ ← frontend source (TypeScript, Less, Vue)
├── public/ ← static assets (logo, favicon, compiled CSS/JS)
├── options/ ← locale files, defaults
├── custom/ ← NOT in source — runtime overrides (mounted via WORK_PATH)
├── tests/ ← integration tests
├── .gitea/workflows/ ← CI pipeline (Gitea Actions)
└── .cursor/ ← agent infrastructure (this directory)
```
## Branches
```
main ← tracks upstream go-gitea/gitea (quarterly rebase)
tinqs/main ← our fork — all Tinqs customizations
```
## What we modify vs leave alone
| Layer | Touch | Don't touch |
|--------|-------|-------------|
| `modules/setting/` | Default APP_NAME → "tinqs-git" | — |
| `modules/lfs/` | Auto-LFS tracking, storage dashboard | Core LFS protocol |
| `modules/auth/` | Platform OAuth2 config | Core auth flow |
| `templates/` | "Gitea" → "tinqs-git", landing page | Template structure |
| `web_src/less/` | Tinqs theme (amber/gray/black) | Core Fomantic-UI |
| `public/assets/img/` | Logo, favicon | — |
| `options/locale/` | Locale strings | Translation framework |
| `Makefile` | Binary name, LDFLAGS | Build targets |
| `models/` | **NEVER** — DB schema is upstream | All models |
| `services/` | Only new features (GDD library) | Existing services |
## Values
- **Respect upstream.** Don't rename the Go module path. Don't touch models. Keep rebase-able.
- **Ship the binary.** The only artifact that matters is a single `tinqs-git` Linux amd64 binary.
- **SQLite only.** DB is compiled in. Zero external dependencies at runtime.
- **Test early.** `make test-sqlite` before every push. `make test-sqlite-migration` before DB-affecting changes.
## Boundaries
- Do NOT modify `models/` — schema migrations are upstream's domain
- Do NOT rename Go module path (`code.gitea.io/gitea`)
- Do NOT change `main.go` entry point signature
- CAN add new files under `modules/`, `routers/`, `templates/`
- CAN add `.gitea/workflows/` CI pipelines
- CAN modify `Makefile`, `public/`, `web_src/`, `options/locale/`
- Commit and push freely on `tinqs/main`. Never push to `main` (upstream tracking).
## Coordination
- Hub: `tinqs-ltd/docs` (docs/CIO agent for cross-repo orchestration)
- Platform: `tinqs-ltd/tinqs-tools` (Platform SSO integration target)
- Deploy: `tinqs-ltd/devops` (Lightsail, tinqs-proxy, DNS)
- Live instance: `ssh -i ~/.ssh/lightsail-default.pem ubuntu@46.51.144.31`
+57
View File
@@ -0,0 +1,57 @@
# Shared Context — tinqs-git
Rules shared across all agents working in this repo.
## Go module identity
The Go module path is `code.gitea.io/gitea`. **Never rename this.** It is the canonical import path for the entire Gitea ecosystem. Renaming it would break every internal import and make upstream rebase impossible.
## Build tags
The canonical build tags for our fork:
```
bindata ← embed frontend assets into binary
sqlite ← compile SQLite via CGo (required)
sqlite_unlock_notify ← SQLite performance optimization
```
Add `gogit` if using the pure-Go Git implementation instead of system `git`. Not needed for Linux builds.
## Branch discipline
- `main` = upstream tracking. Never commit directly. Only `git pull origin main` + `git rebase`.
- `tinqs/main` = our fork. All customizations live here. Rebase onto `main` quarterly.
- Feature branches: `tinqs/phase-N` → merge into `tinqs/main` when done.
## What never changes
1. `models/` — DB schema. Upstream owns this. We ride their migrations.
2. `go.mod` module path — stays `code.gitea.io/gitea`.
3. `main.go` entry point — stays as-is.
4. `modules/setting/` config keys — add new keys, never remove or rename existing ones.
## What we can change
1. `modules/` — add new packages (lfs/, auth/, billing/)
2. `routers/` — add new routes, modify templates
3. `templates/` — branding, landing page
4. `web_src/` — CSS theme, JS components
5. `public/` — logo, favicon, static assets
6. `options/locale/` — translation strings
7. `Makefile` — binary name, LDFLAGS
8. `.gitea/workflows/` — CI pipelines
## Test before push
```bash
make test-sqlite # SQLite integration tests (our DB)
make test-backend # Go unit tests
make lint # all linters
```
## Commit style
- Prefix: `feat:`, `fix:`, `chore:`, `docs:`, `ci:`, `branding:`
- Reference epic phase when relevant: `feat(lfs): auto-track game asset patterns (phase 2)`
- Never commit `gitea.db` or `node_modules/`
+47
View File
@@ -0,0 +1,47 @@
name: Build tinqs-git
on:
push:
branches: [tinqs/main]
pull_request:
branches: [tinqs/main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.26.2'
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm install -g pnpm
- name: Install Go dependencies
run: go mod download
- name: Run backend tests
run: TAGS="bindata sqlite sqlite_unlock_notify" make test-backend
- name: Run SQLite integration tests
run: TAGS="bindata sqlite sqlite_unlock_notify" make test-sqlite
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.26.2'
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm install -g pnpm
- name: Build tinqs-git
run: TAGS="bindata sqlite sqlite_unlock_notify" make build
- name: Rename binary
run: mv gitea tinqs-git
- uses: actions/upload-artifact@v4
with:
name: tinqs-git-linux-amd64
path: ./tinqs-git
+37
View File
@@ -0,0 +1,37 @@
name: Deploy tinqs-git to git.tinqs.com
on:
workflow_run:
workflows: [Build tinqs-git]
types: [completed]
branches: [tinqs/main]
jobs:
deploy:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: tinqs-git-linux-amd64
- name: Deploy to git.tinqs.com
env:
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
run: |
mkdir -p ~/.ssh
echo "$DEPLOY_SSH_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \
tinqs-git ubuntu@$DEPLOY_HOST:/tmp/tinqs-git
ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \
ubuntu@$DEPLOY_HOST "
sudo systemctl stop tinqs-git || true
sudo cp /tmp/tinqs-git /usr/local/bin/tinqs-git
sudo chmod +x /usr/local/bin/tinqs-git
sudo systemctl start tinqs-git
echo 'Deploy complete'
"
+44
View File
@@ -0,0 +1,44 @@
# Epic: tinqs-git — Fork of Gitea v1.26.1
**Date:** 2026-05-20
**Source:** Forge (Ozan)
**Repo:** `tinqs-ltd/tinqs-git` (this repo)
**Product:** `tinqs-git` at `git.tinqs.com`
**Full epic:** `tinqs-ltd/docs/.cursor/plans/tinqs-git-fork.plan.md`
## Why
Tinqs-owned Git hosting with game-dev specific features — LFS-first UX, Platform SSO, GDD library.
## Phases
| Phase | What | Status |
|-------|------|--------|
| 0 | Fork, build, CI | ✅ done |
| 1 | Branding (strings, theme, landing page) | pending |
| 2 | LFS-first UX (auto-tracking, dashboard) | pending |
| 3 | Platform integration (OAuth2, webhooks, GDD library) | pending |
| 4 | Migration & cutover (clone DB, swap DNS) | pending |
| 5 | Productization (billing, marketplace, CI templates) | pending |
## Architecture
- **Language:** Go (backend) + TypeScript/Vue/Less (frontend)
- **DB:** SQLite (compiled into binary via CGo)
- **LFS:** S3 backend (`tinqs-gitea-lfs`)
- **Build:** `TAGS="bindata sqlite sqlite_unlock_notify" make build` → single binary
- **Dev:** `make watch-backend` + `make watch-frontend`
- **Test:** `make test-sqlite`
## Branches
```
main ← upstream go-gitea/gitea (quarterly rebase)
tinqs/main ← our fork — all customizations
```
## Coordination
- Hub: `tinqs-ltd/docs`
- Platform: `tinqs-ltd/tinqs-tools`
- Deploy: `tinqs-ltd/devops`
+54 -191
View File
@@ -1,212 +1,75 @@
# Gitea
# tinqs-git
[![](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main)](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain "Release Nightly")
[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea")
[![](https://goreportcard.com/badge/code.gitea.io/gitea)](https://goreportcard.com/report/code.gitea.io/gitea "Go Report Card")
[![](https://pkg.go.dev/badge/code.gitea.io/gitea?status.svg)](https://pkg.go.dev/code.gitea.io/gitea "GoDoc")
[![](https://img.shields.io/github/release/go-gitea/gitea.svg)](https://github.com/go-gitea/gitea/releases/latest "GitHub release")
[![](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea "Help Contribute to Open Source")
[![](https://opencollective.com/gitea/tiers/backers/badge.svg?label=backers&color=brightgreen)](https://opencollective.com/gitea "Become a backer/sponsor of gitea")
[![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT")
[![](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com "Crowdin")
**Tinqs' self-hosted Git+LFS hosting for game studios** — a fork of [Gitea](https://github.com/go-gitea/gitea) v1.26.1.
[繁體中文](./README.zh-tw.md) | [简体中文](./README.zh-cn.md)
`git.tinqs.com` · Go · SQLite · S3 LFS · OAuth2 SSO with `platform.tinqs.com`
## Purpose
---
The goal of this project is to make the easiest, fastest, and most
painless way of setting up a self-hosted Git service.
## Quick start
As Gitea is written in Go, it works across **all** the platforms and
architectures that are supported by Go, including Linux, macOS, and
Windows on x86, amd64, ARM and PowerPC architectures.
This project has been
[forked](https://blog.gitea.com/welcome-to-gitea/) from
[Gogs](https://gogs.io) since November of 2016, but a lot has changed.
For online demonstrations, you can visit [demo.gitea.com](https://demo.gitea.com).
For accessing free Gitea service (with a limited number of repositories), you can visit [gitea.com](https://gitea.com/user/login).
To quickly deploy your own dedicated Gitea instance on Gitea Cloud, you can start a free trial at [cloud.gitea.com](https://cloud.gitea.com).
## Documentation
You can find comprehensive documentation on our official [documentation website](https://docs.gitea.com/).
It includes installation, administration, usage, development, contributing guides, and more to help you get started and explore all features effectively.
If you have any suggestions or would like to contribute to it, you can visit the [documentation repository](https://gitea.com/gitea/docs)
## Building
From the root of the source tree, run:
TAGS="bindata" make build
or if SQLite support is required:
```bash
# Prerequisites: Go 1.26.2+, Node.js 22+, pnpm
git clone https://git.arikigame.com/tinqs-ltd/tinqs-git.git
cd tinqs-git
git checkout tinqs/main
# Build
TAGS="bindata sqlite sqlite_unlock_notify" make build
The `build` target is split into two sub-targets:
# Run (creates gitea.db automatically)
./tinqs-git web --port 4141
# Open http://localhost:4141
```
- `make backend` which requires [Go Stable](https://go.dev/dl/), the required version is defined in [go.mod](/go.mod).
- `make frontend` which requires [Node.js LTS](https://nodejs.org/en/download/) or greater and [pnpm](https://pnpm.io/installation).
## Dev
Internet connectivity is required to download the go and npm modules. When building from the official source tarballs which include pre-built frontend files, the `frontend` target will not be triggered, making it possible to build without Node.js.
```bash
make watch-backend # Go hot reload
make watch-frontend # Vite HMR
make watch # both
```
More info: https://docs.gitea.com/installation/install-from-source
## Test
## Using
```bash
make test # everything
make test-backend # Go unit tests
make test-sqlite # SQLite integration tests
make lint # all linters
```
After building, a binary file named `gitea` will be generated in the root of the source tree by default. To run it, use:
## Build tags
./gitea web
| Tag | Purpose |
|-----|---------|
| `bindata` | Embed frontend assets into binary |
| `sqlite` | Compile SQLite via CGo (required) |
| `sqlite_unlock_notify` | SQLite perf optimization |
> [!NOTE]
> If you're interested in using our APIs, we have experimental support with [documentation](https://docs.gitea.com/api).
## Repo structure
## Contributing
```
tinqs-git/
├── main.go ← entry point
├── Makefile ← build system
├── cmd/ ← CLI (web, migrate, admin, cert)
├── routers/ ← HTTP routes
├── modules/ ← business logic (auth, lfs, git, setting)
├── models/ ← DB models (NEVER modify)
├── services/ ← service layer
├── templates/ ← Go HTML templates
├── web_src/ ← frontend source (TS, Less, Vue)
├── public/ ← static assets
├── .gitea/workflows/ ← CI (Gitea Actions)
└── .cursor/ ← agent infrastructure
```
Expected workflow is: Fork -> Patch -> Push -> Pull Request
## Branches
> [!NOTE]
>
> 1. **YOU MUST READ THE [CONTRIBUTORS GUIDE](CONTRIBUTING.md) BEFORE STARTING TO WORK ON A PULL REQUEST.**
> 2. If you have found a vulnerability in the project, please write privately to **security@gitea.io**. Thanks!
## Translating
[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com)
Translations are done through [Crowdin](https://translate.gitea.com). If you want to translate to a new language, ask one of the managers in the Crowdin project to add a new language there.
You can also just create an issue for adding a language or ask on Discord on the #translation channel. If you need context or find some translation issues, you can leave a comment on the string or ask on Discord. For general translation questions there is a section in the docs. Currently a bit empty, but we hope to fill it as questions pop up.
Get more information from [documentation](https://docs.gitea.com/contributing/localization).
## Official and Third-Party Projects
We provide an official [go-sdk](https://gitea.com/gitea/go-sdk), a CLI tool called [tea](https://gitea.com/gitea/tea) and an [action runner](https://gitea.com/gitea/act_runner) for Gitea Action.
We maintain a list of Gitea-related projects at [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea), where you can discover more third-party projects, including SDKs, plugins, themes, and more.
## Communication
[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea")
If you have questions that are not covered by the [documentation](https://docs.gitea.com/), you can get in contact with us on our [Discord server](https://discord.gg/Gitea) or create a post in the [discourse forum](https://forum.gitea.com/).
## Authors
- [Maintainers](https://github.com/orgs/go-gitea/people)
- [Contributors](https://github.com/go-gitea/gitea/graphs/contributors)
- [Translators](options/locale/TRANSLATORS)
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/gitea#backer)]
<a href="https://opencollective.com/gitea#backers" target="_blank"><img src="https://opencollective.com/gitea/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/gitea#sponsor)]
<a href="https://opencollective.com/gitea/sponsor/0/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/1/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/2/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/3/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/4/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/5/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/6/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/7/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/8/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/9/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/9/avatar.svg"></a>
## FAQ
**How do you pronounce Gitea?**
Gitea is pronounced [/ɡɪ’ti:/](https://youtu.be/EM71-2uDAoY) as in "gi-tea" with a hard g.
**Why is this not hosted on a Gitea instance?**
We're [working on it](https://github.com/go-gitea/gitea/issues/1029).
**Where can I find the security patches?**
In the [release log](https://github.com/go-gitea/gitea/releases) or the [change log](https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md), search for the keyword `SECURITY` to find the security patches.
- `main` — tracks upstream releases (quarterly rebase)
- `tinqs/main` — our fork with Tinqs customizations
## License
This project is licensed under the MIT License.
See the [LICENSE](https://github.com/go-gitea/gitea/blob/main/LICENSE) file
for the full license text.
## Further information
<details>
<summary>Looking for an overview of the interface? Check it out!</summary>
### Login/Register Page
![Login](https://dl.gitea.com/screenshots/login.png)
![Register](https://dl.gitea.com/screenshots/register.png)
### User Dashboard
![Home](https://dl.gitea.com/screenshots/home.png)
![Issues](https://dl.gitea.com/screenshots/issues.png)
![Pull Requests](https://dl.gitea.com/screenshots/pull_requests.png)
![Milestones](https://dl.gitea.com/screenshots/milestones.png)
### User Profile
![Profile](https://dl.gitea.com/screenshots/user_profile.png)
### Explore
![Repos](https://dl.gitea.com/screenshots/explore_repos.png)
![Users](https://dl.gitea.com/screenshots/explore_users.png)
![Orgs](https://dl.gitea.com/screenshots/explore_orgs.png)
### Repository
![Home](https://dl.gitea.com/screenshots/repo_home.png)
![Commits](https://dl.gitea.com/screenshots/repo_commits.png)
![Branches](https://dl.gitea.com/screenshots/repo_branches.png)
![Labels](https://dl.gitea.com/screenshots/repo_labels.png)
![Milestones](https://dl.gitea.com/screenshots/repo_milestones.png)
![Releases](https://dl.gitea.com/screenshots/repo_releases.png)
![Tags](https://dl.gitea.com/screenshots/repo_tags.png)
#### Repository Issue
![List](https://dl.gitea.com/screenshots/repo_issues.png)
![Issue](https://dl.gitea.com/screenshots/repo_issue.png)
#### Repository Pull Requests
![List](https://dl.gitea.com/screenshots/repo_pull_requests.png)
![Pull Request](https://dl.gitea.com/screenshots/repo_pull_request.png)
![File](https://dl.gitea.com/screenshots/repo_pull_request_file.png)
![Commits](https://dl.gitea.com/screenshots/repo_pull_request_commits.png)
#### Repository Actions
![List](https://dl.gitea.com/screenshots/repo_actions.png)
![Details](https://dl.gitea.com/screenshots/repo_actions_run.png)
#### Repository Activity
![Activity](https://dl.gitea.com/screenshots/repo_activity.png)
![Contributors](https://dl.gitea.com/screenshots/repo_contributors.png)
![Code Frequency](https://dl.gitea.com/screenshots/repo_code_frequency.png)
![Recent Commits](https://dl.gitea.com/screenshots/repo_recent_commits.png)
### Organization
![Home](https://dl.gitea.com/screenshots/org_home.png)
</details>
MIT — same as upstream Gitea.