# tinqs-git

**Tinqs' self-hosted Git+LFS hosting for game studios** — a fork of [Gitea](https://github.com/go-gitea/gitea) v1.26.1.

`git.tinqs.com` · Go · SQLite · S3 LFS · OAuth2 SSO with `platform.tinqs.com`

---

## Quick start

```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

# Run (creates gitea.db automatically)
./tinqs-git web --port 4141
# Open http://localhost:4141
```

## Dev

```bash
make watch-backend      # Go hot reload
make watch-frontend     # Vite HMR
make watch              # both
```

## Test

```bash
make test               # everything
make test-backend       # Go unit tests
make test-sqlite        # SQLite integration tests
make lint               # all linters
```

## Build tags

| Tag | Purpose |
|-----|---------|
| `bindata` | Embed frontend assets into binary |
| `sqlite` | Compile SQLite via CGo (required) |
| `sqlite_unlock_notify` | SQLite perf optimization |

## Repo structure

```
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
```

## Branches

- `main` — tracks upstream releases (quarterly rebase)
- `tinqs/main` — our fork with Tinqs customizations

## License

MIT — same as upstream Gitea.
