Church volunteers were creating event posters in Word or basic image editors, producing inconsistent, unprofessional-looking flyers. Canva was suggested, but the account requirement and learning curve were barriers for older volunteers.
A zero-account, zero-installation browser tool with five distinct poster template designs (Radiant, Cathedral, Harvest, Herald, Dawn), a mood-based template router, and an AI button powered by Claude that suggests a template from a natural language event description. Volunteers fill in the form, upload a photo, and export. All images are converted to base64 data URLs on upload to avoid CORS failures in html2canvas.
Volunteers of all ages produce consistently branded posters in under five minutes. The church's printed materials have a unified visual identity for the first time.
$ list features
# 5 features found
Radiant (navy band, modern), Cathedral (jewel tones, diagonal geometry, gold #F0C040), Harvest (terracotta, botanical), Herald (typographic broadsheet, spot red), Dawn (sky-to-blush gradient, airy). A mood-based router also handles aliases like festive, reverent, and welcoming.
claudeService.ts accepts a natural language event description and suggests the matching template mood and accent colour, so a volunteer who types "joyful Easter celebration" gets the Dawn template suggested automatically.
makeN(W) scales all layout dimensions proportionally from the A4 base (595px). Switching from A4 to A3 or A5 maintains identical visual proportions across formats.
html2canvas captures the poster at scale:2 for retina-quality output. jsPDF embeds the canvas as a print-ready A4/A5/A3 PDF. PNG export via canvas.toDataURL targets social media and screen use.
react-dropzone converts images to base64 data URLs immediately on drop via FileReader.readAsDataURL. Templates receive data URLs, html2canvas never makes cross-origin requests.
$ npm list --depth=0
$ git log --oneline
$ debug --issues
LET'S BUILD SOMETHING TOGETHER
I'm always open to discussing new projects, partnerships, or just a good idea.