Bolt to Astro

Migrate from Bolt to Astro

A Bolt project already gives us the code, so this is not an extraction project. The work is deciding which parts of that codebase still deserve application architecture, and which public routes have become something simpler: a website.

A migration like this usually takes 1–3 weeks

What actually migrates.

What you have What happens Why
The repository Stays put Does not move, on purpose. The old platform keeps this because it is the thing it is good at, and the new front end reads from it. There is nothing to scrape or reverse-engineer. Bolt syncs two ways with GitHub and its CLI pulls a project down to a local folder, so the existing project gives us the components, the assets, the logic and the integrations to work from.
Public routes Rebuild Made again in Astro. The old version is a reference rather than something that can be imported. Routes whose main job is to communicate content become Astro pages with their primary content rendered into the document.
Components Reconfigure The same thing, set up again. Nothing is recreated, but it has to be pointed at the new site by hand. Interactive React components can stay React inside Astro where their runtime is useful. Presentational ones are usually simpler to rebuild as Astro components that ship nothing to the browser.
Publishing content Move Comes across as it is. The content survives the move and the work is transporting it, not remaking it. Copy, FAQs, resources and testimonials move into content collections or a CMS rather than staying embedded in application components.
Application state Stays put Does not move, on purpose. The old platform keeps this because it is the thing it is good at, and the new front end reads from it. Authentication, user data, the database and anything genuinely dynamic stay with the application unless there is a separate reason to replace them.
URLs Reconfigure The same thing, set up again. Nothing is recreated, but it has to be pointed at the new site by hand. Every known public address is inventoried, preserved where practical and deliberately redirected where the new routing changes.

Where this migration gets complicated.

  1. 01

    Deciding where the website ends

    A generated project can hold the homepage, the signed-in product, the database calls and the marketing copy in one front end, because that was the fastest way to build it. The migration has to decide which routes are documents and which are genuinely application surfaces, and that decision is the project.

  2. 02

    Keeping the useful code without keeping the architecture by accident

    Having the source does not mean every component should survive unchanged. Each one is judged on what it does, what runtime it needs and whether keeping it is actually simpler than rebuilding it. Code availability is not architectural suitability.

How the migration works.

  1. Audit

    Every route, component, integration and piece of application state, sorted into what is website and what is app.

  2. Rebuild

    Public routes become Astro pages, and only the components that earn their runtime keep it.

  3. Migrate

    Publishing content into the content model, every known address preserved or redirected, integrations reconnected and verified.

  4. Hand over

    The repository, the migration map and documentation written for somebody who was not here.

What is included.

Every migration includes the front-end rebuild, the content and asset move, the integration work, URL coverage, QA and post-launch monitoring. What changes with the platform is how hard each one is, which is what the rest of the page is for.

  • Design rebuild

    Rebuilt as components, not approximated.

  • Responsive development

    Desktop, tablet and mobile, built and checked.

  • CMS architecture

    Collections and fields mapped before build.

  • Content migration

    Migrated and checked against the source.

  • Asset migration

    Collected, compressed and rehosted.

  • Forms and integrations

    Tested through to the final record.

  • URL coverage

    Every known public address preserved or deliberately redirected.

  • Metadata and canonicals

    Preserved wherever possible.

  • Search footprint preservation

    URLs inventoried before and checked after.

  • Pre-launch QA

    Forms, templates and old URLs verified.

  • Post-launch support

    One week of indexing and traffic checks included.

Search visibility can move during a migration. The goal is to preserve what search engines already understand, and to catch what changed quickly after launch.

And it is yours at the end. The repository sits in your organization rather than mine, the handoff documentation is written for somebody who was not here, and nothing about the project requires me: another developer or your own team can operate it.

Publishing content should have somewhere deliberate to live.

A generated project keeps its headlines, its FAQs and its pricing copy inside components, which is fine until somebody outside engineering needs to change one. Those strings want a home: content collections beside the code where a developer publishes, a headless CMS such as Sanity where marketing does, or the component itself where the page changes twice a year. Application data is the separate question and stays with whatever backend the product already uses. Getting that split wrong is the mistake people feel a year later.

  1. 01

    Content Collections, in the repository

    For a team that publishes rarely and is happy in a pull request. The content is files beside the code, typed and checked at build time, with no service to pay for and nothing to keep running. It stops suiting you the day somebody outside engineering needs to publish without help.

  2. 02

    A headless CMS, such as Sanity

    For a team that publishes regularly, or where the person writing is not the person deploying. Editors get a real interface, the model is explicit, and the site reads it at build time. It is another system to configure and pay for, and the modeling is the part that decides whether editors can work on their own.

  3. 03

    No CMS at all

    For a site whose pages change a few times a year. Everything lives in components, changes go through the same review as any other change, and there is no editorial layer to maintain. Honest for a small site, and the wrong answer the moment a blog is added.

Content Collections against a headless CMS, and how the choice is made.

A migration is not finished when the new site looks right.

These are acceptance criteria rather than features. The codebase, the site inventory and the connected systems are each checked against what you started with, and the answer is a count rather than an opinion.

  • 01 Codebase

    A codebase your team owns

    Components, routes and styles rebuilt deliberately, not cleaned up from exported markup.

    Verified by Repository and component structure

  • 02 Site

    Everything accounted for

    Collections, content, metadata and existing addresses checked against the source.

    Verified by Source inventory and migration checks

  • 03 Systems

    Handoffs that actually arrive

    Forms, analytics and CRM checked at their destination rather than at the button.

    Verified by Submissions, events and records

The migration is complete when these pass, not when the homepage looks right.

The figures above are an illustration of the report's shape. Yours are counted from your own site.

See everything included in a migration

Keep the agent workflow. Make the architecture easier to reason about.

Bolt already makes AI part of development, and moving a public front end to Astro does not need to change that. What changes is the shape of the project: routes, content models and component boundaries become explicit, so future work by a developer or a coding agent happens against a system designed around what the site has become rather than around the prompts that originally discovered it.

The important part is not that an agent can write code. It is that the project is structured well enough for its changes to be understood, reviewed and reversed.

  • Marketing

    Editor or AI assistant CMS Preview Publish

    On the headless CMS answer above. Choose content collections instead and this lane runs through the repository and the review with the developers, which is exactly why that decision comes before the rebuild rather than after it.

  • Developers

    Branch Components and routes Review Deploy

    The same workflow as any other repository, which is what makes a second developer able to pick it up.

  • Coding agents

    Project instructions Branch Review Deploy

    Against the real repository, under the same review a person gets. An agent is only as safe as the documentation and the tests it is working against, which is why those are deliverables rather than extras.

Reach out and see if we are a good fit.

Get in touch

Currently booking two to four weeks out.