Twilight Somatic Journal
Lovable AI structures emotional debriefs so dancers process intense rehearsals; AIsa captures a verbal cool-down journal.
AIsa Chat (LLM Router)· frontier reasoning
Section · AIsa
full primer →The kernel.
Post-class reflection gets a frontier-model brain: a server function calls AIsa's LLM router and choreographers read a tailored, on-brand answer they can act on.
Why this primitiveSpeaking reflections aloud while stretching helps dancers emotionally decompress without the friction of writing.
Kernel
an OpenAI-compatible `POST /v1/chat/completions` against https://api.aisa.one/v1 — pick any frontier model (openai/gpt-4o-mini, anthropic/claude-3-5-sonnet, google/gemini-2.5-flash, qwen/qwen2.5-72b, deepseek/deepseek-chat) through one endpoint, one key
Drives the UI as
a prompt box or chat surface that returns markdown the user can read, copy, or act on
Required key.
AISA_API_KEY
Single key for AIsa chat completions, image generation, video generation and live skills. Free tier covers a hackathon weekend.
open ↗Add this in your Lovable project under Settings → Secrets before pasting the prompt below.
Appendix · Mega-prompt
The build prompt.
budget · 1 message
Paste into a fresh Lovable project. Make sure the key above is set first. read the build strategy →
Build "Twilight Somatic Journal" as a ONE-SHOT Lovable build. The participant has only
5 credits — this single message must produce a working demo with no follow-ups.
Single-page TanStack Start app. Cut scope ruthlessly.
CONCEPT
Lovable AI structures emotional debriefs so dancers process intense rehearsals; AIsa captures a verbal cool-down journal.
Discipline: Dance & Choreography (post-class reflection).
Recipe: AIsa Chat (LLM Router) (frontier reasoning) as the single creative surface.
Why this kernel: Speaking reflections aloud while stretching helps dancers emotionally decompress without the friction of writing.
LOVABLE BUDGET (HARD CAP: ONE-SHOT, ~5 CREDITS TOTAL):
The participant has FIVE Lovable credits for the whole build. This prompt MUST
ship a working demo on the FIRST message with zero follow-ups. Engineer for that.
- ONE TanStack Start app, ONE route (`src/routes/index.tsx`). No extra pages, no auth, no nav.
- ONE TanStack server function in `src/lib/aisa.functions.ts` that proxies the AIsa call.
- ONE client surface (a textarea + button, or chat box, or prompt-to-canvas) wired to it.
- NO database, NO Lovable Cloud, NO auth, NO file uploads, NO extra integrations.
- NO tests, NO docs pages, NO settings screens, NO theming toggles.
- Libraries: template defaults + `zod`. Nothing else.
- Keep the diff small enough to land in one build pass. If a feature is not on
screen in the user flow below, do not build it. Cut scope before adding scope.
STACK
- TanStack Start app, the index route only.
- AIsa is the only AI dependency. All API calls live inside a `createServerFn`
handler so `AISA_API_KEY` stays on the server.
- Client surface fits the kernel: a prompt box that returns the result.
- Tailwind + shadcn. Editorial look: gold accent on a dark or warm-cream
background, generous type, one strong headline, one primary action.
- Footer renders: "Built during the AIsa Creative Hackathon organised by StreetKode Fam during Indian Krump Festival 14".
SERVER FUNCTION (src/lib/aisa.functions.ts) — AIsa chat completions:
```ts
import { createServerFn } from "@tanstack/react-start";
import { z } from "zod";
/** Built during the AIsa Creative Hackathon organised by StreetKode Fam during Indian Krump Festival 14 */
export const ask = createServerFn({ method: "POST" })
.inputValidator((d) => z.object({ topic: z.string().min(1).max(2000) }).parse(d))
.handler(async ({ data }) => {
const r = await fetch("https://api.aisa.one/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.AISA_API_KEY!}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-4o-mini",
messages: [
{ role: "system", content: `You are an expert helper for post-class reflection. ` +
`Reply in friendly markdown, under 180 words, with concrete next steps.` },
{ role: "user", content: data.topic },
],
temperature: 0.7,
}),
});
if (r.status === 402) throw new Error("AIsa balance exhausted — top up at console.aisa.one.");
if (r.status === 429) throw new Error("AIsa rate limited — try again in a moment.");
if (!r.ok) throw new Error(`AIsa chat failed: ${r.status}`);
const j = await r.json();
return { reply: j.choices[0].message.content as string };
});
```
CLIENT (in `src/routes/index.tsx`):
```tsx
import { useServerFn } from "@tanstack/react-start";
import { useState } from "react";
import ReactMarkdown from "react-markdown";
import { ask } from "@/lib/aisa.functions";
const run = useServerFn(ask);
const [topic, setTopic] = useState("");
const [reply, setReply] = useState<string | null>(null);
const [busy, setBusy] = useState(false);
const onAsk = async () => {
setBusy(true); setReply(null);
try { const { reply } = await run({ data: { topic } }); setReply(reply); }
finally { setBusy(false); }
};
```
Use BARE model ids (e.g. `gpt-4o-mini`, `claude-3-5-sonnet`, `gemini-2.5-flash`,
`qwen2.5-72b`) — NO `openai/`, `anthropic/`, or `google/` prefix. Browse the live
list at https://aisa.one/models.
USER FLOW (the entire app — nothing else exists)
1. Land on the page; the headline previews what the demo does for post-class reflection.
2. The primary action (a prompt box or chat surface that returns markdown the user can read, copy, or act on) is one tap away; the rest of the layout supports it.
3. AIsa runs the kernel server-side, the result lands on screen, the user can retry or copy.
KEY — only ONE secret is required:
1. `AISA_API_KEY`. Sign up at https://console.aisa.one, copy the key into
Project Settings -> Secrets. Read it only on the server via
`process.env.AISA_API_KEY`. Never prefix with `VITE_`, never expose
to the client. A single key unlocks chat, image, video and skills.
CREDIT (must appear in UI footer AND as JSDoc on the server function):
Built during the AIsa Creative Hackathon organised by StreetKode Fam during Indian Krump Festival 14
Market sizing.
TAM
$5B
global mental health and wellness
SAM
$300M
performer mental health initiatives
SOM
$12M
intensive dance training programs
Indicative figures for hackathon pitches — refine with your own research before raising.
Adjacent entries.
ballet pedagogy
Barre Whisperer
Lovable AI generates personalized posture correction so students improve; AIsa writes it.
contemporary somatic pacingFloorwork Breath Guide
Lovable AI designs a breathing rhythm so dancers execute floorwork safely; AIsa narrates it.
rhythmic ensemble countingTap Cadence Caller
Lovable AI creates complex syncopated counting so tap ensembles synchronize; AIsa voices it.
street dance performanceCypher Hype Announcer
Lovable AI writes an energetic dancer introduction so performers feel hyped; AIsa shouts it.