Home / Work / ANATTA CULINARY ACADEMY
Culinary Education

ANATTA CULINARY ACADEMY

RM 120k and a $99/month server could not save their WordPress booking system from crashing every 30 minutes

anattaacademy.com Delivered in 12 weeks
ANATTA CULINARY ACADEMY platform
100%
Uptime Since Launch
RM 120k
WordPress Rescue
30min → 0
Crashes Per Hour
Lower
Monthly Hosting Cost

It was never just one website

Anatta runs two businesses under one roof. There is the main Anatta brand, which handles events, venue hire, off-site catering and chef consultancy. And there is the Culinary Academy, where people book cooking classes, sign their kids up for young-chef programs and log into a member account. Different visitors, different content, two separate front doors. The job was to run both of them properly without the team having to manage two of everything.

What they were dealing with

Before we came in, all of this sat on WordPress. A previous vendor had charged RM 120,000 for a custom booking build, and it crashed about every thirty minutes during normal use. The fix everyone reached for was a bigger server. They kept scaling it up until they were paying for a $99-a-month plan, and it still went down. That is usually the tell that the server was never the problem. When you pile that much custom booking and payment logic on top of a stack of plugins, it buckles under its own weight, and no amount of hosting fixes that.

Every crash meant something real. A student trying to pay and giving up. A booking that may or may not have gone through. Someone on the team chasing it down afterwards. They were paying more each month to keep alive a system that was quietly costing them customers.

Why we started over instead of patching

Patching it would have bought a few quiet weeks before the next crash. We made the call to rebuild from scratch. That is a hard thing to agree to after you have already spent six figures, but pouring more money into the old build would have meant paying to slow the bleeding rather than stop it.

Two sites, one engine

Here is the part most people never see. This is not one website with a few extra pages bolted on. It is two separate brands running on the same application. Every piece of content knows which brand it belongs to, the main side or the academy. The system serves the right site based on the web address, each brand can sit on its own domain, and each can even carry its own fonts. Behind both of them is a single admin panel, so the team logs in once and runs everything from one place.

What we built

It is a custom Laravel and React application, and it is large because the business is. Dozens of moving parts, all in one codebase the team owns outright:

  • Class bookings with schedules, sessions, participants and automatic reminders, set up so two people can never grab the same seat
  • A cart and Stripe checkout that handles payment cleanly, instead of leaving it to manual bank transfers
  • PDF invoices and receipts generated and emailed on their own
  • A member area for booking history, invoices and account details
  • An instructor portal so teachers manage their own classes and schedules
  • A marketplace with products and bundles for the retail side
  • Membership tiers, vouchers, promo codes, packages and a points system
  • Events and private classes, including enquiries for venue hire and off-site work
  • Recipes, articles, testimonials and live Google Reviews
  • Newsletter and marketing tools, with WhatsApp messaging built in
  • A full admin back office with role-based access, support log-in as a customer, and a record of who changed what

The tricky part

The hard bit was never any single feature. It was keeping two brands on one engine without them leaking into each other. The academy classes and the main brand events share the same models, the same admin and the same login, while a visitor only ever sees one clean, coherent brand on the public side. Getting that line right is the difference between a real platform and a website wearing a costume.

Where it stands now

Anatta runs both brands on one platform they actually control, managed from a single admin panel. Bookings, payments, invoicing, membership, the marketplace, events and both public sites all live in the same codebase. The thirty-minute crash cycle is gone, and the system no longer needs an oversized server holding it up. What used to be a RM 120,000 build that could not stay up for half an hour is now the thing the whole business runs on.

Built with: Laravel React Inertia PostgreSQL Stripe Tailwind CSS
Project outcome

Replaced a failing RM 120k WordPress booking system with a custom Laravel and React platform. Class bookings, Stripe checkout, recipes, events, member portal, and admin backend now run reliably on a single codebase, with zero plugin dependencies and a lower monthly hosting bill than the old setup.

Want results like this?

A few quick questions, no pitch. Just a clear read on what we would build for you and what it would cost.

See what we'd build for you
Chat with us