See the three codepens associated with this lesson, broken up in stages: Part 1 Part 2 Part 3
Part 1 Part 2 Part 3