Home

Awesome

Huckleberry Agency Website

In this workshop, you'll build a minimal landing page for an agency.

This mockup is built entirely using flow layout: no Flexbox, no grid, no absolute positioning. It relies heavily on padding, margin, and border.

Mockups

Desktop:

<img alt="Desktop-sized screenshot of an agency landing page" src="./docs/huckleberry-desktop.png" style="" />

Tablet:

<img alt="Desktop-sized screenshot of an agency landing page" src="./docs/huckleberry-tablet.png" style="max-width: 400px;" />

Mobile:

<img alt="Desktop-sized screenshot of an agency landing page" src="./docs/huckleberry-mobile.png" style="max-width: 300px;" />

Setup Instructions

This project uses an NPM package called "live-server" — it provides a basic local file server, so that you can view the HTML file in-browser, and automatically reloads the page when the HTML/CSS changes.

Start by installing dependencies:

npm install

Run the "start" script to start the server:

npm run start

You should see a confirmation message like this:

Screenshot of a terminal, showing a server running at http://localhost:5000

You can visit http://localhost:5000 to view the page. You should see a bunch of unstyled content:

Screenshot of an unstyled page with a couple headings and some paragraphs

Trouble with this process?

Because this project is vanilla HTML and CSS, you can always open the HTML file in your browser, without fussing with a local file server.

Certain JS APIs won't work when viewing files in this way, but that isn't a concern for this project.


Getting Started Notes

Desktop mockup with a vertical line showing alignment

That said: Don't worry if you can't create a pixel-perfect recreation. In the solution video, I'll show you exactly how I did it. Spend an hour or so on this project, and submit whatever you have at that point.

Design tokens

In the early days of the web, sites would be built largely on "feel". Colors and sizes would be chosen based on the whims of the moment. This led to some very inconsistent-looking websites!

Nowadays, it's common to have a set of design tokens. A design token is a value that can be reused. Typically it's part of a collection or a scale.

We'll learn more about this idea later, but for now, you can copy/paste the values from this list as-needed. Don't worry about being DRY or using variables; Plop these values in, wherever you need them.

If you find it difficult to use these tokens, or if you're not able to achieve a result you're happy with, don't worry about it. Solve it however you can, and then watch the solution video to see how I did it.

Spacing

This app uses an 8px unit. All spaces are a multiple of 8px:

When it comes to max widths (eg. the maximum width of the card), arbitrary values can be used.

Font

1 font is used in this project: Lato. It is already included in the stylesheet.

For font sizes, the rem unit should be used.

The scale is:

Because the base font size is 18px, this works out in pixels to:

Color palette

Primary (green):

Secondary (gold):

Grays:

What the HSL?

You may be more familiar with color values in hexadecimal format, like #FF0000. In Module 0's "color" lesson, we go over what HSL color is and how it works. If you haven't already, it's worth reviewing before getting started!

Submissions

Workshops are submitted through the course platform. Commit your changes, push them to your fork, and submit the link by clicking the "Complete lesson" button on the workshop page.

If you're not comfortable with Git, you can upload a .zip file using Dropbox or Google Drive, and paste a link to the public file instead.