• Stars
    star
    132
  • Rank 274,205 (Top 6 %)
  • Language Vue
  • Created over 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tailwind UI Take-Home Test

Your task is to take the included design (design.fig, a Figma file) and build it with Tailwind and either React or Vue.

We've included two starter projects in this zip file:

  • A Next.js project (in the react folder)
  • A vue-cli project (in the vue folder)

You should only complete one of them — just pick the framework you know best and can be most productive in.

  • If you choose the React project, use npm run dev or yarn dev to spin up the dev server and start your work in react/pages/index.js
  • If you choose the Vue project, use npm run serve or yarn serve to spin up the dev server and start your work in vue/src/App.vue

We've included the @tailwindcss/ui plugin in both projects which provides an updated color palette for Tailwind (it's the one we use in Tailwind UI) and is the color palette we've used in the design. It also includes a lot of additional default values for other utilities, like an extended spacing scale, more top/right/bottom/left utilities, additional shadows, and more.

To see the extra values added by the plugin, take a look at the source here.

We've also preconfigured the Inter font family, since that's what we're using in the design.

The images used in the design have already been added to both test projects, under public/img.

The two SVG icons used in the design are in the icons folder.

What we're looking for

  • Attention to detail. Everything in the design matches a value in Tailwind (unless we've made a small off-by-a-pixel mistake here and there, which is possible!), so do your best to match it as closely as possible. This includes colors, font sizes, spacing, line-heights, etc. You can see all of the values in Figma's inspector (on the right hand side) when you select a given element. Whenever possible, we've used "styles" in Figma so it's easy to know what utilities the design maps to. For example, you'll see colors named things like Gray-500 which is gray-500 or shadows like shadow-sm which of course matches the shadow-sm class.
  • Make sure it's responsive. We've provided designs for every necessary breakpoint, so please make your implementation match the design at each breakpoint.
  • Make it interactive. Users should be able to select between the different images and see the preview image update, and the total price in the footer should reflect their chosen configuration options above.
  • Make your solution accessible. Make sure you are using semantic markup, and that your implementation of the interactive pieces is properly accessible (including keyboard navigation and ARIA attribute management).
  • Don't use native form controls. You could probably build this design using some hidden native form controls and label tricks if you tried hard enough, but that's not going to be possible for everything we ever build. For the purposes of this take home project, we want to see that you can build completely custom ARIA compliant controls when it's inevitably needed, so please use custom controls for this one even if you can think of a clever way to avoid it.
  • Build your components from scratch. Don't use any existing React or Vue UI libraries for the image picker or the configuration options.
  • Make the custom controls general purpose and reusable. They don't have to be completely universal or absolutely bullet-proof like something we'd spend a lot of time on if it were going to be an open-source library, but we'd love to at least get a sense of how you'd approach the overall API design if you were building these controls to be consumed by other people in different projects.

What we're not looking for

  • Don't worry about old browsers. You can use whatever modern features you like, like CSS Grid for example. We don't care if it's completely broken in IE 11.
  • You don't need to go crazy in terms of componentization. Extract components when it helps you maintain what would otherwise be annoying duplication, but don't break things apart needlessly. We just want to see that you can implement the design in a robust way with good HTML semantics, and that you can get all of the interactive pieces working properly. Aside from the custom interactive controls, build it as if it's literally a one-page website, not part of a bigger, more complex application where many of the components would be re-used. For example it's fine for the headline to be hard-coded into the template instead of imagining this as a page that could show any arbitrary product.
  • You don't need to create an API or anything. It's totally fine if any data you feed in to the page is just hard-coded fixture data, and you definitely don't need to do any backend work for handling the "Buy now" button in any way. Think of it more like something you'd throw on CodePen than as a real application.
  • You don't need to write tests. If they help you then sure go for it, but don't prioritize them over getting the design implemented and functioning if they would slow you down.

Demo walkthrough

We've included a little screencast that walks through my own version of the design so you can get a better sense for how some things are supposed to work that might be a little harder to capture in Figma. Make sure you watch the screencast before starting on your implementation.

There are a couple details in the screencast that don't quite match the Figma design, so if you notice any differences treat the Figma design as the source of truth.

Submitting your solution

Along with your actual code, put together a short README.md file for your solution that talks about any interesting things you ran into, decisions you made, etc. Think of it like a little postmortem just to talk through anything you found notable about the project. You can also use it as a place to explain any "I know this might look weird at first glance but hear me out..." sort of decisions you made.

When you're done, create a private repo on GitHub that just contains your project (so just the react or vue folder contents) and invite me to it (I'm adamwathan).

Once we've had a chance to review your submission we'll get back to you with next steps.

Thank you! ❤️

More Repositories

1

laracon2017

PHP
469
star
2

workcation

Vue
425
star
3

bootforms

Rapid form generation with Bootstrap 3 and Laravel.
PHP
419
star
4

vue-tailwind-examples

Vue
390
star
5

eloquent-oauth

Braindead simple social login with Laravel and Eloquent.
PHP
374
star
6

laravel-preset

PHP
277
star
7

sublime-phpunit

Run individual unit test files directly from Sublime
Python
276
star
8

theming-tailwind-demo

HTML
267
star
9

form

Super basic form HTML builder, only really exists so I can pull it in for some other more useful projects.
PHP
232
star
10

