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

valdottown

blog

Val Town's Blog
Public
Like
8
blog
Home
Code
9
components
10
posts
3
routes
4
styles
1
utils
6
IMAGES.md
README.md
TODOs.md
H
index.ts
Branches
5
Pull requests
1
Remixes
17
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
/
posts
/
blog.md
Code
/
posts
/
blog.md
Search
4/4/2025
Viewing readonly version of main branch: v122
View latest version
blog.md
title:
We migrated our blog to Val Town in a day, and you should too
description:
This very blog that you're reading right now is now hosted on Val Town
pubDate:
2025-04-04T00:00:00.000Z
author:
Steve Krouse

Today we migrated our blog to Val Town 🥳

We completed this migration in about one day of work. Now our deployments are instant (~100ms), and we've greatly simplified our blogging stack.

BeforeNow
RenderingAstroReact
Version controlGithubVal Town
Text editinglocal editorVal Town
DeploymentCloudflare Pages + GithubVal Town
HostingCloudflare PagesVal Town
CDNCloudflareCloudflare

Should you migrate your blog to Val Town?

Maybe! It depends on your constraints and what matters to you. We care deeply about:

  1. Tight feedback loops
  2. Simple, browser-based workflows
  3. A fast migration

We also care deeply about dogfooding, but unless you're us – and unfortunately most of you aren't – that one doesn't apply to you.

Tight feedback loops

We are obsessed with tight feedback loops.

"Creators need an immediate connection to what they're creating."

– Bret Victor, "Inventing on Principle"

In some ways, this singular comittment to tight feedback loops is what seperates Val Town from all other code hosting & deployment platforms. We believe that you should be able to iterate directly in your production environment, not iterate locally, then deploy, then wait minutes to see how things look live.

In Val Town, a save is a deploy, and it happens in about 100ms. We go to great technical lengths to make this possible. This means no waiting minutes to see what your post looks like live. And this goes for branches too. Every edit of every branch is instantly deployed in a branch preview.

Simpler, browser-based workflow

Val Town replaces your local text editor, git for version control, GitHub for hosted version control, and deployment and hosting.

Simpler workflows is particularly important if you value casual contributors, such as less technical folks on your team or contributions from the broader community. If your blog is on Val Town, then you have a single place where the source code lives, is edited, collaborated on, and deployed. No need for anyone to install or use git, clone the repo locally, and install or use a local text editor. Contributors can remix your blog with a single click (after signing up for Val Town), make their edits, preview their deployed edits, and send you a pull request – all from the browser. (You can edit Val Town Projects locally with your preferred editor via our CLI if you prefer.)

The downsides:

  • Val Town Projects are beta software, so you'd be on the cutting-edge alongside us.
    • We're coming up with patterns that you'd get for free from Astro
    • We haven't yet figured out a great story for image hosting and caching (right now we're just uploading to cloudflare out of band and linking; no images in source control yet; coming soon)
  • Val Town doesn't yet have pull-request comments like Github does
  • We don't have good workflows for bundlers or build steps, so it's harder to use anything that requires vite, etc.

A fast migration

How did we migrate 61 blog posts to an entirely new blog in a single day?

We didn't. We left them where they are, and proxy to them.

Our old blog remains hosted at TODO. Whenever a request is made on our new blog for a post on the old blog, our new blog's server makes a request to the old blog for that post, and forwards the response on to the user.

The

We implemented the new blog system using:

  • React for rendering components
  • Tailwind CSS for styling
  • Unified/Remark/Rehype for markdown processing
  • RSS Parser for fetching posts from the old blog

So far we've had reasonable success with this technique of migrating to Val Town quickly by proxying most old content, and only rebuilding the homepage. I first used this technique on my personal website, stevekrouse.com, and was pleased to see it continue to work here. If you, dear reader, have a blog you'd like to migrate to Val Town in this way and get stuck, shoot me an email at steve@val.town – I'd be happy to help.

Dogfooding

TODO

Get started

If you are starting a new blog from scratch, Remix this markdown blog starter.

If you are migrating a blog, Remix this blog, because it has helper functions on importing an old blog from its RSS feed. TODO - rejuggle utils so that the migration stuff is clearer.

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.