TLDR: I built GiantCheck - a tool that lets people, charities, and organizations customize and print a full-size ceremonial check for banquets, fundraisers, and other “big check” moments. Design it in the browser, pay with Stripe, get a print-ready file to take to Staples or OfficeMax for large-format printing. Started the repo July 11th, with most of the real build happening in the final week. Built with React, SST v3, and Stripe.
The Spark
I didn’t set out to solve a burning problem. I set out to answer a question: how quickly can I go from empty repo to a real, functioning, revenue-capable web app?
Not a demo. Not a prototype that fakes payment. An actual product someone could use today - design something, pay for it, get a file, print it.
GiantCheck was the vehicle for that experiment. The idea itself is a bit of a publicity stunt by design: those oversized novelty checks you see handed over at charity events, sweepstakes announcements, and banquet ceremonies. Someone always needs one, nobody has a good way to make one, and the output doesn’t need to be complicated - it needs to look right blown up to poster size and be easy to get printed.
What I Built
GiantCheck lets you customize a full-size check design in the browser - payee, amount, memo, signature, branding - and export it as a print-ready digital file. Take that file to Staples, OfficeMax, or any large-format print shop and you’ve got your giant check for the ceremony, the banquet, the big reveal photo.
The flow is intentionally simple:
- Design in the browser - fill in the details, see the check render live
- Pay with Stripe Checkout - one-time purchase, no account required
- Download the file - a print-ready design delivered straight to your inbox
No login, no dashboard, no subscription. You need this once, maybe twice a year, and the product respects that.
Technical Choices
Frontend is React + TypeScript on Vite, styled with Tailwind and Radix UI (via Ark UI), with Framer Motion handling the animation layer. PostHog is wired in for analytics.
Backend is TypeScript on AWS Lambda, deployed through SST v3 (Ion), sitting behind an API Gateway HTTP API. Design files live in S3, served through CloudFront, which also fronts the static site.
Payments run through Stripe - Checkout Sessions plus webhooks to trigger fulfillment - with Resend sending the post-purchase download email.
Deploy is SST on AWS, with pnpm for package management.
None of these are exotic choices individually. What stood out was how they compounded.
SST Velocity: GiantCheck vs. Next.js Projects
The one real anecdote worth sharing: building and deploying this with SST was noticeably faster than my other recent projects on the same stack - Email Bits and The Early Days - both of which pair SST with Next.js.
A plain React SPA on Vite, deployed via SST straight to S3/CloudFront with Lambda functions behind API Gateway, has a much shorter path from sst deploy to a working URL than a Next.js app on SST, which has to negotiate SSR, routing, and Next’s own build output on top of the SST deploy pipeline. For a project scoped around “how fast can I ship,” dropping Next.js and going back to a plain SPA + API Gateway was the single biggest velocity unlock.
Current State
GiantCheck is live at giantcheck.me, accepting real payments through Stripe. Started July 11th, with the bulk of the feature work - Stripe integration, the export pipeline, the actual polish - landing in the final week before shipping.
The bigger takeaway isn’t the check generator itself, it’s the stack lesson: when speed is the goal, match the framework to the actual requirements of the app instead of defaulting to the same tool every time. A static-ish SPA didn’t need Next.js, and skipping it saved real time.
If you need a giant check for your next fundraiser, banquet, or big-reveal moment, check out giantcheck.me.
Related Posts
- What is Cabeça de Queijo?Learn more about why I started and the tech stack behind Cabeça de Queijo - a Brazilian Green Bay Packers fan club based in Sao Paulo, Brazil.12/27/2023
- Reflecting on Buildspace Nights & Weekends | season 542 Days - Start to Finish for the Final _buildspace season - In Short Pod - A Way to Curate & Create a Hyper-Personalized Podcast.7/29/2024
- How to add Puppeteer to an AWS Lambda functionAWS isn't always straight forward. Here's a brief guide to adding a Lambda Layer with Puppeteer + Chromium to an AWS Lambda function execution environment8/25/2024