CASE STUDIES

Building ICV Training with Astro + Sanity for Nearly 5,000 Training Documents

Willya Randika |
ICVTraining.com homepage

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.

Short Summary & Key Takeaways

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.

The Starting Point: A New Website for a Very Large Content Scope

ICV did not need a simple website with a few static pages. From the beginning, the content scope was already substantial:

  • around 441 training topics,
  • around 4,430 scheduled batches,
  • and 16 subfields that formed the structure of the training catalog.

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.

Raw training topic and syllabus data from the client

There were also a few practical constraints:

  • the client had no internal IT team,
  • the client planned to hand over website development, maintenance, and technical management to Harun Studio,
  • and the website needed to become a real marketing and operational asset quickly, not a long-running setup project.

That is why I did not want to build something that only looked “done” on the surface while remaining fragile behind the scenes.

Why I Did Not Choose WordPress for This Case

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Why Astro + Sanity + Cloudflare Workers Was the Best Fit

For this project, I needed a stack that was:

  • fast to develop,
  • lightweight to run,
  • easy to integrate with AI workflows,
  • comfortable for relational data,
  • and not unnecessarily heavy to maintain.

That is why I chose Astro 6, Sanity CMS, and Cloudflare Workers.

Why Astro?

I have already written several times about why Astro has become a preferred choice at Harun Studio. For ICV, the reasons became even stronger:

  1. 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.

  2. 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.

  3. The architecture is naturally strong for SEO
    Topic pages and training pages benefit from clean HTML output, strong page performance, and easy crawlability.

  4. 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.

  5. Astro and Sanity already fit together well
    The integration path is mature enough that connecting CMS and frontend feels straightforward instead of fragile.

  6. 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.

  7. 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.

  8. 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.

Why Sanity?

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:

  1. 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.

  2. 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.

  3. Sanity Studio is hosted for free by Sanity
    That removed a lot of unnecessary infrastructure complexity for the admin side.

  4. The free plan was already more than enough for the early stage
    For this project, the free tier was already highly workable:

    • free 10k documents,
    • free 100GB storage,
    • free 100GB bandwidth per month,
    • free 250k API requests per month,
    • free 2 datasets,
    • and free support for up to 20 user seats with different roles.
  5. 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.

ICV Sanity Studio dashboard

Why Cloudflare Workers?

Cloudflare Workers completed the stack from the delivery and runtime side.

What I like about this approach:

  1. The frontend and supporting logic can stay lightweight
    Workers provide a modern runtime without dragging in the complexity of a traditional server setup.

  2. Infrastructure maintenance remains minimal
    I do not have to maintain a VPS just to keep the website and its supporting logic running.

  3. 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.

ICV Training on Cloudflare Workers

Implementation: Not Hardcoded, but Built as a System

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:

  • training topics can be managed dynamically,
  • training batches can be added or edited without touching code,
  • speakers can be linked to relevant content,
  • annual schedules can be managed through the CMS,
  • and training pages do not have to be built one by one by hand.

That is what made a scope of roughly 4,905 documents realistic.

The AI Workflow: Cursor, Codex, Google Drive MCP, and Sanity Upserts

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:

  1. The client uploaded source documents to Google Drive.
  2. AI read those documents directly from there.
  3. The content was normalized into consistent JSON structures.
  4. That JSON was upserted into Sanity according to the schema.
  5. The Astro frontend automatically consumed the clean data structure.

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.

Dynamic Topic, Training, and Schedule Pages

On the frontend side, I built the structure to support the core needs of ICV.

Topic Pages

Topic pages serve as a key entry point into the full training catalog.

ICV Training topic page

Training Pages

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

ICV training page

Annual Schedule

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

ICV annual schedule

Search and Registration Were Also Built Into the System

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.

Search feature on desktop

Training Registration Form

Training registration form

The Most Important Outcome: The Client Does Not Carry Unnecessary Technical Burden

For me, the best outcome of this project is not just that “the website went live.”

The most important outcomes are:

  1. 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.

  2. The core structure can be managed through Sanity Studio
    Topics, batches, speakers, and supporting content do not need to be hardcoded.

  3. The client does not need to worry about routine WordPress-style maintenance
    That matters even more when there is no internal IT team.

  4. 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.

  5. The project was delivered quickly for a scope this large
    Given the amount of data involved, finishing this within 2 weeks was fast.

Performance Results

I also verified performance to ensure this website was not only data-rich, but technically healthy.

Desktop PageSpeed Insights

ICV desktop PageSpeed Insights

Desktop scores:

  • Performance: 100
  • Accessibility: 94
  • Best Practices: 100
  • SEO: 100

Mobile PageSpeed Insights

ICV mobile PageSpeed Insights

Mobile scores:

  • Performance: 93
  • Accessibility: 93
  • Best Practices: 100
  • SEO: 100

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.

Lessons from This Project

  1. For websites with large data volume, the stack decision at the beginning strongly affects how comfortable operations will feel later.
  2. WordPress is not automatically the wrong choice, but it is not always the best choice for large relational data structures that keep evolving.
  3. Sanity becomes very powerful when a project needs a structured, low-maintenance CMS that works naturally with AI-assisted workflows.
  4. Astro is a strong fit for content-heavy websites that need high performance and low operational overhead.
  5. If the system is modeled correctly from the start, thousands of documents do not have to mean thousands of manual tasks.

Want to Build a Website with a Similar Approach?

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.

Willya Randika

Willya Randika

Founder of Harun Studio, web developer, blogger, and hosting reviewer. He helps business owners build healthier websites through design, development, and long-term maintenance.

Related Articles

Explore more insights that connect closely with this topic.