# Tech Stack

This page captures the implementation stack at a glance so readers do not need
to infer it from package manifests and lockfiles.

## Frontend

- Next.js 16 App Router:
  `frontend/src/app/**`,
  `frontend/package.json`
- React 19 + TypeScript:
  `frontend/package.json`
- Tailwind CSS:
  `frontend/src/app/globals.css`,
  `frontend/postcss.config.mjs`
- TanStack Query:
  `frontend/src/components/labs/hook.ts`
- Sentry:
  `frontend/next.config.ts`,
  `frontend/sentry.*.config.ts`
- Stripe JS:
  `frontend/package.json`
- xterm.js browser terminal controller:
  `frontend/src/components/web-console/controller.ts`

## Backend

- Python 3.13 + `uv` workflow:
  `backend/.python-version`,
  `backend/pyproject.toml`
- Django 6 + DRF:
  `backend/pyproject.toml`,
  `backend/labs/urls.py`,
  `backend/labs/api/urls.py`
- TiDB through `django-tidb`:
  `backend/labs/settings.py`
- Celery + Redis + RedBeat:
  `backend/labs/celery.py`,
  `backend/labs/settings.py`
- Google and TiDB Cloud OAuth:
  `backend/labs/settings.py`,
  `backend/labs/tidb_serverless/oauth.py`
- AWS CloudFormation and Alicloud ROS provisioning:
  `backend/labs/lab_manager_v2/tasks/aws_create.py`,
  `backend/labs/lab_manager_v2/tasks/alicloud_create.py`
- Admin UI via Inertia-Django + Django-Vite + Vue 3:
  `backend/labs/admin/**`,
  `backend/labs/admin/frontend/**`

## SSH Proxy

- Go module:
  `ssh-proxy/go.mod`
- WebSocket to SSH bridge:
  `ssh-proxy/cmd/web-console-ssh/main.go`
- Control plane registration:
  `ssh-proxy/internal/controlplane/client.go`

## Deployment And Ops

- Ansible + SOPS(age):
  `deployment/README.md`,
  `deployment/.sops.yaml`,
  `deployment/playbooks/**`
- Docker Compose runtime templates:
  `deployment/roles/labs_service/files/*`
- GitHub Actions CI:
  `.github/workflows/*`

## External Runtime Dependencies

- TiDB on port `4000`
- Redis on port `6379`
- External lab-spec repository at `backend/labs/labs`
- Cloud APIs for AWS, Alicloud, and TiDB Cloud
