Astro + Storyblok = đź’ś
Learn how testing something on a whim lead to us falling in love with both Astro and StoryBlok, and how we overcame challenges deploying the project.
I Was Done
Earlier this month I was ready to launch this version of Fifty52 as a Laravel Folio-based project, everything was done down to the SEO and then something happened; I decided to go look at Astro. I don’t remember if it was because I saw something mentioning it on social media, a desire to just look up alternatives to Folio, or me remembering Astro from looking at it a while ago and briefly skimming the docs before telling myself “not now”.
Now is Good
I decided that now was a good time to look into Astro, I was building a static site anyway and I had the free time between projects. Let me just say that I love Astro. That could be the end of this post. I love Astro.
I had this site moved from Folio to Astro in a day and my only real struggle was with getting Tailwind set up globally as I had to remember to reference it in component styles so I could use @apply. I was actually ready to launch it, until on yet another whim, I decided to look into Storyblok.
Storyblok for Content
I was content with having static content written in HTML/Markdown, but I wanted my business partner to be able to update things and add pages while also not having to bother me to actually do the updates. Storyblok I wrote off a while ago because of price, their lowest paid plan is $99/month and I didn’t see a need for that. This time I signed up for the free starter plan and I am currently on a Growth Plus free trial. To be completely honest I get why its “expensive”, its a great product, and I am enjoying using it. When the trial ends I will be staying on the starter plan until we have a need to upgrade to a higher plan, which might be never or a few months from now, we’ll have to see. The starter plan covers our needs.
I really like Storyblok, it has block based editing sort of like WordPress’s block editor, but without every part of WordPress I hate. I don’t have to know React and struggle through their block development process. I don’t have to rely on Advanced Custom Fields (ACF) to add custom fields or create blocks that are easier than the WP default, but still not that simple because WordPress is still involved.
After coming off an eight year partnership last year that was predominantly WordPress work until the last two when we started using Laravel more because a professional portal and product configurator were better suited for it. I think this would have been a great choice for that client and for many clients who want to default to WordPress. Blocks are easy to quickly create and they can be locked down so only specific blocks and content types can use them.
I think more clients would be suited to Storyblok than WordPress, especially in 2026. When your website is mostly static content, WordPress is unnecessary. It always carries the risk of an update breaking custom code, a plugin being buggy and a potential security risk, or just the sheer number of plugins making the website slow.
Deploying Astro
I have to admit, I’m cheap and its hard for companies to get my money when I know I can figure out an alternative. I was planning on trying Vercel or Netlify for this site. I went back and forth and decided to use Netlify. I set up an account, went to connect GitHub and then was presented with the reality that on a free Netlify account I cannot connect to a private repo that belongs to an organization. Fifty52 is a company, our projects including this website are private repos under an organization. I’m not going to pay $20 to test Netlify to see if it works for me and I’m not rearranging my repos to be under my Github account just to test either.
So after finding that out I opted to do what I always do when presented with a situation like this, I started figuring out how to do it myself. I pay for DigitalOcean servers and I know there are ways to deploy to DigitalOcean. Some of those ways have costs because they’re services, SFTP is always an option because its free and easy, and then there’s Rsync.
I don’t use Rsync often, last time I even looked at it was when I was writing documentation at the end of our last big partnership explaining how they can get full site backups of the code if they need to. I started looking into GitHub actions and it took me over a day to get set up and working exactly as I wanted. There’s no action for DigitalOcean so I had to cobble together and figure out how to do exactly what I need and install PM2 on the server. Now when I push a change to this site’s code, it runs an action for the specific branch.
The action will replace everything on the server side except node_modules/ because it takes a bit for everything to be deleted and reinstalled otherwise. Then it copies over the environment variables into a .env file, runs pnpm install to ensure that dependencies are all installed, runs pnpm build to build the Astro site with fresh content from Storyblok, and then finally it restarts PM2 for the project.
It works great and learning this has been infinitely more valuable than had I just paid the $20/month to Netlify. I wouldn’t have learned about PM2, wouldn’t have figured out GitHub Actions any time soon, and I can take this knowledge and use it for future projects.