Adventures in Learning Full Stack Web Development

Theodora: Starting an Open Source Project

2018.06.28

I’m building an open source rails app aimed at empowering nonprofits to efficiently manage government grants. It’s called Theodora 👑. Large nonprofits often have a structure where one adminstrative organization distributes grant funds across multiple smaller nonprofits. This structure is (sort of) similar to how fast food 🍔 chain businesses are affiliates of a central corporate office.

This post will share the steps I took toward creating Theodora as an open source project. Here is an overview of each step I will discuss:

  • Determine the Goal
  • Determine the Stack
  • Determine the Architecture
  • Sketch the Idea
  • Create a Wireframe
  • Use Zenhub

Determine the Goal

Theodora will allow an adminstrative office to manage documents for each local nonprofit through a single app. Without this app, documents would have to be sent through email, resulting in multiple attachments. Sending and receiving information through email attachments creates room for human error (forgetting an attachment 😱, receiving attachments over multiple emails, etc.).

Theodora aims to solve this problem by providing one place to upload and submit all documents. In the future, I would like to add the ability to create document templates, so that users fill out forms instead of uploading Word or Excel documents. Log in

Determine the Stack

Ruby on Rails is an opinionated framework that will allow me to set up the application quickly. There is a large community of Rails developers to learn from, as well a sea of libraries to choose from when building out features. For the MVP, there isn’t a need to use a JavaScript framework for the frontend. As I build out more interactive features in the future, I plan to use React.

Log in

Determine the Architecture

Because each local nonprofit will need to log in to upload, edit, and submit documents, Theodora will be a multi-tenant Software as a Service (SaaS) application. Multi-tenancy means that multiple administrative organizations can employ the same application. This way, developers only need to maintain one code base while offering the same service multiple to organizations. For Theodora, administrative organizations will be the “tenants” and the local nonprofits will be the “users”.

Sketch the Idea

To get started, I sketched out the Minimum Viable Product (MVP). My goal was to quickly draw out my ideas, so that I can easily build out a more detailed wireframe.

sketch

Create a Wireframe

Next, I created a wireframe using Balsamiq. I chose Balsamiq because I could use the free trial, and it was easy to use.

Note: If you want to export your wireframe to PDF and PNG, Balsamiq creates a low quality document. There are other tools, like Sketch,that allow you to quickly build web and mobile wireframes and also export high quality documents.

I used Balsamiq to formulate this plan:

Prompt user to log in either manually or through Google. Log in If the user clicks sign up, have user sign up and ensure they choose an organization. Signing up immediately logs in the user. Sign Up Once user is logged in, show them a custom organization page where they can upload documents. If all documents are uploaded, user can submit documents.

Organization Page

After user submits documents, show a confirmation message, as well a link to ask the administrator questions.

Confirmation

Use Zenhub

With a plan for the MVP, I could easily begin developing with a clear goal in mind. I created a repository for Theodora in Github and created a ZenHub Board to visualize the workflow and allow others folks to contribute to issues. I’ve already had one person submit a pull request!

workflow

Next Steps

At this point, it’s time to start researching and coding. I hope this post will perhaps inspire others to collaborate on the project. Stay tuned for a new post on building out multi-tenancy in Rails, and feel free to reach out if you are interested in learning more.