Drawing 02.7, nonprofit site and back office
Journey to Jericho
The site and back office for a faith-based mentorship ministry in Columbia, Tennessee that fathers the fatherless through the work of a motor shop: the mission, a formation track, mentor and volunteer applications, events, and giving.
| No. | Part | What it does here |
|---|---|---|
| 1 | Browser | Visitors read the mission, apply to mentor or volunteer, subscribe, and give; staff run the admin. |
| 2 | Prerendered site | React and Vite, rendered to HTML per route at build and synced to S3 on each release. |
| 3 | CloudFront | One host: the site from S3, and the API and admin to the Rails function. |
| 4 | Rails 8 on Lambda | API and admin: forms, events and posters, Stripe giving, and donor accounts. |
| 5 | Neon Postgres | Submissions, people, events, gifts, and a record of every email sent. |
| 6 | SQS jobs | A queue and a Lambda that send receipts and notifications and settle Stripe events after the request returns. |
| 7 | SendGrid | Notifications, receipts, the newsletter welcome, and gift confirmations. |
Why it exists
A ministry a few minutes from my own shop needed a front door that could carry a heavy mission without feeling heavy, and a back office that answers every person who steps in. Patrick Taylor leads this build; I worked on the parts people feel first.
How it is built
The public site is React and Vite, rendered to real HTML for every route at build and served from S3 behind CloudFront. The same CloudFront host sends the API and the admin to a Rails 8 app running on Lambda, which holds the forms, events and their posters, Stripe giving (one-time and recurring), and donor accounts that sign in by emailed link or code.
Nothing slow happens inside a request. A submission is saved, then a job on SQS sends the receipts and notifications through SendGrid and records the person in the ministry's own contact history. A nightly job lays out the coming weeks of recurring events.
What it does
- The mission and a seven-pillar formation track
- Mentor, mentee, volunteer, and contact applications
- Events kept in an admin, with posters
- One-time and recurring gifts through Stripe
- Donor accounts with giving history
Plates
