Moldeate World
Moldeate World sells everyday shapewear online and through distributors. Its store used to run on Odoo Enterprise's hosted website builder. I moved it onto the custom platform I built for its sister brand, MED Science, backed by a self-hosted Odoo Community 19, and cut the domain over in July 2026. Today the Canada store is open to the public, with a distributor portal running alongside it.
- # next.js
- # typescript
- # odoo
- # square
- # stripe
The problem
Moldeate World's store and back office lived on Odoo Enterprise SaaS, billed per user every month, and its hosted website builder limited what the storefront could do. Leaving it meant moving the business's customers, orders, invoices and stock without losing a unit or emailing a single customer by mistake, keeping the search rankings of the old URLs, and keeping a rule that sends Colombian visitors to a partner business working after the move.
The solution
- Migration from Odoo Enterprise SaaS to the custom Next.js storefront and a self-hosted Odoo Community 19, with the domain cutover in July 2026.
- Scripted plan-then-apply data import into the new ERP: contacts, historical orders, invoice PDFs attached to their orders and a per-variant stock mirror, with backups taken before and after.
- SEO-safe move: 301 redirects map the old Odoo Enterprise product URLs to their new pages, so existing search rankings carry over.
- Edge geo-routing in Next.js middleware: visitors land on their country's store, Colombian traffic goes to a partner business, and search-engine crawlers are exempt so indexing is never blocked.
- Canada store with Square in production and prices shown in CAD or USD depending on where the visitor is; the US market ran on Stripe from July to September 2026 before being folded into it.
- Growth features: verified-purchase reviews, welcome and subscriber coupons, an outlet section, a Meta product-catalog feed and a guided fit assistant.
- Distributor portal with the wholesale catalog at each distributor's pricelist, quotes, and their market's consumer sales pulled live from Odoo.
Results
- Live in production since the July 2026 domain cutover; the Canada store has been open to the public since September 17, 2026, with Square in production.
- The full customer, order, invoice and stock history moved by script, with zero emails sent to customers during the import.
- Stock edits in Odoo reach the store within about five minutes through a webhook, with a nightly per-warehouse reconciliation behind it.
- Fonts preloaded per page cut from 274 KB to 166 KB; Canada home LCP on throttled mobile improved from 2.10 s to 1.62 s.
- Shares one codebase, one 1,640-test suite and one deploy pipeline with MED Science, so every fix ships to both brands.
Tech stack
- frontend
-
- Next.js 14 (App Router)
- React 18
- TypeScript
- Tailwind CSS
- backend & data
-
- Neon PostgreSQL
- Drizzle ORM
- NextAuth
- Upstash Redis
- Resend
- erp & payments
-
- Odoo Community 19 (self-hosted)
- XML-RPC
- Square
- Stripe
- infra & growth
-
- Vercel (edge middleware, cron)
- Sentry
- Vitest
- Meta catalog feed