Set up environment variables manually (optional)
1. In apps/web/client
Create a copy of the .env.example file under the apps/web/client directory and name it .env. Fill in the values with your own API keys.
It should look like this:
# ------------- Required Keys -------------
# Supabase - Enables our backend such as database and auth
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY="<Fill in from content after running supabase start>"
SUPABASE_DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres
SUPABASE_SERVICE_ROLE_KEY="<Your Supabase service role key>"
# OpenRouter - Enables AI chat. Other providers are optional below
OPENROUTER_API_KEY="<Your api key from https://openrouter.ai/settings/keys>"
# Codesandbox - Used to host user apps. Other providers may be supported in the future. May be optional in the future.
CSB_API_KEY="<Your api key from https://codesandbox.io/t/api>"2. In packages/db
Create a copy of the .env.example file under the packages/db directory and name it .env. Fill in the values with the values from the output of the bun backend:start command.
SUPABASE_DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres
SUPABASE_URL=http://localhost:54321
SUPABASE_SERVICE_ROLE_KEY=<Your service role key from Supabase>Editor UI Notes
- The frame theme control now uses a dropdown instead of three icon tabs.
- The AI chat panel on the right can be resized directly and collapsed from its header.
- The design sidebar uses icon-only navigation with hover tooltips to keep the canvas area tighter.
- The design sidebar tabs can be opened from the keyboard with
Alt+1throughAlt+5. - The Layers tree uses frame-aware node ids so it can render reliably when multiple frames contain overlapping DOM ids.
- Shared red, yellow, amber, and green accent palettes now resolve to the blue editor palette.