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
- Validated - User input should be validated for obvious errors such as invalid phone numbers or email addresses. All data should be normalized wherever possible to provide for a consistent look and feel.
- User-friendly - Since the userbase is largely volunteers, the application must be easy to pick up and use; users may be cycled in and out frequently.
- Secure - The application by nature stores a wealth of personal information. This data must be secure at rest and in transit.
- Auditable - The application must record all actions taken by users and by automatic processes in order to be audited by adminstrators. The family data must be accessible en mass in a grid-like format.
- Extensible - The entire system must be configurable and well-documented. This application will likely be extended upon by several individuals throughout its lifetime.
Features
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 - 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 - Roles supply a user's default permissions. Administrators can configure these role permissions and add or remove permissions per user.
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.
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.