Subfields
16 training subfields
This project stands out not just because of the design, but because the data scope was already large from day one.
The client is PT Indonesia Core Values (ICV), a company founded in 1926 that provides training and consulting services to help organizations improve team capability and overall effectiveness. So this was not a case of inventing a new business identity from scratch. It was about modernizing their digital presence with a foundation that could support current needs much more seriously.
There was also a personal layer to this project: I got this client through a referral. The founder of ICV is Dr. Jeff, Founder & CEO, with 30 years of experience as a management consultant, trainer, lecturer, and researcher. That background made one thing clear very quickly: this website could not feel improvised. The credibility of the business was already there, so the website had to feel equally credible.
At that point, the real challenge was no longer “how do we build a good-looking website?” but how to build a website system that makes sense for a large content volume, stays lightweight, and does not create unnecessary technical overhead.
Subfields
16 training subfields
Topics
441 training topics
Scheduled Batches
4,430 batches
Documents
Approx. 4,905 documents
Mobile PageSpeed
93 Strong
Desktop PageSpeed
100 Excellent
Stack
Astro 6 + Sanity + Cloudflare Workers
Timeline
Delivered in 2 weeks
If your business has a large catalog, structured data relationships, or high content volume from the start, let’s discuss it first through a free consultation so the stack does not become a burden a few months later.
ICV did not need a simple website with a few static pages. From the beginning, the content scope was already substantial:
Once you combine the relationships between topics, schedules, and supporting data, the total comes close to 4,905 documents that needed to be modeled and published through the CMS.
At that point, I felt a manual approach was clearly unrealistic. Uploading thousands of items one by one and hoping everything would remain consistent would create operational drag from the first day.
The raw material sent by the client also showed that complexity very early. This was not one neat spreadsheet. It was a collection of documents and topic structures spread across multiple subfields.

There were also a few practical constraints:
That is why I did not want to build something that only looked “done” on the surface while remaining fragile behind the scenes.
I am still very familiar with WordPress, and for many projects it remains a reasonable choice. But for ICV, I did not think it was the best fit.
That is not because WordPress is bad. On the contrary, WordPress is still highly relevant for many business websites. But in this case, there were several issues that made it less ideal:
The content volume was too large for a typical manual workflow
Once you are dealing with hundreds of topics, thousands of batches, and a growing relational structure, the classic “create a post and fill in fields one by one” model becomes inefficient.
The maintenance burden would rise with the stack
If we chose WordPress, routine maintenance would still be required. At minimum that usually means core, plugin, and theme updates, backups, and compatibility checks several times per month.
The client did not need plugin ecosystem complexity
What ICV needed was not access to thousands of plugins. It needed a clean system for training topics, batches, speakers, schedules, and category relationships.
I wanted the data ingestion process to work naturally with AI
In this project, AI was not an accessory. It was a real accelerator. That meant choosing a stack that works naturally with AI-assisted schema modeling, data mapping, normalization, and bulk publishing.
If we had chosen WordPress, monthly maintenance by Harun Studio would still have been a viable commercial option. But for this case, I preferred a stack that is structurally low-maintenance from the start, rather than one that would demand more routine maintenance by default.
On the WordPress side of the discussion, several Harun Studio articles are still relevant here:
The point is not that WordPress is automatically wrong. The point is that a project like this becomes much more comfortable when the maintenance burden is reduced at the structural level from the beginning.
For this project, I needed a stack that was:
That is why I chose Astro 6, Sanity CMS, and Cloudflare Workers.
I have already written several times about why Astro has become a preferred choice at Harun Studio. For ICV, the reasons became even stronger:
Astro fits content-heavy websites extremely well
ICV is not a dashboard product where every page is highly interactive. Most of the job here is to present training topics, schedules, and registration information as efficiently as possible.
The frontend output stays lean and fast
For a large training catalog, speed matters. Topic pages, training pages, and annual schedules all need to remain responsive even with a lot of structured data behind them.
The architecture is naturally strong for SEO
Topic pages and training pages benefit from clean HTML output, strong page performance, and easy crawlability.
AI-assisted development feels much more natural
With a modern stack like Astro, development becomes faster, cheaper, and more manageable for a solo operator working with strong AI assistance.
Astro and Sanity already fit together well
The integration path is mature enough that connecting CMS and frontend feels straightforward instead of fragile.
There is no traditional PHP runtime burden
I do not need to keep thinking about plugin conflicts, theme updates, or routine PHP-era maintenance just to keep the site healthy.
Astro keeps the routing structure predictable
For a website with hundreds of training pages and many content relationships, I wanted a modular frontend structure that stays easy to iterate on.
The long-term cost profile makes sense
For a small team without an internal IT department, savings are not just about hosting cost. They are also about time and reduced technical overhead.
Sanity was the most important CMS decision in this project.
What I needed was not just a system for writing articles. I needed a content operating system that felt comfortable with large-scale structured data.
The main reasons I chose Sanity:
The relational data model is a much better fit
Subfields, topics, batches, speakers, schedules, and registration flows make much more sense as connected documents than as ordinary post entries.
Bulk import and AI-assisted ingestion are far more realistic
The client only needed to provide the source documents. On my side, the mapping, normalization, and publishing pipeline could be built systematically with AI support.
Sanity Studio is hosted for free by Sanity
That removed a lot of unnecessary infrastructure complexity for the admin side.
The free plan was already more than enough for the early stage
For this project, the free tier was already highly workable:
The editor experience can still be clean for non-technical workflows
Even though the data model is complex behind the scenes, the Sanity Studio interface can remain manageable for everyday content operations.

