Competition organizer manual Preview
This manual is for someone who prepares TenkaCloud in their own AWS account and runs an event. Its executable instructions cover Lite mode, the path that can currently be offered to organizers. SaaS is kept separate in SaaS operating status.
What this manual helps you do
- Decide whether your use case calls for Lite or SaaS.
- Prepare TenkaCloud with the Lite deployment pipeline.
- Confirm the Application Admin Console and Participant Portal.
- Rehearse problem start, scoring, reset, and stop with a test team.
- Find the input contract and exact error guidance before changing a setting.
Choose Lite or SaaS by use case
| Use case | Mode | Why | Current guidance |
|---|---|---|---|
| One organizing group runs an event for a company, school, or meetup in its own AWS account | Lite | You need one TenkaCloud environment, not a tenant service | Recommended path in this manual |
| A problem author rehearses a complete event in their own AWS account | Lite | The same environment can exercise the organizer and participant screens | Recommended path in this manual |
| A service operator continuously provides separate administrators and tenants to multiple companies or schools | SaaS | You need tenant lifecycle and multi-tenant rollout | No recent end-to-end live verification; not provided as an organizer procedure |
| You operate TenkaCloud itself as a multi-tenant SaaS | SaaS | You need System Admin, pooled and silo tenants, and fleet updates | Code exists, but it is not the current self-service setup path |
Choose Lite when in doubt. Even when a use case belongs to SaaS, do not use the SaaS path for a live event unless your team has verified it in a real environment and can operate incident recovery.
The Lite deployment pipeline
“Deployment pipeline” here means a CloudFormation template that creates one
CodeBuild project. CodeBuild then fetches the source, installs the required
software, runs make deploy, and prints the access URLs in sequence. It does
not use the AWS product named CodePipeline.
The source is
infrastructure/templates/lite-pipeline.yaml.
Deploy from the AWS console (recommended)
- Open Getting started: Lite console launcher.
- Sign in to AWS and enter
TenantAdminEmailin CloudFormation. - Read the IAM acknowledgement and create the stack.
- Open the CodeBuild link in the stack output and press Start build.
- Wait for the build status to become
Succeeded. - Copy the Application Admin Console and Participant Portal URLs from the end of the log.
- Use the invitation sent to
TenantAdminEmailfor the first sign-in.
If the build fails, find the first ERROR in the CodeBuild log. Do not delete
the launcher first. Look up the same text in the
Lite settings message reference.
Deploy from a local checkout
Use this path only when you can operate the repository:
make env-init ENV=development
make deploy ENV=development
make env-init asks for required values and creates
infrastructure/environments/development/.env. Editing .env does not update
a running environment; run make deploy after reviewing the change.
The Lite event flow
- Sign in to the Application Admin Console as the organizer.
- Activate the problem pack you will use.
- Create the event, teams, and problem selection.
- Register a test competitor AWS account.
- Start a problem for the test team and open its endpoint.
- Submit a real
TC{...}value and confirm the score changes. - Reset the problem and confirm a new environment can start.
- Stop the problem and confirm its stack is gone from the competitor account.
- Give participants only the Participant Portal URL, team key, start time, and participant manual.
For screen-level details, see Run an event end to end.
Choose where control data is stored
Control data means events, teams, problem state, endpoints, scores, organizer accounts, and audit records. It is separate from a participant's problem environment.
| Choice | Storage | Use it when |
|---|---|---|
dynamodb (default) |
AWS DynamoDB | You are preparing your first event and want an AWS-native path |
turso |
Turso/libSQL | You deliberately want no DynamoDB tables and can live-verify the path yourself |
The Turso path is covered by unit tests and CDK synth, but it has not been
live-verified as a complete real-Turso, fresh-AWS, and billing flow. Use
dynamodb for the first real event.
Changing the backend later does not migrate data. DynamoDB and Turso do not synchronize, and retained DynamoDB tables can continue to incur cost.
Change settings
A first-time Lite setup asks for three values:
| Setting | Input | Example |
|---|---|---|
TENANT_ADMIN_EMAIL |
Email address for the first organizer sign-in | organizer@example.com |
AWS_REGION |
AWS Region that will contain TenkaCloud | ap-northeast-1 |
CDK_PARAM_DEPLOY_EXTERNAL_ID |
Matching value used when TenkaCloud enters a competitor AWS account; 16–128 ASCII letters, digits, and _ = , . @ : / - |
tc-school-2026-a91f |
The Lite setting reference lists the purpose, format, default, character or numeric limits, example, and invalid input behavior for the remaining settings. The Lite settings message reference lists each emitted message with its cause and operator action.
Scoring and cost warning email
When CDK_PARAM_OPS_ALERT_EMAIL is set, AWS sends a subscription confirmation
email. After confirmation, email is sent for exactly these three conditions:
- The scoring function records at least one error in five minutes.
- The scoring function has no invocation for five consecutive minutes.
- Actual monthly AWS spend exceeds
CDK_PARAM_OPS_MONTHLY_COST_LIMIT_USD.
This does not notify every failure in problem start, stop, or cleanup. When the email setting is absent, these three warnings are not sent.
Organizer MCP
The organizer MCP endpoint belongs to the Always-On control plane. It is not automatically added by the Lite deployment pipeline described on this page. The Application Admin Console remains the normal operating surface for a Lite event.
An operator validating Always-On mode can connect to
{ALWAYS_ON_CONTROL_PLANE_ORIGIN}/mcp/organizer and provide an organizer Auth0
access token as Authorization: Bearer .... Store that token in the client's
secret facility; never paste it into a configuration file, prompt, Issue, or
log.
Before authentication, the client follows the resource_metadata link in the
401 Unauthorized response's WWW-Authenticate header. The current setup
requires an OAuth client registered with Auth0 in advance. TenkaCloud does not
provide a DCR endpoint. Use CIMD only when the configured authorization server
explicitly advertises support.
The only current tool is list_events. It returns events belonging to the
authenticated tenant and cannot create, change, deploy, stop, or delete
anything. It also omits other tenants' events, team keys, flags, and scoring
secrets. The MCP client must support revision 2026-07-28, call
server/discover, and send the per-request protocol headers and _meta
envelope. The MCP host must show the tool name and arguments and obtain the
organizer's approval before every call. Do not use a client that skips that
confirmation.
Before participants arrive
- A test team used the same permissions and Region as participants.
- Every endpoint opened from the expected network.
- A real flag changed the score.
- Reset created a fresh problem environment.
- Stop removed the problem stack from the competitor account.
- The event time, team-key delivery, and support contact are decided.
- AWS administrator credentials,
.env, and database tokens are not shared.
Teardown
Remove Lite first and the launcher CloudFormation stack last:
make destroy-all ENV=development
For a console deployment, run the launcher's CodeBuild project with
ACTION=destroy-all. Deleting the launcher first removes the same automation
path used to clean up Lite.
SaaS operating status
The repository contains make deploy-saas, the SBT control plane, tenant
provisioning code, and the tenkacloud-saas-pipeline that updates existing
tenants. However, there is no recent recorded run that takes a fresh AWS
environment through setup, tenant creation, problem start, scoring, and
teardown.
This manual therefore does not present SaaS commands as an alternative Lite procedure. Use Deploy modes and launch paths only as an architecture reference, then verify the full flow in a dedicated environment before evaluating SaaS.