chore: agent infra — SOUL, MEMORY, AGENTS, CI, EPIC, README
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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`.
|
||||
@@ -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
@@ -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`
|
||||
@@ -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/`
|
||||
@@ -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
|
||||
@@ -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'
|
||||
"
|
||||
@@ -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`
|
||||
@@ -1,212 +1,75 @@
|
||||
# Gitea
|
||||
# tinqs-git
|
||||
|
||||
[](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain "Release Nightly")
|
||||
[](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea")
|
||||
[](https://goreportcard.com/report/code.gitea.io/gitea "Go Report Card")
|
||||
[](https://pkg.go.dev/code.gitea.io/gitea "GoDoc")
|
||||
[](https://github.com/go-gitea/gitea/releases/latest "GitHub release")
|
||||
[](https://www.codetriage.com/go-gitea/gitea "Help Contribute to Open Source")
|
||||
[](https://opencollective.com/gitea "Become a backer/sponsor of gitea")
|
||||
[](https://opensource.org/licenses/MIT "License: MIT")
|
||||
[](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
|
||||
|
||||
[](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://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
|
||||
|
||||

|
||||

|
||||
|
||||
### User Dashboard
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### User Profile
|
||||
|
||||

|
||||
|
||||
### Explore
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
### Repository
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Repository Issue
|
||||
|
||||

|
||||

|
||||
|
||||
#### Repository Pull Requests
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Repository Actions
|
||||
|
||||

|
||||

|
||||
|
||||
#### Repository Activity
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Organization
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
MIT — same as upstream Gitea.
|
||||
|
||||
Reference in New Issue
Block a user