ๆƒฏๆ€ง่šๅˆ ้ซ˜ๆ•ˆ่ฟฝ่ธชๅ’Œ้˜…่ฏปไฝ ๆ„Ÿๅ…ด่ถฃ็š„ๅšๅฎขใ€ๆ–ฐ้—ปใ€็ง‘ๆŠ€่ต„่ฎฏ
้˜…่ฏปๅŽŸๆ–‡ ๅœจๆƒฏๆ€ง่šๅˆไธญๆ‰“ๅผ€

ๆŽจ่่ฎข้˜…ๆบ

C
Check Point Blog
Y
Y Combinator Blog
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
ๅš
ๅšๅฎขๅ›ญ_้ฆ–้กต
ๅคง็Œซ็š„ๆ— ้™ๆธธๆˆ
ๅคง็Œซ็š„ๆ— ้™ๆธธๆˆ
็พŽ
็พŽๅ›ขๆŠ€ๆœฏๅ›ข้˜Ÿ
S
SegmentFault ๆœ€ๆ–ฐ็š„้—ฎ้ข˜
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
ๅฐไผ—่ฝฏไปถ
ๅฐไผ—่ฝฏไปถ
Vercel News
Vercel News
้˜ฎไธ€ๅณฐ็š„็ฝ‘็ปœๆ—ฅๅฟ—
้˜ฎไธ€ๅณฐ็š„็ฝ‘็ปœๆ—ฅๅฟ—
N
Netflix TechBlog - Medium
่ฎฉๅฐไบงๅ“็š„็‹ฌ็ซ‹ๅ˜็Žฐๆ›ด็ฎ€ๅ• - ezindie.com
่ฎฉๅฐไบงๅ“็š„็‹ฌ็ซ‹ๅ˜็Žฐๆ›ด็ฎ€ๅ• - ezindie.com
้‡
้‡ๅญไฝ
ๅš
ๅšๅฎขๅ›ญ - ใ€ๅฝ“่€็‰นใ€‘
J
Java Code Geeks
F
Fortinet All Blogs
ๅฎ็މ็š„ๅˆ†ไบซ
ๅฎ็މ็š„ๅˆ†ไบซ
Stack Overflow Blog
Stack Overflow Blog
ๅš
ๅšๅฎขๅ›ญ - ๅธๅพ’ๆญฃ็พŽ

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Donโ€™t Fail โ€” They Drift Spilling beans for how i learn for exam๐Ÿ˜"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" โ€” What Actually Happened Comfy Cloudโ€™s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions โ€” here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components โ€” Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cรณmo construรญ un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 ๐Ÿš€ I Built an Ethical Hacking Scanner Tool โ€“ Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points โ€” Here's What I Found About How Markets Really Move EcoTrack AI โ€” Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
๐Ÿš€ React + Vite + Tailwind CSS + Shadcn UI Setup (vanillaJS)
Nabin Kandel ยท 2026-05-10 ยท via DEV Community

A complete step-by-step guide to quickly set up **React + Vite + Tailwind CSS + Shadcn UI* with clean @/... alias imports โ€” no TypeScript required!*

โฑ๏ธ Time to complete: ~10 minutes

๐ŸŽฏ Result: Production-ready React app with beautiful, accessible components


๐Ÿงฉ Step 1: Create a Vite + React Project

Scaffold your new project with Vite:

npm create vite@latest my-app
cd my-app

Enter fullscreen mode Exit fullscreen mode

When prompted, select:
Option | Choice
Framework | React
Variant | JavaScript

โœ… Vite will generate a lean, fast React starter with HMR (Hot Module Replacement) out of the box.


๐ŸŒ€ Step 2: Install Dependencies

Install core packages and Tailwind's official Vite plugin:

npm install
npm install tailwindcss @tailwindcss/vite

Enter fullscreen mode Exit fullscreen mode

Package Purpose
tailwindcss Utility-first CSS framework
@tailwindcss/vite First-party Vite plugin for Tailwind (no PostCSS config needed!)

๐ŸŽจ Step 3: Configure vite.config.js

Replace the entire contents of vite.config.js with:

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import tailwindcss from "@tailwindcss/vite";
import path from "path";

// https://vite.dev/config/
export default defineConfig({
  plugins: [
    tailwindcss(),
    react({
      babel: {
        plugins: [["babel-plugin-react-compiler"]], // โœ… Optional: React Compiler for perf
      },
    }),
  ],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"), // โœ… Enable @/ imports
    },
  },
});

Enter fullscreen mode Exit fullscreen mode

๐Ÿ” Why This Matters:

  • @tailwindcss/vite โ†’ Compiles Tailwind at build time (faster than PostCSS!)
  • @ alias โ†’ Import like import Button from "@/components/ui/button" instead of ../../../components/ui/button ๐Ÿงน

โš™๏ธ Step 4: Create jsconfig.json for Editor Support

At your project root, create jsconfig.json:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src"],
  "exclude": ["node_modules", "dist"]
}

Enter fullscreen mode Exit fullscreen mode

๐Ÿ’ก Benefits:

  • โœ… VS Code autocomplete for @/ imports
  • โœ… ESLint/Prettier understand your alias paths
  • โœ… No more "Cannot find module" warnings ๐Ÿ‘ป

