crm
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.
Viewing readonly version of main branch: v24View latest version
A full-featured CRM built on Val Town. Manage contacts, companies, deals, and activities — server-rendered with Hono + JSX, styled with Tailwind, persisted in scoped SQLite.
- Dashboard — pipeline stats, recent deals, activity feed
- Contacts — CRUD, search, linked to companies, detail views
- Companies — domain, industry, size tracking, linked contacts
- Deals Pipeline — kanban board with color-coded stages, table view, one-click stage changes
- Activities — log notes, calls, emails, meetings, tasks linked to contacts/companies/deals
Lead → Qualified → Proposal → Negotiation → Won / Lost
Note · Call · Email · Meeting · Task
- Hono router + JSX server-side rendering
- Tailwind CSS via CDN
- Val Town scoped SQLite (
std/db) — data lives with the val - Form POST + redirect pattern — no client-side JS framework
main.ts Hono router, mounts page sub-apps
db.ts Schema, types, all data access functions
components.tsx Layout, sidebar, shared UI components
pages/
dashboard.tsx Dashboard with stats + recent items
contacts.tsx Contact CRUD + detail views
companies.tsx Company CRUD + detail views
deals.tsx Deal pipeline (kanban + table) + CRUD
activities.tsx Activity log + creation
All interactions use standard HTML forms (POST + redirect). No JSON API — it's a server-rendered app. To add a JSON API, add Hono routes that return c.json().
- CSV import/export for bulk uploads
- Email integration via Val Town email vals
- Webhooks on deal stage changes
- Custom fields per entity
- Auth via environment variables
- Reporting — win rate, deal velocity, pipeline charts