This guide covers setting up a Gitea organization for multi-repo project management with Kanban boards and standardized labels.
- Gitea instance running (tested on v1.21+)
- Admin/owner access to the organization
- API token with appropriate permissions
- Navigate to Gitea UI →
+→New Organization - Set organization name (e.g.,
idea) - Configure visibility (public/private)
Option A: Manual (Web UI)
- Navigate to
http://<gitea-url>/<org>/-/labels - Create each label with name, color, and description
Option B: Scripted (Requires Owner Token)
Create an API token with org owner permissions:
- User Settings → Applications → Generate New Token
- Select scope:
write:org - Save token securely
Then run the label creation script:
export GITEA_URL="http://localhost:3300"
export GITEA_TOKEN="your-owner-token-here"
# Use the provided script
./scripts/setup-org-labels.sh ideaSee scripts/setup-org-labels.sh for the complete label set.
Manual Setup (Required - No API Available)
- Navigate to
http://<gitea-url>/<org>/-/projects - Create new project: "Command Center"
- Add columns matching the status labels:
- Backlog → Link to
status/ready - In Progress → Link to
status/in-progress - Review → Link to
status/review - Blocked → Link to
status/blocked - Done → Link to
status/done
- Backlog → Link to
Note: Gitea's API does not expose project board endpoints. Board setup must be done via web UI.
Option A: Manual
- Go to repo Settings → Transfer Ownership
- Select target organization
- Confirm transfer
Option B: Scripted
./scripts/migrate-repos.sh <current-owner> <new-org> <repo-list-file>Example:
echo -e "gigi\ndeploy-site\ndeploy-docker-compose" > repos.txt
./scripts/migrate-repos.sh ideabile idea repos.txt- Creating org-level labels
- Migrating repositories
- Syncing labels across repos
- Creating issues
- Creating PRs
- Creating the organization itself
- Configuring project board columns
- Linking board columns to labels
See complete label set in scripts/setup-org-labels.sh:
- Priority: critical, high, medium, low
- Status: blocked, needs-info, ready, in-progress, review, done
- Type: bug, feature, enhancement, refactor, docs, infra, security
- Scope: backend, frontend, ci-cd, deps
- Size: xs, s, m, l, xl (effort estimation)
After setup, verify:
# Check org labels (replace $ORG_NAME with your org, default: "idea")
curl -H "Authorization: token $GITEA_TOKEN" \
"$GITEA_URL/api/v1/orgs/$ORG_NAME/labels"
# Check repos
curl -H "Authorization: token $GITEA_TOKEN" \
"$GITEA_URL/api/v1/orgs/$ORG_NAME/repos""403 Forbidden" when creating org labels:
- Ensure API token has
write:orgscope - Verify you are an org owner, not just member
Repos not showing in board:
- Check repo visibility matches project visibility
- Manually add repos to project via web UI
Labels not syncing to new repos:
- Org-level labels only apply to new repos
- For existing repos, run
sync-labels.sh