๐Ÿช„ Step 5: Import Tailwind in Your CSS

Open or create src/index.css and add:

@import "tailwindcss";

Enter fullscreen mode Exit fullscreen mode

๐ŸŽ‰ That's it! With @tailwindcss/vite, you don't need @tailwind base/components/utilities โ€” the plugin handles it automatically.

(Optional) Clean up default styles:

Delete or empty src/App.css to avoid conflicting styles.


๐ŸŒˆ Step 6: Initialize Shadcn UI

Run the Shadcn CLI to set up your component library:

npx shadcn@latest init

Enter fullscreen mode Exit fullscreen mode

Follow the prompts:
| Question | Recommended Choice |
|----------|-------------------|
| Style | New York or Default |
| Base color | Slate (neutral & accessible) |
| CSS variables | Yes (for theming) |

Then add your first components:

npx shadcn@latest add button card input

Enter fullscreen mode Exit fullscreen mode

โœ… Components land in src/components/ui/ โ€” fully customizable, accessible, and Tailwind-powered.


๐Ÿ’ป Step 7: Test Your Setup

Open src/App.jsx and replace with:

import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";

export default function App() {
  return (
    <div className="flex min-h-screen items-center justify-center bg-gray-50 p-4">
      <Card className="w-full max-w-md">
        <CardHeader>
          <CardTitle className="text-center">๐ŸŽ‰ Setup Successful!</CardTitle>
        </CardHeader>
        <CardContent className="flex flex-col gap-4">
          <p className="text-center text-gray-600">
            You're now running React + Vite + Tailwind + Shadcn UI.
          </p>
          <Button className="w-full">Click Me</Button>
          <Button variant="outline" className="w-full">
            Secondary Action
          </Button>
        </CardContent>
      </Card>
    </div>
  );
}

Enter fullscreen mode Exit fullscreen mode

Then start the dev server:

npm run dev

Enter fullscreen mode Exit fullscreen mode

๐Ÿ”— Visit http://localhost:5173 โ€” you should see a beautifully styled card with Shadcn buttons!


โœ… Final Project Structure

my-app/
โ”œโ”€โ”€ public/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ””โ”€โ”€ ui/          # ๐ŸŽจ Shadcn components (button, card, input...)
โ”‚   โ”œโ”€โ”€ App.jsx          # ๐Ÿ  Main app component
โ”‚   โ”œโ”€โ”€ index.css        # ๐ŸŽจ Tailwind import
โ”‚   โ””โ”€โ”€ main.jsx         # โšก React entry point
โ”œโ”€โ”€ index.html
โ”œโ”€โ”€ vite.config.js       # โš™๏ธ Vite + Tailwind + alias config
โ”œโ”€โ”€ jsconfig.json        # ๐Ÿง  Editor alias support
โ”œโ”€โ”€ tailwind.config.js   # ๐ŸŽจ Auto-generated by Shadcn (optional to tweak)
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ ...

Enter fullscreen mode Exit fullscreen mode

๐Ÿงญ Pro Tip: Keep src/components/ui/ for Shadcn primitives, and create src/components/ for your custom composables (e.g., UserProfile.jsx, NavBar.jsx).


๐Ÿ› ๏ธ Troubleshooting Quick Fixes

Issue Solution
โŒ @/ imports not working Restart VS Code; ensure jsconfig.json is at root
โŒ Tailwind classes not applying Verify @import "tailwindcss" is in index.css
โŒ Shadcn components look unstyled Check that index.css is imported in main.jsx
โŒ Vite server won't start Run npm run dev -- --force to clear HMR cache
โŒ Button has no hover effect Ensure tailwind.config.js includes content paths (Shadcn auto-generates this)

๐Ÿงช Bonus: Add a Dark Mode Toggle (Optional)

Shadcn supports theming out of the box! Add this to src/App.jsx:

import { useEffect, useState } from "react";
import { Button } from "@/components/ui/button";

export default function App() {
  const [dark, setDark] = useState(false);

  useEffect(() => {
    document.documentElement.classList.toggle("dark", dark);
  }, [dark]);

  return (
    <div className="flex min-h-screen flex-col items-center justify-center bg-background text-foreground transition-colors">
      <Button onClick={() => setDark(!dark)} variant="outline">
        {dark ? "โ˜€๏ธ Light Mode" : "๐ŸŒ™ Dark Mode"}
      </Button>
    </div>
  );
}

Enter fullscreen mode Exit fullscreen mode

๐ŸŒ— Requires darkMode: "class" in tailwind.config.js (Shadcn sets this by default).


๐Ÿ”— Helpful Resources


๐ŸŽฏ Key Takeaways

  • โœ… Vite = Blazing-fast dev server & build
  • โœ… @tailwindcss/vite = Simpler Tailwind setup (no PostCSS!)
  • โœ… @/ aliases = Cleaner, scalable imports
  • โœ… Shadcn UI = Production-ready, accessible components โ€” you own the code
  • โœ… JavaScript-first = No TypeScript overhead for quick prototyping

๐Ÿ™Œ If this guide helped you ship faster, give it a โค๏ธ, share it with your team, or drop a comment with what you're building!