How to Design a Good-Looking App Without a Designer
Estimated read time: 8 min

TLDR
- Steal structure, not pixels: browse Mobbin and Land-book for real app and landing-page layouts, then copy the order and arrangement of sections.
- Let components carry the look: shadcn/ui is free and open source; Tailwind Plus is a one-time $299 for 500+ prebuilt blocks.
- Three rules fix most ugly: space everything on an 8-point grid, use one font on a fixed size scale, and pick neutral colors plus a single accent.
- AI drafts the first screen: v0 turns a prompt into shadcn plus Tailwind code you can keep editing.
- Taste is a checklist, not a talent. Run the one at the bottom before you ship.
You do not need to be a designer to ship something that looks professional. Most bad-looking apps are not bad because the builder lacked artistic talent. They look off because of a handful of fixable mistakes: inconsistent spacing, too many fonts, muddy colors, and layouts invented from scratch. Fix those and you clear the bar of "looks like a real product," which is all most founders actually need.
Adam Wathan, the creator of Tailwind CSS, built the entire premise of Refactoring UI on this idea. He describes himself as a developer who "used to suck at design" until he learned that good UI is mostly a set of repeatable rules, not innate taste. This guide gives you the shortlist of rules and the tools that apply them for you.
Start by stealing structure
The fastest way to design a screen is to not invent the layout. Someone with a real design team has already solved "what goes on a pricing page" or "how a settings screen is arranged." Your job is to find that solution and adapt it.
Mobbin is a searchable library of real app screens. It holds over 600,000 screens and 300,000 user flows from more than 1,000 iOS, Android, and web apps, organized by pattern, industry, and flow, so you can look up "onboarding" or "empty state" and see how shipped products handle it. A free plan gives limited browsing; Pro is about $10 per month billed annually per its pricing page. For marketing and landing pages, Land-book is a curated gallery running since 2013 with thousands of hand-picked sites sorted by style, color, and industry.
Do not copy a competitor pixel for pixel. Copy the structure: which sections exist, in what order, and how much room each one gets. Then fill it with your own content and colors. This one habit removes the blank-page paralysis that produces most amateur layouts.
Spacing: the habit that fixes most layouts
If you change one thing, make it spacing. Cramped, uneven gaps read as "unfinished" faster than almost anything else. The fix is a constrained scale. Pick values that are multiples of 8 (8, 16, 24, 32, 48, 64 pixels) and only ever use those. No 13px here and 27px there.
Refactoring UI calls this working with a spacing system instead of eyeballing every gap, and it is why Tailwind ships with a built-in scale baked into class names like `p-4` and `gap-6`. When every margin comes from the same short list, elements line up and the whole screen looks deliberate. A close second: give things more room than feels natural. New builders almost always under-space. Doubling the whitespace around a section usually improves it.
Typography: one font, a real scale, sane line length
Multiple fonts fighting each other is a classic tell. Use one typeface for everything and let size and weight create hierarchy. A clean sans-serif from Google Fonts (Inter, Geist, or the system font stack) is a safe default that costs nothing.
Then set a size scale instead of picking random numbers. Four or five steps is plenty: a large heading, a medium subhead, body text, and a small caption. Keep body text at 16px or larger so it is comfortable to read. One more rule with outsized impact on readability: keep lines of body text between 45 and 75 characters wide, which Refactoring UI notes works out to roughly 20 to 35em. Wider than that and the eye loses its place on the next line.
Color: neutrals first, one accent
Color is where non-designers reach for a rainbow and regret it. Do the opposite. Build almost the entire interface out of neutrals (a range of greys from near-white to near-black), then add exactly one accent color for the things you want people to click. A common ratio is 60-30-10: roughly 60% a dominant neutral, 30% a secondary tone, 10% the accent.
You do not have to invent these greys. Radix Colors is a free, open-source palette engineered so each step has correct contrast for text and backgrounds, and it is what shadcn/ui themes build on. Pick a neutral scale, pick one accent, and you have a coherent system without touching a color wheel.
The cheat sheet
Every principle above maps to a quick rule and a tool that enforces it. Keep this next to you while you build.
| Principle | Quick rule | Tool that applies it |
|---|---|---|
| Spacing | Only use multiples of 8. No random pixel values. | Tailwind spacing scale (p-4, gap-6) |
| Hierarchy | One focal point per screen; shrink and grey the rest. | Mobbin (see how shipped apps rank elements) |
| Typography | One font, 4-5 sizes, body 16px+, 45-75 chars per line. | Google Fonts + Tailwind type scale |
| Color | Neutrals for ~90%, one accent for actions. 60-30-10. | Radix Colors / shadcn theme |
| Layout | Copy a proven section order, do not invent one. | Land-book, Mobbin |
| Components | Never hand-build buttons, inputs, or modals. | shadcn/ui, Tailwind Plus |
| First draft | Prompt an AI for a starting screen, then refine. | v0 by Vercel |
Let components do the heavy lifting
The single biggest shortcut is to stop building UI elements by hand. Buttons, form fields, dropdowns, dialogs, and tables have all been designed and accessibility-tested for you. Drop them in and your app inherits that quality.
shadcn/ui is the default for a reason. It is free and open source, and unlike a normal package you copy the actual component source code into your own project. You run a CLI command once, the files land in your repo, and you own and can restyle them freely. It is built on Radix UI for behavior and Tailwind for styling, so it fits the spacing, type, and color rules above out of the box. If you want finished pages fast, Tailwind Plus (formerly Tailwind UI, from the Tailwind team) is a one-time purchase, $299 for a personal license or $979 for a team, giving lifetime access to 500+ marketing, app, and ecommerce blocks plus full site templates.
| shadcn/ui | Tailwind Plus | v0 by Vercel | |
|---|---|---|---|
| What it is | Copy-paste React components | Prebuilt HTML/React blocks | AI that generates UI |
| Price | Free, open source | $299 one-time (personal) | Free tier, then $20/mo |
| You get | Source code in your repo | 500+ blocks + templates | A working screen from a prompt |
| Best for | Owning and theming your UI | Full pages, fast | Beating the blank page |
Prices from the Tailwind Plus and v0 pricing pages. shadcn/ui and Radix Colors are free.
Where AI design tools fit
AI is best at the first draft, not the final polish. v0 by Vercel takes a text prompt ("a pricing page with three tiers and a FAQ") and generates working code using shadcn/ui and Tailwind, the same stack you would use by hand. The free tier includes a small monthly credit allowance, with a Premium plan at $20 per month per its pricing. Because the output is real shadcn plus Tailwind code, you are not locked into a black box: you export it and keep editing with the rules from this guide.
Treat AI output as a rough layout to react to, not a finished screen. It gets you past the empty canvas in seconds, then you apply spacing, hierarchy, and color yourself. For a fast primer on the judgment calls that separate a decent screen from a good one, Erik Kennedy's talk is aimed squarely at developers with no design background.
What to do next
Open Mobbin or Land-book, find a layout close to what you need, and copy its structure. Build the screen with shadcn/ui components, or prompt v0 for a first pass. Then run this checklist before you call it done.
- Spacing: every gap is a multiple of 8. Nothing feels cramped.
- Fonts: one typeface, four or five sizes, body text 16px or larger.
- Line length: paragraphs are 45-75 characters wide, not full-window.
- Color: mostly neutrals, one accent, used only for actions.
- Hierarchy: each screen has one obvious focal point.
- Components: no hand-rolled buttons or inputs; use the library.
- Alignment: things line up on a shared grid, edges are consistent.
- Contrast: text is easy to read against its background.
None of this requires taste you were born with. It requires a short set of rules and tools that enforce them. Get these eight right and your app will read as a real, credible product, which is what turns a demo into something people trust enough to pay for.
Join the vibe coder community
Weekly prompts, tools, and success stories to help you build and monetize with AI.
Unsubscribe any time.