typescript-fullstack-monorepo-starter
typescript-fullstack-monorepo-starter copied to clipboard
TypeScript monorepo setup with blazing-fast HMR and fast refresh powered by swc, esbuild.
TypeScript Fullstack Monorepo Starter
- This project brings the blazing-fast DX of a modern JS build system to codebases reliant on Webpack.
- It also implements a convenient monorepo setup that is extensible to any number of frontend clients or backend services.
Features
Speed Improvements
- Transpilation:
SWC- ~60x speed improvement over
babel,tsc. Better performance thanesbuild. - Supports HMR with
react-refresh(unlikeesbuild-loader).
- ~60x speed improvement over
- Minification:
ESBuild
Project structure
- Monorepo setup with
Yarn Workspaces, TypeScript path aliases,tsconfig-paths-plugin - React SPA, Express server, Redux state slices all organized as independent subrepos.
- Simple code sharing (types, constants, modules) between cross-platform frontend clients (mobile, electron) and backend services.
Stack
- Frontend:
React,Redux Toolkit,RTK Query,Tailwind CSS - Backend:
Express.js,ts-node,PostgreSQL,Docker Compose - Express middleware:
express-rate-limit,express-slow-down,helmet,hpp,nocache,morgan - Build:
Webpack - Linters:
ESLint,Prettier,Headwind,TypeScript Import Sorter - Testing:
Jest,React Testing Library
Getting Started
Install
Click the green Use this Template button on GitHub, or run this command.
git clone --depth 1 https://github.com/MajorLift/typescript-fullstack-monorepo-starter
Yarn is required to use this template.
npm install --global yarn
Docker is used to launch the Postgres DB. Download it here.
Scripts
- To run the project in dev mode, navigate to the project directory and run:
yarn dev
- This will concurrently spawn...
- The React app at http://localhost:8080
- The Express server at http://localhost:3000
- The Postgres DB at http://localhost:5333
- To generate a production build
yarn build
- To preview the production build with
ts-noderunning onnodemon
yarn start
- To clean up or reload the DB
yarn docker-clean
yarn docker-reload
- To run the linter
yarn lint
- To run the test suite
yarn test