Public
Like
list_emvee
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a Val Town project configured with Deno. The project contains comprehensive guidelines for developing Val Town applications in the AGENTS.md
file, which serves as the primary documentation for Val Town development patterns and best practices.
- Runtime: Deno (configured via
deno.json
) - Platform: Val Town
- Language: TypeScript/TSX
- Linting: Configured in
deno.json
with relaxed rules (no-explicit-any
excluded)
Since this is a Val Town project, traditional npm/yarn commands don't apply. Val Town projects are typically developed through:
- Linting:
deno lint
(configured to includedeno:/https/esm.town/**/*
) - Type checking: Uses Deno's built-in TypeScript compiler
- Deployment: Handled through Val Town platform
This project follows Val Town's specific development patterns as documented in AGENTS.md
. Key architectural principles include:
- Backend: Use Hono framework for API routes
- Frontend: React with TailwindCSS
- Shared: Common utilities and types
- Database: SQLite through Val Town's standard library
- HTTP triggers:
*.http.tsx
- Cron triggers:
*.cron.tsx
- Email triggers:
*.email.tsx
- Use
https://esm.sh
for npm dependencies - Use
https://esm.town/v/std/*
for Val Town standard libraries - Pin React dependencies to version 18.2.0
- Use Val Town's blob storage for key-value data
- Use SQLite through
https://esm.town/v/stevekrouse/sqlite
- Change table names instead of altering schemas
- Avoid external API keys when possible
- Include
app.onError((err, c) => { throw err; });
in Hono apps for full stack traces - Add
<script src="https://esm.town/v/std/catch"></script>
to HTML for client-side error capture
- Use
serveFile
andreadFile
utilities fromhttps://esm.town/v/std/utils
- Inject initial data into HTML to avoid extra round-trips
- Access via
Deno.env.get('keyname')
- Never bake secrets into code
The project includes Deno extension recommendation in .vscode/extensions.json
for proper TypeScript support and linting in the editor.