Tech Stack
Here are the major components of the RadGrad tech stack, with reference materials and activities to help you come up to speed if necessary.
Becoming fluent with the RadGrad Tech Stack is Job Number One as a new RadGrad developer. For some new developers, it might require several weeks of working through the materials below before they are ready to actually start working on the RadGrad code base. That's totally OK: the time invested here will always pay off in higher efficiency and quality of work later on.
Discord
We use Discord as a primary communication mechanism. (During COVID, it has become our exclusive communication method!)
If you are not already a member of the RadGrad Discord server, please request an invite.
IntelliJ IDEA editor
We require all developers in the RadGrad Project to use the IntelliJ IDEA editor. Although you might prefer another editor, IntelliJ IDEA has a unique combination of features for Javascript, Typescript, and Meteor that make it better suited than any other editor for this project.
We understand that you might not like IntelliJ, but this is non-negotiable for participating in the RadGrad Project. We have prior experience with students using other editors "on the sly", only to have them run into problems and difficulties that resulted directly from them not using IntelliJ.
For general information on configuring IntelliJ, see the most recent version of the ICS 314 module on development environments.
We maintain our own IntelliJ Code Style file:
Right click on the above link to download the file to your computer. Then go to IntelliJ and click on Preferences | Editor | Coding Style. Click on the gear icon, then select "Import Scheme" to import this file as a new scheme (or update your previous version of this scheme.
Unix or Mac OS
It is problem-free to install and run Meteor on Unix or Mac OS. It is a significant hassle (but not impossible) to install and run Meteor on Windows. Even experienced Windows users sometimes find themselves struggling for weeks to get Meteor working without problems, while their counterparts on Unix or Mac are up and running in an hour.
If you must use Windows, one option is to use Windows 10 and then install Windows Subsystem for Linux, then run Meteor within it. For more information on WSL and Meteor, see Get up and running with Meteor in WSL2. For info on running IntelliJ within WSL, see Install IntelliJ on WSL.
GitHub and GitHub Desktop
We use git and GitHub to manage the codebase. If you are not familiar, please review:
Even if you consider yourself experienced with git, please use GitHub Desktop for this project. GitHub Desktop will prevent you from doing embarrassing things. It will be even more embarrassing if you do something embarrassing, and then we find out you ignored this instruction to use GitHub Desktop.
In the RadGrad project, we do not perform rebasing, or use submodules, or any git trickery.
You will be committing directly to the radgrad/radgrad2 repository. If you do not yet have write privileges, please ask Philip or Cam to grant you these permissions.
To assess your knowledge, please use GitHub Desktop to clone the radgrad/radgrad2 repo to your local computer.
Javascript
Javascript (Typescript) is the primary language used for development.
For information on Javascript, please review the following:
To assess your knowledge, you should be able to easily complete exercises such as:
- Jamba Juice 1 (and subsequent)
- UH Degree Data Manipulation
Typescript
RadGrad is actually written in the Typescript superset of Javascript. To come up to speed in Typescript, we recommend:
- Getting Started with Typescript
- Typescript for Javascript Programmers
- The Typescript Handbook
- Typescript Function Syntax
To assess your knowledge, just jump into RadGrad.
React and Semantic UI
RadGrad uses the Semantic UI CSS framework in combination with React. If you are not familiar, please review:
To assess your knowledge, please complete an exercise such as:
Uniforms
For form display, validation, and processing, we use Uniforms.
To assess your knowledge, complete the Digits application as indicated in the next section.
Meteor
By far the most complicated aspect of our tech stack is Meteor. If you have not used Meteor before, you have (at least) several weeks of background work to do to come up to speed prior to taking on RadGrad development.
Here is some background:
The following materials are particularly important:
Meteor: The Fundamentals (30 minutes), which provides a high level overview of Meteor and what makes it different from other web application frameworks.
The five screencasts associated with Meteor Application Template React (total 75 minutes) provide an overview of the basic structure of a Meteor application and best practices we employ.
The 35 minute screencast explaining meteor-example-form-react explains how to use Uniforms and React to create forms and populate the database with user information.
The two hours of screencasts explaining the BowFolios system provides a more "real world" example of Meteor, although still much less complicated than RadGrad.
Finally, don't forget that the authoritative source on Meteor is the Meteor Guide. It's worth spending an hour or two reading relevant sections of the Guide, including Application Structure, Collections and Schemas, Publications and Data Loading, and Methods.
To assess your knowledge, you should build the Digits system:
Issue Driven Project Management
We coordinate development using a process called Issue Driven Project Management (IDPM). To learn about it, please review:
Note that IDPM constrains: (a) the way issues are defined, created, and managed; (b) the way branches are defined, named, and managed, and (c) the way group members partition work.
To assess your knowledge, please review the: