Town.cursorrules12 matches
45- Ask clarifying questions when requirements are ambiguous
6- Provide complete, functional solutions rather than skeleton implementations
7- Test your logic against edge cases before presenting the final solution
8- Ensure all code follows Val Town's specific platform requirements
17- **Never bake in secrets into the code** - always use environment variables
18- Include comments explaining complex logic (avoid commenting obvious operations)
19- Follow modern ES6+ conventions and functional programming practices if possible
2021## Types of triggers
2829```ts
30export default async function (req: Request) {
31return new Response("Hello World");
32}
4243```ts
44export default async function () {
45// Scheduled task code
46}
5657```ts
58export default async function (email: Email) {
59// Process email
60}
66## Val Town Standard Libraries
6768Val Town provides several hosted services and utility functions.
6970### Blob Storage
120```
121122## Val Town Utility Functions
123124Val Town provides several utility functions to help with common project tasks.
125126### Importing Utilities
200โ โโโ database/
201โ โ โโโ migrations.ts # Schema definitions
202โ โ โโโ queries.ts # DB query functions
203โ โ โโโ README.md
204โ โโโ routes/ # Route modules
219โโโ shared/
220โโโ README.md
221โโโ utils.ts # Shared types and functions
222```
223226- Hono is the recommended API framework
227- Main entry point should be `backend/index.ts`
228- **Static asset serving:** Use the utility functions to read and serve project files:
229```ts
230import { readFile, serveFile } from "https://esm.town/v/std/utils@85-main/index.ts";
260- Run migrations on startup or comment out for performance
261- Change table names when modifying schemas rather than altering
262- Export clear query functions with proper TypeScript typing
263264## Common Gotchas and Solutions
TownChatRouteSingleColumn.tsx3 matches
1819// alt single-column version of /chat route
20export function ChatRouteSingleColumn () {
21const { projectId, branchId } = useParams() as {
22projectId: string;
55}
5657function Conversation ({
58project,
59files,
194}
195196function shouldRefetch (message) {
197for (let i = 0; i < message?.parts?.length; i++) {
198let part = message.parts[i];
TowncalculateCost.tsx1 match
5const CACHE_WRITE_RATE = 3.75; // $3.75 per M cache-write tokens
67export function calculateCost({
8input_tokens,
9output_tokens,
TownBranchSelect.tsx1 match
7const NEW_BRANCH_VAL = "__NEW_BRANCH__";
89export function BranchSelect() {
10const { projectId, branchId } = useParams() as {
11projectId: string;
5* Returns null if authentication is successful, or a Response if it fails
6*/
7export async function basicAuthMiddleware(req: Request): Promise<Response | null> {
8const realm = "Usage Dashboard";
9const unauthorizedResponse = new Response("Unauthorized", {
17});
1819export function App() {
20const [audio, setAudio] = useLocalStorage("AUDIO", false);
21const user = useUser();
thirdTimerREADME.md2 matches
40โ โโโ index.tsx # React app entry point
41โ โโโ style.css # Styling
42โ โโโ utils/ # Utility functions
43โ โโโ timer-actions.ts # Timer actions
44โโโ shared/
45โโโ types.ts # Shared TypeScript types
46โโโ utils.tsx # Shared utility functions
47```
48
thirdTimer.cursorrules12 matches
45- Ask clarifying questions when requirements are ambiguous
6- Provide complete, functional solutions rather than skeleton implementations
7- Test your logic against edge cases before presenting the final solution
8- Ensure all code follows Val Town's specific platform requirements
17- **Never bake in secrets into the code** - always use environment variables
18- Include comments explaining complex logic (avoid commenting obvious operations)
19- Follow modern ES6+ conventions and functional programming practices if possible
2021## Types of triggers
2829```ts
30export default async function (req: Request) {
31return new Response("Hello World");
32}
4243```ts
44export default async function () {
45// Scheduled task code
46}
5657```ts
58export default async function (email: Email) {
59// Process email
60}
66## Val Town Standard Libraries
6768Val Town provides several hosted services and utility functions.
6970### Blob Storage
120```
121122## Val Town Utility Functions
123124Val Town provides several utility functions to help with common project tasks.
125126### Importing Utilities
200โ โโโ database/
201โ โ โโโ migrations.ts # Schema definitions
202โ โ โโโ queries.ts # DB query functions
203โ โ โโโ README.md
204โ โโโ routes/ # Route modules
219โโโ shared/
220โโโ README.md
221โโโ utils.ts # Shared types and functions
222```
223226- Hono is the recommended API framework
227- Main entry point should be `backend/index.ts`
228- **Static asset serving:** Use the utility functions to read and serve project files:
229```ts
230import { readFile, serveFile } from "https://esm.town/v/std/utils@85-main/index.ts";
260- Run migrations on startup or comment out for performance
261- Change table names when modifying schemas rather than altering
262- Export clear query functions with proper TypeScript typing
263264## Common Gotchas and Solutions
16}
1718export default function VoiceRecorder({ onVoiceNoteCreated }: VoiceRecorderProps) {
19const [recordingState, setRecordingState] = useState<RecordingState>({
20isRecording: false,
voicemessagesVoicePlayer.tsx1 match
7}
89export default function VoicePlayer({ voiceNoteId }: VoicePlayerProps) {
10const [voiceNote, setVoiceNote] = useState<VoiceNote | null>(null);
11const [loading, setLoading] = useState(true);