Victoria
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in miliseconds.
A web application for recording, transcribing, and sharing voice notes with expiration controls.
- 🎙️ Record voice notes directly in the browser
- 🤖 AI-powered transcription using OpenAI Whisper
- 🔗 Share voice notes via unique URLs
- ⏰ Set expiration by max listens or date
- 📋 Dashboard to view and manage all your voice notes
- 🗑️ Delete voice notes you no longer need
- 📱 Responsive design with modern UI
- I can record a voice note
- Given I record a voice note, it is transcribed by AI
- Given I have recorded a voice note, I can share that voice note with someone via URL
- I can set an expiration for the voice note by number of max listens (i.e. 1 listen)
- Or, I can set an expiration for the voice note by choosing an expiration date
- I can see which voice notes I have sent
- I can delete voice notes I no longer need
├── backend/
│ ├── database/
│ │ ├── migrations.ts # Database schema
│ │ └── queries.ts # Database operations
│ ├── routes/
│ │ ├── voicenotes.ts # Voice note CRUD operations
│ │ └── static.ts # Static file serving
│ └── index.ts # Main Hono server
├── frontend/
│ ├── components/
│ │ ├── App.tsx # Main app component
│ │ ├── VoiceRecorder.tsx # Recording interface
│ │ ├── VoicePlayer.tsx # Playback interface
│ │ ├── ShareModal.tsx # Sharing configuration
│ │ └── Dashboard.tsx # Voice notes management
│ ├── index.html # Main HTML template
│ ├── index.tsx # Frontend entry point
│ └── style.css # Custom styles
└── shared/
└── types.ts # Shared TypeScript types
- Backend: Hono (TypeScript API framework)
- Database: SQLite for voice note metadata
- Storage: Val Town Blob storage for audio files
- AI: OpenAI Whisper for transcription
- Frontend: React with TypeScript
- Styling: TailwindCSS