One minimised file with everything an AI tool needs: how to work, the hard rules, the full app contract and the design system. Upload it to any LLM, then describe your app.
ATRIUM-AI-BUILD.mdMarkdown
Upload the file to ChatGPT, Claude, Cursor or any AI tool (or paste its contents).
Describe the app you want in plain English.
Let the AI ask you for the API key when it needs one.
Textareas take several lines of free text: a note to a tenant, a description of a repair. They look and behave like a text input, but are taller and can be resized up and down.
Specifications
Anatomy
The tenant sees this in their reminder email.
1) Label
font-size: var(--at-text-sm) /* 14px */
font-weight: var(--at-weight-bold)
2) Hint (optional)
font-size: var(--at-text-sm)
color: var(--at-text-subtle)
3) Field
min-height: 5rem /* 80px */
resize: vertical
padding: var(--at-space-3) /* 8px */
border: 1px solid var(--at-border)
border-radius: var(--at-radius-1) /* 6px */
Anatomy
The tenant sees this in their reminder email.
1) Label
font-size: var(--at-text-sm) /* 14px */
font-weight: var(--at-weight-bold)
2) Hint (optional)
font-size: var(--at-text-sm)
color: var(--at-text-subtle)
3) Field
min-height: 5rem /* 80px */
resize: vertical
padding: var(--at-space-3) /* 8px */
border: 1px solid var(--at-border)
border-radius: var(--at-radius-1) /* 6px */
Size and spacing
Field
min-height: 5rem /* 80px */
width: 100% of its container
set rows="4" or more for longer text
Type
font-size: var(--at-text-md) /* 16px */
stops phones zooming in on focus
Textarea
Set rows to roughly how much text you expect, so the box hints at the answer length.
Example
States
Default
border: 1px solid var(--at-border)
Hover
border-color: var(--at-text-subtle)
Focus
outline: 3px solid var(--at-border-focus)
outline-offset: 2px
Error
border: 2px solid var(--at-border-danger)
plus an .at-error message
Disabled
opacity: 0.5
cursor: not-allowed
Example
States
Default
border: 1px solid var(--at-border)
Hover
border-color: var(--at-text-subtle)
Focus
outline: 3px solid var(--at-border-focus)
outline-offset: 2px
Error
border: 2px solid var(--at-border-danger)
plus an .at-error message
Disabled
opacity: 0.5
cursor: not-allowed
Usage
When to use
Free text that may run to more than one line.
When not to use
A name, reference or amount: use a text input.
A fixed set of answers: use radios or a select.
Content
If there is a length limit, say so in the hint: "Up to 500 characters".
Do not use placeholder text as the label.
Do and don't
Up to 500 characters.
DoA visible label, and the limit in the hint.Don'tOne row high, with a placeholder instead of a label.