A front-end-only QR code generator web app built with React 19, TypeScript, and shadcn/ui. Generate QR codes from URLs or text in the browser—no backend required.
- Install dependencies:
pnpm install- Start the development server:
pnpm run dev- Open the app and enter a URL or any text to generate a QR code.
- Browser-only – QR generation runs entirely in the browser (qrcode.react)
- Live preview – QR code updates as you type
- Modern stack – React 19, TypeScript, Vite, Tailwind CSS, shadcn/ui
- Responsive – Works on desktop and mobile
- React 19 with TypeScript
- Vite for development and builds
- Tailwind CSS + shadcn/ui for UI
- React Router for navigation
- qrcode.react for QR generation
- Lucide React for icons
src/
├── components/ # Reusable UI and error components
│ ├── ui/ # shadcn/ui components (manage via CLI)
│ └── errors/ # Error handling components
├── contexts/ # React Context providers
├── hooks/ # Custom React hooks
├── layout/ # App layout and sidebar
├── lib/ # Utilities, types, schemas
├── pages/ # Page components
└── main.tsx # App entry point
Do not manually edit files in src/components/ui/. Use the shadcn CLI:
- Add:
npx shadcn@latest add <component> - Update:
npx shadcn@latest update
pnpm run dev– Start development serverpnpm run build– Build for productionpnpm run preview– Preview production buildpnpm run lint– Run Biome lintingpnpm run format– Format code with Biomepnpm run test– Run all testspnpm run test:watch– Run tests in watch modepnpm run coverage– Generate test coverage reportpnpm run spell– Check spelling with suggestionspnpm run spell:check– Check spelling (CI mode)
- Vitest – Unit tests with jsdom
- Biome – Linting and formatting
- Husky – Git hooks (pre-commit, pre-push)
- lint-staged – Lint and format staged files only
- cspell – Spell checking
Private.