Optimizing a Non-Profit’s Approach to the Cloud

|

Introduction

I recently had the privilege of working with The Wenham House, a local non-profit dedicated to helping men struggling with addiction. Through personal connections, I learned that the program director wanted to modernize the organization’s online presence, as well as reduce costs. Eagerly, I consulted with him and offered my services, free of charge. These were the specifications for the project that he provided:

  1. Create a portal for applicants to apply to the program
  2. Modernize the website
  3. Reduce hosting costs

For some additional context, the organization at the time did not have any such portal, and was paying approximately $40 a month for web hosting through GoDaddy Website Builder. Amidst other services, such as a provided SSL certificate and advanced security, the organization was paying a costly annual fee as well. I knew I could drastically reduce these prices and deliver a better product.

Part 1: Redesigning the Website

Given my past work with WordPress, I quickly got to work with creating a site with Kubio, a WordPress AI-driven template. This part was done relatively quickly, with the program director outlying what he wanted on the website. I made sure to organize such data accordingly, and used my graphical design skills and web development experience to create a beautiful design.

I hosted the WordPress site on AWS Lightsail by configuring the Linux server to install WordPress on Apache. In all, monthly costs for hosting the website is now approximately $5 a month.

Here is what the finished product looked like:

Part 2: Applicant Portal

The next challenge of the project was to create a portal for applicants to apply to the program. The director wanted people interested to answer some basic information, as well as submit a short questionnaire. I used React to design an app.

Here is that app’s design:

Next, to handle the submitted data, I create a lambda function that receives the applicant’s information. Upon receiving the data, the function calls on a method that uses SMTP to send an email to the director that contains the new applicant’s information. The method also sends an additional email to the applicant to confirm their application.

Following that logic, it then passes the data into a .txt file, and uploads it to an S3 Bucket. Instead of using a traditional SQL database, I figured an S3 bucket would further reduce costs and be able to handle the load given the small amount of traffic expected. DynamoDB was an option I considered as well, but using the S3 bucket as a semi-database would lower costs even more.

I hosted the React App as a static site from an S3 bucket, and configured the domain’s DNS settings to ensure the app was listed as a subdomain of the main domain.

Part 3: Administrator Portal

In case the director missed the email with the new applicant’s information, I wanted a location to exist that listed all of the applicants. I created an additional React app to achieve this goal, hosted similarly to how the applicant portal is (described in Part 2). Another lambda function was necessary , which received credentials from the admin portal to securely authorize the director. Once authorized, the function fetched data from the S3 bucket and sent it back to the web page.

Concluding Notes

In all, I had a positive experience working with The Wenham House. The services provided by Amazon besides lightsail cost pennies on the dollar. Additionally, rather than purchase a SSL certificate, I used Let’s Encrypt to obtain a free certificate for the website. For those interested, the website can be found at https://thewenhamhouse.org, and the application portal at https://apply.thewenhamhouse.org. I am very grateful to put my skills to practical use, and the kindness of The Wenham House!

Leave a Reply

Your email address will not be published. Required fields are marked *