Lead for Tobacco Control
Advocacy platform connecting policymakers and advocates with tobacco control resources.
TECH_STACK

The Problem: Scattered Advocacy Resources
The client is a non-profit focused on tobacco control policy. They had resources—policy briefs, case studies, legal documents, research papers—scattered across emails, shared folders, and old websites.
When advocates needed to find something specific (“What’s the legal precedent for banning flavored cigarettes in ASEAN?”), they had to dig through folders. When policymakers wanted to explore the evidence, there was no central place to look.
They needed a single, searchable, organized platform where anyone—policymakers, researchers, advocates, the public—could find what they needed.
The Solution: Simple Stack, Maximum SEO
This wasn’t a complicated project. It was straightforward:
- Build a website
- Let them manage content without touching code
- Make it searchable
- Make it fast
- Make sure Google found it
Tech Choices
Next.js + Strapi because:
- Next.js handles Server-Side Rendering (SSR) natively, which is crucial for SEO
- Static Site Generation (SSG) for performance—pages are pre-rendered, not generated on request
- Strapi CMS so non-technical staff could manage content (add documents, write descriptions, organize resources)
- Both are straightforward to deploy and maintain
Vercel for hosting because it’s built for Next.js. Deploy a git push, and you’re done. No servers to manage, no DevOps nightmares.
Heroku for Strapi because the CMS needed a simple backend. Cost wasn’t zero, but it was manageable for a non-profit.
The Design Challenge: No Designer
I built this solo. No designer. I had to design from scratch.
This meant making pragmatic choices:
- Clean typography (system fonts, good spacing)
- Clear information hierarchy (headings, sections, white space)
- Accessible colors (good contrast ratios)
- Mobile-first design (it has to work on phones)
No fancy animations or custom fonts. Just clarity. A non-profit advocacy site should feel trustworthy, not trendy.
For a solo developer without design training, the best approach is constraint: pick a simple color palette, use good spacing, and get out of the way.
How It Works
Content Management
The advocate team uses Strapi (the CMS) to:
- Upload policy documents, research papers, case studies
- Write summaries and metadata
- Tag documents by country, issue, type
- Publish immediately without code
Strapi handles the data. Next.js queries it, generates pages, and publishes to Vercel.
SEO-First Architecture
For an advocacy platform, being findable is everything. People need to discover these resources.
What we optimized:
- Meta descriptions on every page (Strapi stores them, Next.js renders them)
- Open Graph tags for sharing on social media
- Proper heading hierarchy (H1 for page title, H2 for sections)
- Alt text on all images
- Fast page load times (Vercel + Next.js handles this)
- Sitemaps and robots.txt for search engines
When a researcher searches “tobacco control flavoring ban,” they should find this site.
User Experience
The goal is simple:
- User lands on the site
- They search or browse by topic
- They find what they need
- They download the document or read the summary
No friction. No signup walls. No ads. Just resources.
Advocacy Resource Platform
Organized, searchable collection of tobacco control policy resources
Resource Library
Centralized documents, research, case studies
Search & Filter
Find resources by country, issue, document type
Resource Detail Pages
Summary, metadata, download links
SEO Optimization
Discoverable in search engines
Why This Stack Works: A Proven Pattern
This isn’t a one-off. Next.js + Strapi + Vercel is a proven pattern for content-rich platforms—especially for non-profits, advocacy organizations, and similar clients.
Here’s what makes it work:
Next.js for SEO Discoverability matters. A research site that doesn’t show up in Google is invisible. Next.js handles Server-Side Rendering (SSR) and Static Site Generation (SSG) natively, which search engines love. Your content ranks.
Strapi CMS for Autonomy Non-technical staff need to manage content without calling a developer. Strapi’s UI is clean enough that a non-profit team can upload documents, write descriptions, organize resources—all without touching code. This is critical. If your client has to phone you every time they add a resource, the project fails.
Vercel for Simplicity No servers to manage. No DevOps. Deploy by pushing to GitHub. This matters for smaller projects where you don’t want to babysit infrastructure. Every git commit automatically builds and deploys. Zero friction.
The Result A platform that:
- Ranks in search results (visitors find you)
- Is easy for non-technical users to manage (you’re not a bottleneck)
- Deploys automatically (zero friction)
- Performs well (fast load times matter for SEO)
The Outcome
The site is live. Advocates and policymakers use it to find tobacco control resources. The team manages it themselves—adding documents, updating content, organizing resources. No code required.
Google indexes it, so researchers searching for “tobacco control policy” find it.
For a solo developer building a content platform, this is a complete, production-ready solution. For non-profits or advocacy organizations, this is the approach that works.
Closing
Not every project needs to be complex. Sometimes the best solution is the simplest one that actually serves your users.
This setup proves that simple technology, well-executed, beats complex technology poorly applied.
If you’re building a content-rich platform for an advocacy organization, non-profit, or similar client, this is the pattern that works. Build it once, let non-technical teams manage it forever.
Centralized, searchable repository of tobacco control policy resources for advocates and policymakers.