Platform: Strapi
Strapi development for teams that want to own their CMS
Strapi is an open source headless CMS you can run yourself. We set it up, secure it and connect it to a fast front end.
In short
Strapi is an open source headless CMS built on Node.js. You define content types, it creates an admin panel and an API, and your website or app reads from that API. You can host it yourself or use Strapi's cloud. It suits teams that want control over data and hosting, and that have someone to maintain it.
Who Strapi suits
Strapi gives you a CMS you can run on your own server, with your own database, and extend in code. That is attractive if you have data residency rules, want to avoid per-seat pricing, or need custom logic around content. The trade-off is that you become the operator. Updates, backups and security fixes are yours.
If you want a fully hosted tool with no servers to look after, compare it with Contentful or Sanity. The comparison page Strapi vs Contentful covers the decision in more detail.
Self-hosted or Strapi Cloud
| Question | Self-hosted | Strapi Cloud |
|---|---|---|
| Who patches and upgrades? | You or us under a maintenance plan | Strapi hosts the runtime; you still upgrade the app code |
| Where does data live? | Any region you choose | Regions Strapi offers; check against your privacy rules |
| Custom server code | Full freedom | Allowed within the platform's limits |
| Setup effort | More: server, database, backups, SSL | Less |
| Fits when | GDPR or residency needs, existing cloud account, cost control | Small team, fast start, no devops |
For EU and UK clients, region matters because personal data in form submissions and user accounts falls under GDPR. We note the hosting region in the data-protection notes we hand over.
A worked content type
Take a company that publishes webinars. In Strapi you create a Webinar content type with these fields.
- Title and slug, with the slug set to generate from the title and be unique.
- Start time, stored in UTC, with a separate time-zone label for display. This avoids the classic mistake of showing a US audience an Indian Standard Time start.
- Speakers, a relation to a Person type, so a speaker is edited once and appears everywhere.
- Recording link, optional, shown only after the event.
- Registration form ID, text, passed to your marketing platform.
- Draft and publish enabled, so editors can prepare the page before it goes live.
Each content type also gets its own permission switches, so you can allow the public to read published webinars while only editors can create them.
What we have built on it
We have no Strapi project published on our work page, and we will not invent one. The nearest published work is Aura Realty, where we built a website and a custom CRM that captures leads from the site, Instagram, WhatsApp and calls into one place. It shows our comfort with custom back ends and data models, though the case study does not say it runs on Strapi. For a new Strapi project we start with a content model workshop, as in the example above, and a small proof of concept.
Gotchas we plan for
- Public access is off by default. After you create a content type, the API returns nothing to visitors until you grant permission. We set permissions per role and test them from outside the admin panel.
- Relations are not included automatically. A request for a webinar does not return its speakers unless you ask. Developers must populate relations on purpose, and we cap the depth to keep responses fast.
- Do not run production on the default database. The file database used for local work is not suited to live traffic. We use PostgreSQL or MySQL and take scheduled backups.
- Uploads need a home. By default files are saved on the server's disk, which disappears if the server is rebuilt. We connect an object storage provider and a CDN.
- Major version upgrades are projects. Strapi 5 changed how entries are identified and how the API responds, so moving from version 4 needs a plan, a staging run and updated front end code.
- Rebuild triggers. A static front end needs a webhook from Strapi to start a rebuild on publish. We wire this and test it with real edits.
- Lock the admin panel. Use strong roles, two-step login where available, and keep the admin address off public sitemaps.
Timeline
| Phase | Typical length |
|---|---|
| Content model workshop and proof of concept | 1 to 2 weeks |
| Content types, roles, media storage and hosting | 2 to 3 weeks |
| Front end build and API wiring | 3 to 6 weeks |
| Content import, QA and security review | 1 to 2 weeks |
| Launch and first month monitoring | 1 week plus a month of checks |
So a typical project takes 7 to 13 weeks, with a longer plan for custom plugins or many integrations. Fixed quote after a short call: get in touch.
Updated 30 October 2026
Questions, answered
Is Strapi free?
Is Strapi secure?
Can Strapi work with Next.js?
Should we move from WordPress to Strapi?
Who looks after it after launch?
Keep exploring
Strapi vs Contentful: which to choose in 2026
This is a question about who runs the server. Strapi hands you the keys. Contentful keeps them and charges for the service.
PlatformSanity CMS development, starting with the content model
Sanity is only as good as the model behind it. We design the content structure first, then build the Studio and the front end around it.
ServiceNext.js and headless development, only where it pays off
A headless build separates your content from the website that shows it. That is powerful and costs more to run, so we start by checking whether you…
Considering Strapi?
Tell us where the content goes and we will propose hosting and a fixed quote after a short call.