• Townie
    AI
  • Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
sunnyatlightswitch

sunnyatlightswitch

send-transcripts

Public
Like
send-transcripts
Home
Code
2
README.md
H
main.tsx
Branches
1
Pull requests
Remixes
History
Environment variables
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.
Sign up now
Code
/
README.md
Code
/
README.md
Search
6/23/2025
Viewing readonly version of main branch: v52
View latest version
README.md

Text Email API with Database Storage

A simple API endpoint that receives text, emails it directly to configured recipients, and saves it to a Supabase database.

Recipients

The API sends emails directly to:

  • sunny@getlightswitch.com
  • monica@getlightswitch.com

Features

  • Send text content via email to multiple recipients
  • Save all transcripts to Supabase database for persistence
  • Automatic timestamping of submissions
  • HTML and plain text email formats
  • Input validation and error handling
  • Email delivery confirmation
  • Database storage with error handling (email delivery continues even if database fails)

Configuration

The email recipients are configured in the code:

const EMAIL_RECIPIENTS = [ "sunny@getlightswitch.com", "monica@getlightswitch.com" ];

API Endpoints

POST /api/text

Send text content via email to all configured recipients.

Request Body:

{ "text": "Your text content here" }

Response:

{ "success": true, "message": "Text emailed successfully to 2 recipients and saved to database", "recipients": ["sunny@getlightswitch.com", "monica@getlightswitch.com"], "timestamp": "2024-01-01T12:00:00.000Z" }

GET /api/text

Get email service status and recipient information.

Response:

{ "message": "Email service is active", "recipients": ["sunny@getlightswitch.com", "monica@getlightswitch.com"], "info": "POST to this endpoint to send text via email" }

Email Format

Each email includes:

  • Subject: "New Text Submission - [timestamp]"
  • HTML version: Formatted with styling and structure
  • Plain text version: Simple text format
  • Timestamp: When the submission was received
  • Content: The submitted text (preserves formatting)

Usage Examples

Send text using curl:

curl -X POST https://your-val-url/api/text \ -H "Content-Type: application/json" \ -d '{"text": "Hello, this is my message!"}'

Check service status:

curl https://your-val-url/api/text

Error Handling

The API returns appropriate HTTP status codes:

  • 200: Success (email sent)
  • 400: Bad request (missing or invalid text)
  • 500: Server error (email delivery failed)

All error responses include an error field with a descriptive message.

Setup Instructions

  1. Update email recipients in the code (replace the example emails)
  2. Set up Supabase database with the required table structure (see Database Storage section)
  3. Configure environment variable SUPABASE_SERVICE_KEY (optional - falls back to hardcoded key)
  4. Test the API with a sample message
  5. Check recipient inboxes to confirm delivery
  6. Verify database entries in Supabase dashboard

Database Storage

All transcripts are automatically saved to a Supabase database with the following information:

  • Content: The submitted text
  • Created At: Timestamp of submission
  • Email Recipients: List of recipients who received the email

The database table structure:

CREATE TABLE transcripts ( id SERIAL PRIMARY KEY, content TEXT NOT NULL, created_at TIMESTAMPTZ NOT NULL, email_recipients TEXT[] NOT NULL );

Database Configuration

The API uses the following Supabase configuration:

  • Project ID: ffilnpatwtlzjrfbmvxk
  • Service Role Key: Configured via environment variable SUPABASE_SERVICE_KEY

Error Handling

If the database save fails, the email delivery will still succeed. The API prioritizes email delivery over database storage to ensure critical notifications are not missed.

Email Delivery

  • Emails are sent using Val Town's built-in email service
  • All configured recipients receive the same message simultaneously
  • Delivery is typically instant
  • Failed deliveries will return a 500 error
FeaturesVersion controlCode intelligenceCLI
Use cases
TeamsAI agentsSlackGTM
ExploreDocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.