Your email blog platform is now ready to use! Here's how to get started:
To publish a blog post, simply send an email to your Val Town email address:
Example email:
To: your-email-val@val.town
Subject: My First Blog Post
Body: <h2>Hello World!</h2><p>This is my first post published via email!</p>
/post/[slug] (auto-generated from title)/rss/api/posts for JSON data✅ Core Features
✅ Technical Features
The platform includes foundation code for:
WEBSUB_HUB_URL environment variable/websub for subscription managementBASE_URL environment variable to your domain/generate-keys.ts to generate keysACTIVITYPUB_PUBLIC_KEY and ACTIVITYPUB_PRIVATE_KEY environment variables/actor/inboxATPROTO_HANDLE and ATPROTO_PASSWORD environment variablesOptional configuration:
# Base URL for your blog (required for custom domains and ActivityPub) BASE_URL=https://your-domain.com # WebSub Hub URL (e.g., https://pubsubhubbub.appspot.com/) WEBSUB_HUB_URL=your-hub-url # AT Protocol (Bluesky) credentials ATPROTO_HANDLE=your-handle.bsky.social ATPROTO_PASSWORD=your-app-password # ActivityPub HTTP Signatures (recommended for production) ACTIVITYPUB_PUBLIC_KEY=-----BEGIN PUBLIC KEY-----... ACTIVITYPUB_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----...
To generate ActivityPub keys:
/generate-keys.ts in your browsergetCustomCSS() function in /backend/index.tsgenerateBlogHTML() and generatePostHTML()blog_posts_v1blog_posts_v2)Use the /test-publish.ts val to create sample posts for testing.
/health endpoint for status checks/api/posts for data integrityEmail → email.ts (Email Trigger)
↓
Database (SQLite)
↓
backend/index.ts (HTTP API + HTML Generation)
↓
Static HTML (TailwindCSS)
/health endpoint to verify system statusYour email blog platform is ready to use! Send your first email to start publishing.