This is an opinionated project starter and reference that allows teams to ship their ideas to production faster and on a more stable foundation based on the experience of Kent C. Dodds and contributors.
This monorepo was created with pnpm for space efficiency and more convienence
in monorepos than npm. On top of that package manager the monorepo pipeline
tool of choice is turborepo (feel free to switch it for NX).
-
appsFolder containing the applications -
packagesFolder containing examplesui: this UI package contains the shadcn/ui Component previously in the Epic Stack App. It also exposes a Tailwind config "epic-stack" preset, that you consume from the Remix app.client-hints: is an example package that takes the original functions and hooks handling client-hints in theutilsfolder of the original app, and put that into their own package.The hooks: were refactored to take "loader" as generics (typically the root loader).- Some config packages:
- eslint containing some common eslint configs.
- tsconfig presets.
-
- init monorepo setup with pnpm: takes you through a working local monorepo developpement environment with PNPM.
-
- Adapt Dockerfile, fix CI and deploy the epic-stack app: takes CI to green, add turborepo, pipelines, fix deployment and Dockerfile.
-
- Extract logic to monorepo packages: UI package, "client-hints" package, and config (tsconfig, eslint) packages: package creation examples.
Warning All the following commands should be launched from the monorepo root directory
pnpm iGiven the name of our app in package.json is @epic-stack-monorepo/epic-app:
Turborepo is used here to have pipeline between packages. The setup here is
basic, and you can see turbo as just a way to run the same pnpm command in all
packages, for example:
pnpm buildpnpm devAll turborepo // pnpm commands can be filtered to a specific package with the
--filter flag. For example:
pnpm dev --filter=@epic-stack-monorepo/epic-appYou could also use ... to run dev also on all the workspace packages deps:
pnpm dev --filter=@epic-stack-monorepo/epic-app...(This will also run the dev command on @epic-stack-monorepo/client-hints and
@epic-stack-monorepo/ui).
pnpm add -D chokidar --filter=@epic-stack-monorepo/uiThis will install chokidar in the @epic-stack-monorepo/ui package.
npx create-remix@latest --install --init --git-init --template epicweb-dev/epic-stack"The Epic Stack" by Kent C. Dodds at #RemixConf 2023 💿
Read the docs (please 🙏).
- 🆘 Join the discussion on GitHub and the KCD Community on Discord.
- 💡 Create an idea discussion for suggestions.
- 🐛 Open a GitHub issue to report a bug.
Want to talk about the Epic Stack in a blog post or talk? Great! Here are some assets you can use in your material: EpicWeb.dev/brand
You rock 🪨

