Planuojam - Multilingual Event Planning Marketplace
Scalable multilingual event marketplace built with Next.js and Strapi.
Rescued a failing event platform by architecting a robust headless marketplace supporting five languages, real-time messaging, and Stripe payments. Engineered a custom AWS Translate-powered engine in Strapi 5 to automate complex nested content localization while preserving SEO integrity.
Client
Jun 2026
Eduard Y
Founder, Planuojam
Role
Senior Full-Stack Developer
Year
2026
Category
EventTech · Marketplace · Headless CMS · Multilingual Platform · Strapi

Eduard Y
Founder • Planuojam
“Very professional developer, he helping to build really difficult project in time, and for reasonable price. Work with him not first time and really happy with his work”
“One if not the best proffecional which i met in Upwork. Fast and professional”
The Challenge#
The project started as a recovery job. The client already had a website, but it was not working properly and was not structured for long-term growth. Patching isolated issues would have kept the same underlying problems in place, so I suggested a more practical direction: rebuild the system around a proper content model, a cleaner backend, and a frontend that preserved the client-approved visual direction while improving the user experience.
The biggest technical challenge was multilingual content. Planuojam needed to support Lithuanian, English, Russian, Polish, and Estonian across pages, listings, categories, event types, navigation, email templates, SEO metadata, and user-facing workflows. A normal CMS translation setup would still leave the team manually duplicating large amounts of content. Listings were not simple text pages either. They included vendor and venue blocks, pricing packages, FAQs, working schedules, media galleries, location data, social links, rich text, SEO fields, and relations to categories and event types. Translating that manually across every language would have been slow, expensive, and error-prone.
The platform also had to work as a real marketplace, not just a directory. It needed listing management, user accounts, provider profiles, bookings, availability calendars, reviews, messages, promotions, subscriptions, invoices, payment flows, email notifications, map discovery, and search-engine-friendly pages.
The Solution#
I rebuilt the backend in Strapi 5 and used it as both a headless CMS and the main application data layer. The content model was structured around the real business objects: listings, categories, event types, pages, bookings, messages, reviews, promotions, invoices, subscriptions, SEO settings, header, footer, site settings, and user profile extensions.
On the frontend, I built the marketplace in Next.js with locale-prefixed routes and server-rendered listing pages. The design direction stayed close to the previous website, but I improved the areas that affected usability, content quality, SEO, and conversion. Listing detail pages became richer and more useful, with galleries, videos, vendor or venue information, pricing plans, FAQs, ratings, reviews, availability, booking actions, map location, hot deals, and recommended listings.
For multilingual content, I built a custom auto-translation system on top of Strapi. When content is created or updated, the backend detects the source locale, finds the target locales, loads the full populated entry, and translates the right fields using AWS Translate. The system handles normal text, rich text blocks, components, dynamic zones, media, relations, nested listing data, and localized slugs. It also preserves existing manual translations, skips URLs, avoids copying SEO fields across languages incorrectly, retries failed translation calls, chunks long text safely, and uses loop guards so translation updates do not trigger endless translation cycles.
This turned multilingual publishing from a manual content duplication problem into a repeatable workflow. The team can update content in one language and let the platform generate the other locale versions while still keeping the option to manually refine translated content later.
Key Features#
- Headless Strapi backend for content, marketplace data, SEO, and administration
- Next.js frontend with locale-prefixed routes for Lithuanian, English, Russian, Polish, and Estonian
- Dynamic CMS pages built from reusable Strapi content blocks
- Vendor and venue listing profiles with galleries, videos, descriptions, pricing packages, FAQs, contact information, social links, and working schedules
- Mapbox-powered vendor and venue discovery
- Listing creation and editing flows for service providers
- Booking and availability workflows with calendar support
- Fallback inquiry flow when a provider does not use the availability calendar
- User profile area for listings, bookings, messages, invoices, promotions, reviews, and account settings
- Real-time messaging with Socket.IO, attachments, unread counts, read status, and typing indicators
- Reviews and rating aggregation for listing trust signals
- Hot deals and promoted listings for marketplace visibility
- Star-based promotion logic and promotion usage tracking
- Stripe subscription checkout for paid listing plans
- Stripe payment intents for promotion and star purchases
- Webhook-driven subscription and invoice handling
- Public invoice links secured by unique invoice tokens
- Localized email flows for OTP verification, welcome emails, bookings, messages, subscriptions, invoices, and inquiries
- Custom authentication flows with email OTP, social login exchange, provider phone validation, preferred language, and password setup for social-auth users
- Centralized site settings for logo, currency, fallback SEO, star packages, cancellation rules, and promotion pricing
- SEO support with canonical URLs, hreflang alternates, Open Graph metadata, Twitter metadata, XML sitemaps, sitemap index, and JSON-LD structured data for listings and FAQs
My Contribution#
I handled the project as a full-stack rebuild and recovery engagement. I reviewed the broken project, identified that the client needed a stronger foundation instead of another patch cycle, and recommended a rebrand with a proper backend architecture.
I designed and built the Strapi backend, including the content types, relations, custom controllers, middleware, lifecycle logic, user extensions, payment-related schemas, invoice records, messaging support, site settings, SEO models, and the auto-translation system.
I built the Next.js frontend around the new backend while keeping the client-approved visual direction. I implemented the localized routing setup, dynamic page rendering, listing pages, map experience, profile dashboard, booking flows, messaging UI, promotions, subscriptions, invoice access, email notifications, sitemap routes, metadata generation, and structured data.
I also handled the production polish that makes the platform usable beyond launch: caching and revalidation, server-rendered listing content, localized SEO, safer invoice access, cleaner listing filtering, promoted-first listing sorting, translated email templates, and ongoing fixes from real testing and client feedback.
Technical Highlights#
The auto-translation system is the core technical highlight of the project. It does not simply translate a single title and description field. It understands Strapi content structures and translates nested content while preserving the data that should not be translated.
For example, listing content can include dynamic vendor or venue blocks, rich text, media, relations, pricing packages, working schedules, FAQs, and SEO components. The backend separates translatable fields from non-translatable fields, copies media safely, maps localized relations when available, skips fields that would corrupt SEO or URLs, and only processes changed fields on updates when possible.
The marketplace also includes several production-grade application workflows: authenticated real-time messaging, booking status management, provider dashboards, review aggregation, Stripe checkout, Stripe webhooks, subscription records, invoice generation, public invoice tokens, promotion tracking, and multilingual transactional emails.
On the frontend, listing detail pages are built to serve both users and search engines. The pages are server-rendered from Strapi, include localized metadata, expose JSON-LD for local business and FAQ content, and generate sitemaps for pages, listings, categories, services, and event types.
Gallery





