Rudolph logo

Rudolph

Capstone web app

Rudolph aids the United Way of York County in distributing gifts to underprivileged families in York and Rock Hill in South Carolina.It is a web application for managing family registration and process tracking from sign-up to gift hand - off and includes a server solution for hosting.

Web applicationC#

Requirements

The primary goal is to store and retrieve family information so that the United Way can prepare gift packages for families in need and track their status from registration to pickup. There are

Features

Responsive controls

Responsive controls - Input is validated as the user types and inapplicable options are hidden or disabled. Errors are presented in a clear, descriptive manner.


Templated reports

Templated reports - Data reports can be generated on command, and users can save report presets for reusable templates. Queryable data tables allow for granular searches.


Permissions management

Permissions management - Roles supply a user's default permissions. Administrators can configure these role permissions and add or remove permissions per user.


QR code

Logistically minded - Pickup reports can be generated for families whose gifts are ready for distribution. Handoff can be confirmed by scanning the QR code on the printable form (no sign-in required) or through the pickup report page. Family IDs are designed to work with the existing procedures at United Way, such as physical layout in the warehouse.


FOSS logos

Built on FOSS - Rather than reinvent the wheel, Rudolph implements many existing FOSS projects such as ASPNET Core, MariaDB, fail2ban, and Bootstrap. By using established projects that have been scrutinized and developed for years, we can expect the application to have better security and to adhere to accepted practices.


Hosting

The application and database are hosted on a virtual private server running Ubuntu Server 19.10 LTS. This cloud-based virtual machine allows United Way to power down the entire stack during the offseason should they choose, while also providing a low-cost, high-performance hosting solution. Containing all the functionality in one machine further reduces cost and simplifies the setup and teardown procedures.
The host implements a number of security practices such as fail2ban protection for all open services, Canonical LivePatch for automated updates without restarts, strict firewall rules, and Digital Ocean's monitoring agent which is configured to ping the United Way's tech team should something go wrong. There are cron jobs for scheduled tasks like database cleansing.
The one application feature that our host does not handle is delivering emails. For that, we opted for the easy-to-use, low-cost flex service from Mailgun. The application makes web API calls to the Mailgun servers, allowing us to completely ditch MX records, reputation, and all the other baggage that email carries after sixty years of expansion.

Timeline

Rudolph was developed in my senior capstone. The fall semester included drawing up requirements documents and establishing base design; final requirements were accepted in mid-December. This process included many revisions and meetings with the client over requirements documents and UI mockups.
The spring semester was centered around implementing the application. We conducted development incrementally, beginning with unstyled pages and sparse database services. Throughout the semester we unified the styling, added usability indicators and a help section, and integrated the existing ASP.NET Core systems for authorization and authentication.
The application deliverable was submitted in early May. It encompassed the web app source code repository (including the complete user's guide accessible from within the app), a repository of all modifications made to the bare Ubuntu Server 19.10 LTS installation, a thirty-page system administrator document, and the application and server themselves in a live production environment.

Project type: Web application

Written in: Blazor Server-side (C#)

Dependencies: Requires MariaDB server for data storage; ASP.NET Core-hosted

Purpose: Senior capstone.