Public
Like
6
postherous
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: v30View latest version
A modern blog platform inspired by Posterous that allows publishing posts via email.
Your email blog platform is fully functional! Send an email to start publishing.
- π§ Email-to-Publish: Send an email to publish posts instantly
- π¨ Multi-format Support: HTML and plain text posts
- π‘ RSS Feed: Full RSS 2.0 support for syndication
- π WebSub: Real-time feed updates via WebSub protocol (configured)
- π ActivityPub: Federated social networking support (foundation ready)
- π¦ AT Protocol: Bluesky integration for cross-platform syndication (configured)
- π SEO Friendly: Clean URLs with slugified titles
- π± Responsive Design: Mobile-first responsive interface
- β‘ Fast: Built on Val Town with SQLite storage
index.ts- Main Hono server with API routes βdatabase/- SQLite schema and query functions βservices/- External service integrations β
index.html- Main blog interface βcomponents/- React components for blog UI βstyle.css- TailwindCSS styling β
- Email trigger handler for processing incoming posts β
- Publish via Email: Send email to your Val Town email address
- View Blog: Visit your backend HTTP val URL
- RSS Feed: Access
/rssfor syndication - Individual Posts: Visit
/post/[slug]
See SETUP.md for detailed setup instructions.
WEBSUB_HUB_URL- WebSub hub URLACTIVITYPUB_DOMAIN- Domain for ActivityPub federationATPROTO_HANDLE- AT Protocol handleATPROTO_PASSWORD- AT Protocol app password
GET /- Main blog interfaceGET /post/:slug- Individual post pageGET /rss- RSS 2.0 feedGET /api/posts- JSON API for postsGET /api/posts/:slug- JSON API for single postGET /websub- WebSub subscription endpointGET /actor- ActivityPub actor documentPOST /inbox- ActivityPub inboxGET /health- Health check
Use /test-publish.ts to create sample posts for testing.
Send an email like this:
To: your-email-val@val.town
Subject: My Amazing Blog Post
Body: <h2>Hello World!</h2><p>This post was published via email!</p>
The post will appear instantly on your blog with:
- Title: "My Amazing Blog Post"
- Slug: "my-amazing-blog-post"
- Content: Rendered HTML
- Author: Extracted from email address
- Edit styles in
/frontend/style.css - Modify React components in
/frontend/components/ - Update branding in templates and backend
- Configure federation services via environment variables
Posts are automatically syndicated to:
- RSS feed (always enabled)
- WebSub subscribers (if configured)
- ActivityPub followers (foundation ready)
- AT Protocol/Bluesky (if configured)
Ready to blog via email? Send your first post now! π§β¨