Tech stack
next-intl
Strapi 5
AWS Translate
Mapbox
Resend
Nodemailer
REST APIs
JSON-LDTimeline
Architecture & Recovery
Q3 2025
Audited legacy codebase, redesigned the content schema, and established a decoupled Next.js and Strapi 5 headless architecture.
Core Engine & Payments
Q4 2025
Implemented Stripe subscriptions, Mapbox discovery, and Socket.IO real-time messaging workflows.
Localization & Launch
Q1 2026
Built the custom AWS Translate localization engine, finalized localized SEO routes, and launched the platform.
Outcomes
- Completed
Project Recovery
Broken project turned into a rebuilt marketplace platform |
- Delivered
Rebrand and Frontend Rebuild
Previous website direction preserved, with improved user flows and marketplace screens |
- Strapi 5
Headless CMS
Content, navigation, SEO, listings, categories, event types, site settings, and page blocks moved into Strapi |
- 5 Languages
Multilingual Publishing
Five-language setup supported with custom auto-translation across nested Strapi content |
- Production Ready
Marketplace Workflows
Listings, bookings, reviews, messages, availability, promotions, subscriptions, payments, and invoices implemented |
- Fully Configured
SEO Foundation
Localized URLs, canonical metadata, hreflang, Open Graph, Twitter metadata, JSON-LD, and XML sitemaps added |
- Enabled
Operational Control
The client can manage platform content and marketplace configuration without relying on code changes for routine updates |