Before I started work, I met with a business owner to understand his needs. After some questions and discussion, we’ve agreed. He needed a convincing business-card-style website with an offer that transforms a boat owner into a client. The website needs to look professional, work efficiently, display past repairs, and underline the long-term experience of the owner to achieve this goal.
Before I started designing, I had done some research. I visited many competitors’ websites - from local boatbuilders to yacht charters. I shared some links with the owner to recognize his aesthetic taste. Marine projects on Behance and Dribbble were also helpful. Using them, I’ve created an extensive mood board that I’ve been using during designing.
I started the design process by creating several drafts of sections and the renovations subpage. Then I fastly moved on to experimenting with fonts and colors. Based on drafts and experiments, I created some wireframes. I shared them with the entrepreneur. His decisions influenced the following work.
Knowing the structure of the pages, I started creating content. For every section, I made short text. Similarly, I’ve done the same for every chosen repair. It required constant contact with the business owner. I also helped him with choosing and editing photos. “People don’t read websites - they scan them” - I was guided by this principle during content creation. I wanted the user to recognize the business profile by skimming the headings. I was also creating content with keywords and SEO in mind.
People don’t read websites - they scan them.
For this project, I created a simple but formal design system. I divided it into five levels of Atomic Design. The base of every design system is typography and colors. I and the owner both liked classical font - Old Standard TT. I paired it with the simple, geometrical font - Questrial - for contrast. I think this combination emphasizes the owner’s love for classical items, his long-term experience, and the local character of the business.
The color palette consisted of grays, whites, and navy blue. It refers to the sea, yachts, and minimalism. The accessibility of a website is significant, so I tested the color contrast ratios.
Having design and content, I could start coding (actually, different project stages were intertwined, but I present everything sequentially). The website will be mostly static, won’t be often updated, and need to have good performance. Because of that, I’ve chosen Jamstack architecture.
Gatsby is one of the most feature-rich static site generators out there. It offers code and image optimization. There are many starters, themes, and plugins, which improve the speed of software development. I’ve started the project using the default starter. Then I added some plugins:
gatsby-source-filesystemfor handling local files.
gatsby-transformer-JSONto parse data from JSON files. It allows me to add new repairs easily in the future.
gatsby-plugin-sharpto transform images. It has a noticeable effect on website performance (especially on the subpage with repairs).
gatsby-plugin-helmetto add website meta tags. Important for SEO.
gatsby-plugin-styled-componentsfor styling react components.
- and few more
I’ve chosen mainly official and supported plugins. I also tried to add only the necessary ones.
Gatsby doesn’t support unit tests out of the box. I’ve added a config to be able to write them.
In the project, I used the framework
React Testing Library. It enforces good practices like finding elements by ARIA roles. There was not too much logic - usually covered by unit tests. But they were still helpful - I used them to test if the components rendered everything correctly.
Besides unit tests, I also created some e2e tests. To achieve that, I added
Cypress Testing Library. In this way, I unified searching for DOM elements. I simulated users’ behavior with e2e tests: scrolling through sections, clicking links, etc.
Cypress-axe library turned out to be very handy. It detected some problems with accessibility and helped me fix them.
I used Git as a version control system. I was formatting commits using Angular convention. Before every commit, the
husky package was starting git scripts. I put the whole codebase in the GitHub repository. I linked the repository with Netlify.
Netlify is a platform that combines CDN, serverless functions, and build automation. It works well with Git and improves implementation time. I saved some time not worrying too much about DevOps configuration. The free plan is enough for a new website that won’t have too many visitors. The lack of additional hosting costs is beneficial for a small, local business. After linking Netlify to the repository, I launched continuous integration. Then I configured DNS servers and set personalized domain.
The effect of my work is a minimalistic, responsive, aesthetic, and performant website that scores high in lighthouse audits.