Pre-configured repo for Frontend development with my favorite tooling.
node
v22.5.1 controlled withasdf
react
v18.3.1typescript
and Matt Pocock'sts-reset
classnames
to conditionally apply styling via CSS classestailwindCSS
- PostCSS, with these plugins:
postcss-import
: to inline at-import rules contenttailwindcss
postcss-preset-env
: to apply plugins when CSS code is not supported based on MDN/CanIUse data and browserslist config. It includes Autoprefixer under-the-hood and adds prefixes when needed
browserslist
vite
, configured with tsconfig-paths and browserslist configvitest
for testing, including@testing-library/react
and other packagesprettier
with Tailwind plugineslint
with strict TS typed-recommended configs, including these plugins:eslint-plugin-react
eslint-plugin-react-hooks
eslint-plugin-react-refresh
eslint-plugin-tailwindcss
eslint-plugin-jsx-a11y
eslint-plugin-compat
eslint-plugin-import
- Github Action to deploy on Fly.io
The repo is already setup to deliver a single SVG sprite, located at assets/icons/sprite.svg
.
New icons can be wrapped with <symbol>
tags and pasted into the sprite. Then, the scripts/gen-icon-types.ts
script parses the icons and generates a union type at app/components/icon/icon-types.ts
with all ids found.
This leads to a type-safe React <Icon>
component that is performant and fully compatible with all modern browsers.