The PCB's are designed with KiCAD. This is an open source PCB/schematics editor that is solid and flexible enough to allow us to design our PCB's.
For each PCB there is a separate KiCAD project in our github SmartClassroom Arduino repository in the schematics folder. A good source for documentation on using KiCAD can be found on their website.
JustĀ few pointers:
KiCAD uses components in the electrical schematic that is just a representation of the component with all it pins. It doesn't resemble the real world physical component. After designing the schematic, each component in it needs to be linked to a "footprint". This is the important part because that should exactly match the shape/dimensions/spacing/etc of your real world component where it connects to the circuit board. There are tons of existing components out there, like for instance the ones made by Sparkfun and the official libraries from KiCAD themselves, but finding the right one is sometimes hard.
Some components may not be available at all in existing libaries. In that case you need to make your own. We made a few, like for the 3.3V 12V to 3.3V DC circuit board. All our own components and footprints are in our github repository as well.
To order the PCB's, we use JLCPCB. You need to create Gerber and Drill files to send to them. They can use those files to make the PCB's. It is important to use the right settings for this, so JLCPCB documented this. One small change from their docs is that we generally do not plot the values on the PCB. It is not incredibly important, but makes for a less cluttered PCB.