Full Stack Developer (Headless CMS/Sanity.IO)
Own a full-stack Sanity/Next.js platform for a growing MedSpa: design schemas, ship features end-to-end, embrace async work, and own the deployment — no handholding.
About the role
The headless CMS space has matured — but most developers who say they’ve built headless architectures have stitched together a tutorial stack, not designed one from scratch. The difference shows when the content model needs to evolve, when third-party APIs behave unexpectedly, or when the business asks for something the original schema can’t handle. We’re building the digital platform for a growing MedSpa — and we need someone who knows the difference between setting up Sanity and actually owning it.
This is a full ownership role. You’ll design the content architecture in Sanity.io, build the Next.js frontend that consumes it, and wire the integrations that make it operational — booking flows, service pages, provider profiles, and the content engine behind it all. You’ll work lean, make architectural calls without waiting for a spec, and ship real features in a real production environment. If your best work has been in a large team with a dedicated design system and a PM sequencing your tickets, this probably isn’t the right fit.
What you’ll do
Own the content architecture
Design the full content schema in Sanity.io from the ground up — services, treatments, providers, booking flows, blog, FAQs — with clean document types, structured portable text, and a model that non-technical editors can actually use.
Make the schema decisions that will matter 18 months from now: how content is related, how it’s reused, how it scales as the business adds locations, services, and providers.
Build custom Sanity Studio configurations and input components where the default UI doesn’t serve the editorial workflow.
Write content migrations cleanly — no cowboy schema changes that break downstream consumers.
Build the frontend
Develop the Next.js frontend consuming Sanity’s GROQ API — with a deliberate ISR/SSR strategy, image optimization, and SEO fundamentals built in from the start, not bolted on later.
Translate design intent into clean, maintainable component code in TypeScript — you don’t need to be a designer, but you notice when spacing is wrong and you fix it.
Implement performance budgets and Core Web Vitals targets that matter for a service business where page speed is directly tied to conversion.
Own the deployment pipeline on Vercel — preview environments, CI checks, and rollback capability.
Build and maintain integrations
Connect the CMS to third-party booking and scheduling platforms — API-first, cleanlyabstracted, and resilient to the inevitable upstream changes.
Integrate any e-commerce or payment flows needed for service packages, gift cards, or memberships.
Build for failure: error handling, retry logic, and observability so issues surface before clients notices them.
Work independently and communicate clearly
Manage your own delivery — you’ll have context, goals, and access to stakeholders, not a Jira board of pre-scoped tickets.
Flag blockers early and propose solutions, not just problems. Async-first communication in English at a level that builds trust with non-technical stakeholders.
Document your architectural decisions so the codebase can be handed off, extended, or reviewed without a tribal knowledge transfer.
Who you are
A full stack developer who has shipped a production Sanity.io project — not a courseproject, not a portfolio piece that lives on localhost. A live URL you’re proud to share.
Someone who understands headless architecture at the decision level: you can explain why you chose GROQ over GraphQL, when to use ISR vs SSR, and how you’d structure a schema to support multi-location content without duplication.
Comfortable making calls when the spec is incomplete. You ask the right questions to close the ambiguity, then build — you don’t stall waiting for perfect requirements.
Experienced working remotely and offshore, which means you already know what good async communication looks like and why it matters more than timezone overlap.
Someone with enough UI sensibility to deliver work that looks intentional — even if design isn’t your primary skill.
Required qualifications
3+ years building full stack web applications in production environments.
Demonstrable, hands-on experience with Sanity.io — content modeling, GROQ queries, Studio customization. Contentful or Strapi experience is noted; Sanity is still the
requirement.
Strong Next.js and TypeScript — not “familiar with.” You use these daily and you have opinions about how to use them well.
Experience designing and building headless architectures end-to-end, not just consuming a CMS someone else configured.
Proven ability to work independently in a remote/offshore engagement — async communication, proactive status updates, self-managed delivery.
Upper-intermediate English proficiency or above, written and verbal.
Good to have
Experience integrating booking, scheduling, or e-commerce APIs in a service-based business context.
Exposure to healthcare, beauty, wellness, or any industry where trust and content accuracy are load-bearing.
Familiarity with Nuxt or Vue if Next.js isn’t your primary — we can flex on framework if the Sanity and headless depth is strong.
Experience setting up monitoring, alerting, or error tracking on Jamstack/serverless deployments.
- Locations
- Philippines, India
- Remote status
- Fully Remote
About Perform
Since 2005, Perform's engineers have been helping companies scale their apps and their teams. We were near-shoring before it was even a term and have worked with 100s of clients along the way.