Skip to content

Frontend Stacks

Any application with a frontend benefits from the recommendations in this article.

There are three main CSS frameworks to choose from: Bootstrap, Tailwind, and the NU department templates:

PackageLanguagePurpose
Bootstrap 5SCSSGeneral purpose UI toolkit
Tailwind CSSCSSBespoke website design
Northwestern Department TemplatesSCSSOfficial NU theme

Bootstrap is a good ‘default’ choice for an application: it provides many ready-made UI elements, which will be consistent across all of our Bootstrap applications.

The NU department templates have a smaller number of UI components available, but will yield a look similar to northwestern.edu.

Tailwind should only be chosen for bespoke designs. For example, the alumni dev team used Tailwind to replicate designs provided by the Alumni Relations & Development marketing group. Replicating those precise mockup designs in Bootstrap would have been impossible.

There are a number of frontend JavaScript frameworks available.

PackageLanguagePurpose
NoneJSSimple apps may not need a framework
VueJSApplication framework
jQueryJSBuilding rich UIs
LivewireLaravel (PHP)Rich UI w/out writing JavaScript, but depends on AJAX/server round-trips
AlpineJSJSRich UIs, all client-side, with tight integration into Livewire

If your frontend needs are simple, consider vanilla JavaScript. A few form field dependencies or a single AJAX call likely do not merit bringing an entire framework into your frontend.

When your needs are more complex, Vue is the framework of choice. Vue is the recommendation for single-page applications (SPAs).

When working with our Laravel stack, Livewire is the “frontend” framework of choice, despite being a backend component.

The use of jQuery in your application should be phased out.

jQuery served an important role as a cross-browser adapter & enhancement to what JavaScript functions were available to developers. In this current era, browser support for JavaScript language features is consistent, and enhancements have been made to the language that make many of jQuery’s features redundant. This change will be reflected by Bootstrap in the upcoming v5 release.

There may still be UI components that depend on jQuery. Many of the Bootstrap 4-themed UI components (like bootstrap-select) rely on jQuery. This is a reasonable design choice for them in the Bootstrap 4 era, since Bootstrap itself depends on jQuery. Bootstrap 5 no longer depends on jQuery, so most of these components have stopped working with it.

These are ready-made UI widgets like form controls.

PackageTypePurpose
AutoNumericVanilla JSImproved number input for forms, esp. for money
DataTables.netjQueryRich table UI w/ AJAX support
bootstrap-datepickerjQueryDate field w/ calendar pop-up
bootstrap-selectjQueryFilterable <select> w/ great multiple support
TinyMCEVanilla JSRich text editor
Font AwesomeCSSIcons