Public
Like
1
codesearch
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.
A web application for searching through your Val Town vals using the Val Town API.
- Search through all your vals by name, content, or description
- Filter by val type (HTTP, cron, email, script)
- View val details including code content
- Direct links to edit vals in Val Town
- Real-time search with debouncing
- Responsive design with TailwindCSS
βββ backend/
β βββ index.ts # Main Hono server
β βββ routes/
β βββ api.ts # Val Town API integration
βββ frontend/
β βββ index.html # Main HTML template
β βββ index.tsx # React frontend entry point
β βββ components/
β βββ App.tsx # Main app component
β βββ SearchBar.tsx # Search input component
β βββ ValCard.tsx # Individual val display
β βββ FilterBar.tsx # Type filters
βββ shared/
βββ types.ts # Shared TypeScript types
-
Get your Val Town API token:
- Go to Val Town API Settings
- Create a new API token with the following scopes:
vals:read- Required to read your vals and their contentuser:read- Required to access your user information and vals list
- Copy the token
-
Set the environment variable:
- In your Val Town project, set
VALTOWN_API_TOKENto your API token - The app will automatically detect when the token is available
- In your Val Town project, set
-
Access the app:
- The app will be available at your HTTP endpoint
- If the token isn't set, you'll see instructions on the homepage
The application requires the following Val Town API scopes:
vals:read- Allows reading your vals, their code content, metadata, and search functionalityuser:read- Allows accessing your user profile and listing your vals
These scopes provide read-only access to your vals and are necessary for the search functionality to work properly.
GET /- Serves the main applicationGET /api/vals- Search vals with query parameters:q- Search query (optional)type- Filter by val type (optional)limit- Number of results (default: 50)