Conservio is a marketplace for conservation-focused travel in Africa. The public side lets people browse destinations, places to stay, activities, and offers, then send an enquiry. Behind it, an authenticated console keeps all that inventory up to date.
I was the primary frontend engineer and client-app lead. I bootstrapped the Next.js app and built the first public site and auth surfaces, then carried much of the marketplace and the management console through to production. Others contributed, but the client app was mine to own.
What I built
I started with the foundation: the Next.js/React app, the layout and navigation system, responsive styling, base search, image handling, and the production build config.
On the public side, that grew into the marketplace itself, from home and explore through countries, regions, property and accommodation pages, activities, offers, and the about and campaign content. The parts that actually convert sat on top of it: search and filtering, destination carousels, property and offer cards, Mapbox maps, galleries, SEO metadata, rate display, and the enquiry flow end to end.
The other half was the console the team uses to run all of that. Properties, units, offers, reviews, activities, amenities, countries, and regions each got tabbed edit forms, list and detail views, and publish/draft controls behind protected routes, plus the media and rich-text tooling to manage locations, directions, rates, and galleries.
Underneath both, I wired up the platform plumbing: SWR data fetching, AWS Cognito auth through NextAuth, image compression and signed uploads to Imgix, analytics, the sitemap, and the Docker and AWS deploy config.
Hard parts
The public marketplace had to feel browseable and visual. The console behind it had to be practical for someone maintaining a large, structured catalogue of travel inventory. Same codebase, two very different jobs, and neither was allowed to compromise the other.
The media and content model was the thing everything else hung off. Properties, units, offers, regions, activities, rates, reviews, and galleries all needed editing flows that matched exactly how they would show up publicly, which is harder than it sounds once the catalogue gets big.
Stack
Next.js, React, JavaScript, CSS Modules and Sass, Formik and Yup, SWR, NextAuth over AWS Cognito, Radix UI, Mapbox, Draft.js for rich text, browser-image-compression and Imgix for media, next-seo and next-sitemap, and a Docker build deploying to AWS.