How to Make a Serverless Solution for a Charity for $12* a Year

*and some free credits

Andy O'Sullivan
4 min readSep 3, 2021
Source

Last year myself and some other volunteers in our company built a new app with accompanying backend and website for the Inner City Helping Homeless charity in Dublin. Here’s a post from back then with some more details on the development & design journey. I recently however documented better the architecture itself for an interview and thought I’d share more on that now, in the hope that other tech folks may be inspired to try something similar for a worthy charity or organisation they know.

Like any well architected solution, what we’re interested in is:

  • Operational excellence — the solution requires minimal maintenance, good monitoring, and be easy to change / add features etc.
  • Security — goes without saying, but not always easy!
  • Reliability — the solution is needed 365 days a year.
  • Performance efficiency — must be quick and easy to use, regardless of increased usage or data.
  • Cost optimisation — again, kind of goes without saying, but this is especially true for a charity that is almost entirely volunteer-staffed and needs its spare money to provide their homeless services.

Serverless is the solution

About seven years ago I built an app & website for my kids’ school — and thought I was pretty cool deploying it on an EC2 server on AWS. Fast forward to 2021 and Serverless is the name of the game — low cost, scalable, quick and easy to develop with, it’s been a game changer for engineers and the businesses they support; and allows you to get as close to those well architected principals as you can. Our solution is entirely hosted on AWS (apart from the mobile apps) — UI, API, DB, some other AWS services, some 3rd party API integrations and two native mobile apps that consume the API.

Front-end UI

We went for a React site and hosted it on S3, fronted by Cloudfront and Route 53, with the SSL cert provided via Certificate Manager.

All cheap and not a server to maintain in sight.

API

For the API we went for a standard API Gateway approach, connected to several Lambdas, all of which are secured via an authoriser, so can only be called via an authenticated user.

Again, we’re not creating our own API from scratch — we’re using AWS services and taking advantage of their in-built security options.

DB and other backend services

The solution has a RDS database instance (no installation or maintenance needed), and uses several other AWS services such as the Simple Email Service; all of which are extremely cheap to run and easy to implement. We have a few 3rd party API integrations aswell, but these are all free based on usage tiers.

Native mobile apps

We also built native iOS and Android apps which connect via the API Gateway. The apps are basically free to run apart from the yearly Apple App Store fee.

Scalable

Since we launched the solution, we’ve added more features, such as a stock-taking capability — these were added easily by simply adding more Lambdas and related code. Any of the other tweaks or changes we carried were highly unlikely to impact other parts of the solution, thanks to the Serverless micro-service approach.

Total Cost

The grand total to run this solution each year is a massive $12 dollars. Yes, twelve dollars!

That’s for the domain name for the website — everything else either falls under service usage limits or totals small enough (about $40 a month) to be covered by some free AWS credits that we have!

Obviously we’re donating our engineering time for free, which is the main cost of any solution, but even so — a modern solution, with apps, website, API and backend all for a few dollars a year is remarkable, and shows that charities (or any company) can now have digital products / tools / services for much cheaper and easier than ever before.

So if you’re considering building a solution for a worthy organisation, it may make sense to also take a look at the Serverless approach.

If you’ve any thoughts or comments, just let me know below.

--

--