A collection of my overviews on various topics relevant to CS 394.

Team Tools

Most of the links on this page about about software development, but the primary focus of the course is team development. So the first link is about some simple tools for detecting possible team development issues. We use these to start discussion in coaching.

Git and Github

JavaScript

A prerequisite to good React coding is a solid understanding of modern functionally-oriented JavaScript programming.

TypeScript

TypeScript has become the professional version of JavaScript. The modest amount of extra time needed to define interfaces for functions and components is quickly made up in the number of dumb mistakes that are caught at edit-time rather than at run-time. Thanks to improvments in type inferencing, most TypeScript code looks just like untyped JavaScript code.

Tailwind CSS

Styling is essential for React apps to look and feel like native apps. In React, styles are typically included in component code. An increasingly popular library for doing this is Tailwind CSS. The example code on this site use Tailwind version 4, released in January 2025.

React

React is one of the baseline technologies for this course. It is very popular, very helpful for quickly building robust interactive single-page apps, and good to have on your resume.

I use the following React tutorial for my courses.

  • Quick, React! -- This is a sequence of coding challenges that introduces the most critical tools you'll need, including using Firebase to handle hosting, authentication, and a cloud database.

Here are some useful React resources:

Firebase

Quite often, apps will need a central place to keep data. While you can create your own server to do this, that means you have to maintain a stable host that's easily deployed to. A regular web server, e.g., PHP, is not really appropriate since you don't want HTML pages, you want data.

The current best free option is Firebase, which provides free accounts with decent quotas, with services for hosting React pages, authentication, and data storage. For data, we mostly use the Realtime Database. It's easy to get started and works well with structured data, like users, messages, scores, and such.

Debugging React Apps

Testing

As your app becomes more complex, the odds become higher that new code will break somethinng that used to work. Such breakage is called regression. Manually testing that all the functionality of your app becomes harder and harder. The answer is to automate this testing with a testing framework.

Unit testing

End to end testing

Cypress is an end-to-end testing framework. Where React library unit tests call React code to test what is generated, Cypress tests use a browser engine to interact with your web app running a server, just as a user does.

Continuous Integration

Once you have automated test suites it's worth setting up continuous integration and deployment (CI/CD) to automate the process of building, testing, and deploying an application every time the main repository is updated.

© 2025 Chris Riesbeck
Template design by Andreas Viklund