Cloudflare Workers completed the stack from the delivery and runtime side.
What I like about this approach:
The frontend and supporting logic can stay lightweight
Workers provide a modern runtime without dragging in the complexity of a traditional server setup.
Infrastructure maintenance remains minimal
I do not have to maintain a VPS just to keep the website and its supporting logic running.
It supports the overall philosophy of the project
The fewer components that require manual upkeep, the easier it is for the client to focus on marketing and operations.
It also gave me a simple, modern delivery layer that works well with bindings and runtime flexibility where needed.

One of the most important points in this project is that nothing was hardcoded.
The client sent around 441 syllabuses from 16 subfields, and I built the entire structure as a connected system. That means:
That is what made a scope of roughly 4,905 documents realistic.
This was the real acceleration layer of the project.
The workflow was not based on copying documents manually into the CMS. I used Cursor AI and Codex in alternating roles, integrated with Google Drive MCP where the source documents were stored. That allowed AI to read the source files directly, generate structured JSON, and then upsert those records into Sanity according to the schema I had already designed.
The flow looked roughly like this:
This still took real time. It was not instant magic. There were 441 training topics that still had to be published and checked for consistency. But the difference was substantial. If everything had been uploaded manually, the publishing work alone could easily have taken more than 1 to 2 weeks. With the AI-assisted workflow, that part could be compressed into less than 1 week.
On the frontend side, I built the structure to support the core needs of ICV.
Topic pages serve as a key entry point into the full training catalog.

Each training topic has a dedicated landing page that is structured for both SEO and conversion.

With this many batches, the annual schedule becomes a critical layer for helping users understand availability without jumping through too many pages.

Because the catalog is large, search is not a nice-to-have. It is a core requirement.
I also built a registration flow so users can move clearly from topic discovery to action.


For me, the best outcome of this project is not just that “the website went live.”
The most important outcomes are:
ICV now has a foundation that is ready to grow
This is not just a new website. It is a content system built to handle meaningful scale.
The core structure can be managed through Sanity Studio
Topics, batches, speakers, and supporting content do not need to be hardcoded.
The client does not need to worry about routine WordPress-style maintenance
That matters even more when there is no internal IT team.
The ICV team can focus on marketing and training operations
Their time is better spent selling, scheduling, and improving training programs, while Harun Studio can keep handling development and maintenance with a lighter technical burden.
The project was delivered quickly for a scope this large
Given the amount of data involved, finishing this within 2 weeks was fast.
I also verified performance to ensure this website was not only data-rich, but technically healthy.

Desktop scores:

Mobile scores:
For a website carrying a large training catalog, relational data, and many dynamic pages, those results are already very healthy. My goal was never to chase empty Lighthouse numbers. The goal was to keep the site fast, light, and dependable for both users and ongoing operations.
If your business has a product catalog, training catalog, relational data, or a very large content scope, we can start with a needs audit first and decide whether the right answer is a standard website, a headless CMS architecture, or a more hybrid system.
You can start with a free consultation, or explore our website development service and web app development service depending on your scope.
Founder of Harun Studio, web developer, blogger, and hosting reviewer. He helps business owners build healthier websites through design, development, and long-term maintenance.
Explore more insights that connect closely with this topic.
From a 404 error on firesystem.co.id to a full rebuild as hydrantsystem.co.id: a case study on building a lightweight, fast, and easy-to-manage website with a modern WordPress stack.
A comprehensive guide to choosing between WordPress and Astro for a business website, including cost, performance, maintenance, and use cases that shape the right decision.
A case study on the migration of Penasihat Hosting: from a WordPress setup that was actually still solid to Next.js 16 + PostgreSQL for long-term flexibility, a custom CMS, tool pages, and a more scalable product foundation.