Current technology* used in UCLA’s form engine:
- WordPress, Shibboleth single-sign-on — environment & security.
- Backbone.js with Marionette—front end.
- Client-side MVC, Web API in ASP.NET MVC (incl. MediaTypeFormatter, MS SQL, Entity Framework, exporting JSON) — backend.
- Redis NoSQL DB — for workflow.
- Typeform (not deployed in final engine) — to do early prototypes of each form, to proof logic, refine language, and do initial usability studies.
Student records are stored in multiple legacy databases (we’re talking early 13th century databases). A few consequences from this: 1. It meant that data wasn’t crystal clear when we started. 2. No matter what, we’d be doing a ton of conversion work converting all-caps no special character parameters into student-readable parameters. 3. We simply couldn’t ping three legacy databases without our users waiting around staring at spinning beachballs. and 4. One of the three legacy systems is end-of-lived—with an impending upgrade/port in the works, so we couldn’t count on at least one of them being the same for long.
So we hunted down only the data points required by our eligibility check, collected them into a secure modern database that’s optimized for our engine. So far it’s proving so fast (in our pilot form) that for a student’s secure request to ping our db AND THEN to determine eligibility AND THEN present a student with a form (or with reason ineligible) it takes less time than it used to take that student to load the original PDF form.
* I say current technology up at the top because the team is finding that Backbone with Marionette keeps putting limits on and making cumbersome our prototyping speed and ease of deployment. Feels like a lot of jury-rigging to display anything that isn’t basic. Since we built as MVC, switching out the display end isn’t as daunting as it might seem. Currently considering either Google’s AngularJS (w/ Node.js) or Facebook’s React. Thoughts or recommendations if you have experience with either of these? Be glad to hear them here or on twitter.