Designing Learn JavaScript’s course portal (Part 3)

4th Mar 2020

This is the third article in the Learn JavaScript design series. Today, I’ll talk about how I built the Account and Component Page.

Account page

I gave each student a default password. I want to let them change their password, so I created the Account page.

The account page.

There’s only one important activity here: The changing of passwords.

You need three fields to change passwords:

  1. The old password
  2. The new password
  3. Confirmation for the new password

We can put the fields in a single column.

Password fields in a single column.

This works on mobile, but it looks weird on desktop; there’s too much whitespace on the right.

I tried to reduce the awkwardness by reducing the whitespace. I did this by creating a two-column grid in the form. Labels on the left, fields on the right.

Labes on the left, fields on the right.

It looks much better than before, but there’s still room for improvement.

Here each label looks disjointed from their respective fields. This happens because the whitespace between labels and fields are quite large.

According to proximity rule, related fields should be close to each other. The easiest way to do this is to right-align the labels.

Aligned labels to the right.

This looks better, but it’s still weird. Why? It looks weird because the button is full-width. It’s not aligned to anything (on the left edge).

Since a “button” is kinda like a “field”, we can align it like a field.

Aligned buttons to the right.

This looks better since the entire form looks well aligned.

Components page

There are 20 components in Learn JavaScript. Students progress through the course like this:

  1. Learn concepts
  2. Build simple components
  3. Learn more complicated concepts
  4. Improve the things they built (plus build more things)

This means a single component can be separated into different modules. For example, the simplest component, an off-canvas menu, is separated into 4 modules.

  1. Module 3: Building simple components
  2. Module 7: Animations
  3. Module 15: Keyboard
  4. Module 16: Accessibility

Students may want to go through the lessons for one component in sequence, so I created a Components page.

I could build this page like the Content page (with a list), but it’s not enough. Each lesson comes with starter files and source code. I want to allow students to download these files easily too.

So I chose to go with a table instead. Here’s what it looks like:

Example of a table of lessons for each component. It contains three columns: Lesson, starter files, source code.

That’s it!

Ending thoughts

I hope this series helped you learn to think more about design.

I hesitate to write this series because I feel my design skills still not refined. I feel that there are things I can improve in, but I’m not sure what.

I’m always on the lookout to improve my design skills though. Please let me know if you have any thoughts or suggestions!

If you enjoyed this article, please tell a friend about it! Share it on Twitter. If you spot a typo, I’d appreciate if you can correct it on GitHub. Thank you!

Other articles in this series

  1. Designing Learn JavaScript’s course portal
  2. Designing Learn JavaScript’s course portal (Part 2)
  3. Designing Learn JavaScript's course portal (Part 3)

Hold on while i sign you up…

Woohoo! You’re in!
Now, hold on while I redirect you.