eloquent-oauth-l5

Eloquent OAuth service provider and assets for Laravel 5
PHP
214
star
11

vue-shopify-sortable-demo

HTML
113
star
12

fullstackradio.com

JavaScript
90
star
13

test-driven-laravel-from-scratch

PHP
81
star
14

tailwind-css-variable-text-opacity-demo

JavaScript
77
star
15

entypo-optimized

61
star
16

tailwindcss-dark-mode-prototype

JavaScript
58
star
17

workcation-theme-ui

JavaScript
38
star
18

vueconfto-demo

Vue
38
star
19

rebuilding-netlify

JavaScript
32
star
20

sublime-themes

Personal mods for ST themes I use
31
star
21

tailwind-animation-playground

HTML
27
star
22

laracon-madrid

The source code for my "Advanced Vue Component Design" at Laracon EU Madrid.
Vue
27
star
23

cra-tailwind-3

HTML
27
star
24

tailwind-jit-vite-example

Vue
25
star
25

tailwind-starter

CSS
24
star
26

rebuilding-allbirds-with-tailwindcss

JavaScript
24
star
27

laracon-2020

Vue
24
star
28

faktory

An attempt to bring the wonders of FactoryGirl to PHP.
PHP
22
star
29

rebuilding-transistor

JavaScript
22
star
30

tailwindcss-jit-next

JavaScript
17
star
31

tailwind-ui-navbar-react

JavaScript
16
star
32

nuxt-storybook

Vue
16
star
33

workcation-splash-page

HTML
15
star
34

vue-sidebar-layout

Vue
15
star
35

next10-tailwind

JavaScript
14
star
36

cra-tailwind-demo

JavaScript
12
star
37

next-nested-routing

JavaScript
12
star
38

laracon-online-2019

PHP
10
star
39

jit-vite-preact

TypeScript
9
star
40

nuxt-nested-layouts

Vue
9
star
41

tweeter-eu

PHP
8
star
42

tailwind-jit-cra-example

JavaScript
7
star
43

tailwind-cra-next

JavaScript
7
star
44

jit-postcss-demo

HTML
7
star
45

vue-rename-tailwind-config

JavaScript
7
star
46

activerest

ActiveRecord wrapper for REST APIs
PHP
7
star
47

headbangstagram

JavaScript
6
star
48

postcss8-tailwind

JavaScript
6
star
49

dotfiles

JavaScript
6
star
50

solid-tailwind-setup-example

JavaScript
5
star
51

tailwind-browserslist-test

HTML
5
star
52

tailwind-color-name-test

JavaScript
5
star
53

facktory

An attempt to bring the wonders of FactoryGirl to PHP
PHP
5
star
54

phxtailwindui

Elixir
4
star
55

tw3-cra-typescript-example

HTML
4
star
56

tw-devtools-perf

Vue
4
star
57

tailwind-color-function-demo

JavaScript
4
star
58

socialnorm

PHP
4
star
59

eloquent-oauth-l4

Eloquent OAuth service provider and assets for Laravel 4
PHP
4
star
60

tailwind-2-aspect-ratio

CSS
4
star
61

upgrade-config

JavaScript
4
star
62

next-cssnano-issue

CSS
3
star
63

sveltekit-forms-esm-demo

Svelte
3
star
64

at-apply-stuck

JavaScript
3
star
65

game-of-life

HTML
3
star
66

tailwind-plugin-color-extend-example

JavaScript
3
star
67

vite-issue-repro

Vue
3
star
68

micheltazartes

JavaScript
3
star
69

lets-refactor-zendcon

PHP
3
star
70

tailwindcss-i2369

JavaScript
2
star
71

tailwind-repro-8597

HTML
2
star
72

base-comment-delete-test

CSS
2
star
73

focus-visible-test

CSS
2
star
74

socialnorm-google

Google provider for SocialNorm
PHP
2
star
75

eloquent-oauth-example

Basic example Laravel app with minimal setup required for Eloquent OAuth
PHP
2
star
76

issue-10419

JavaScript
2
star
77

tailwind-repro-8661

CSS
2
star
78

vue-tailwind-library

Vue
1
star
79

thready-site

HTML
1
star
80

next-color-import-test

JavaScript
1
star
81

next-tailwind-hot-reload-issue

JavaScript
1
star
82

tw-postcss7-purge-test

CSS
1
star
83

tailwind-issue-7685

HTML
1
star
84

simple-design-ssphp16

PHP
1
star
85

vite-vue2-jit-issue

HTML
1
star
86

gulp-postcss-dependency-bug

JavaScript
1
star
87

vagrant-php

Just a little provisioning script and Vagrantfile, I'm sure I'll refine it over time.
Shell
1
star
88

parcel-2-postcss-dependency-bug

JavaScript
1
star
89

tailwindcss-forms-class-strategy-test

CSS
1
star
90

tw-postcss8-issue

JavaScript
1
star
91

eloquent-oauth-l5-example

PHP
1
star
92

larawedding

PHP
1
star
93

socialnorm-linkedin

LinkedIn provider for SocialNorm
PHP
1
star
94

postcss-normalize-bug

CSS
1
star
95

postcss-use-bug

JavaScript
1
star
96

vite-jsx-build-fail

Vue
1
star
97

turbopack-test

CSS
1
star
98

metamarkdown

PHP
1
star