Alex Vincent's personal living boilerplate for production-grade hybrid React apps.
-
Development
- Package Manager: Yarn
- Development Language: TypeScript
- Front-End Framework: React
- Server-Side Framework: Express
- Routing: React Router (DOM)
- CSS Framework: SASS
- CSS Tooling: Normalize.css, Custom fonts / Font Faces
- Manifest: Optimized Mobile Icons
-
Linting & Formatting
- Linter(s): ESLint (using typescript-eslint rules)
- Formatter: Prettier
-
Testing
- Test Runner: Jest
-
CI / CD Tooling
- Version Control: Git
- Git Hooks: Husky
- Bundler: Webpack (Dev/Prod Client Builds, Dev/Prod Server Builds)
- Transpiler: Babel
- Custom Tooling (Auto-generated components, routes, unit-tests)
-
Custom Tooling
- Webpack Code Splitting by npm library, custom modules, routes
- Performance Budgeting (Time Based, Quantity Based, Rules Based)
- Manually deploy to Heroku
- Automate deployments using CircleCI
-
Add Timed Based (web core vitals), Rules Based (Lighthouse) performance budgets. Lighthouse node CLI doesn't work on localhost so we'll need to find a way to test it when we can get environments up. Ideally I would like some kind of yarn command I could run to get a Lighthouse report, but that doesn't exist right now. We'll also be doing Performance Budgeting through Lighthouse as well when this works.
-
Critical CSS rendering (the process of putting above the fold css in the head as a static style tag) seems to be an optimization that requires a bit of maintenance (aka there isn't any clearly nice tooling that doesn't come with lots of overhead). The advice is to implement it only when it becomes an issue.
-
Fix @ts-ignores