{"id":19023230,"url":"https://github.com/phildl/epic-stack-monorepo","last_synced_at":"2025-09-06T19:32:22.697Z","repository":{"id":197149039,"uuid":"695100767","full_name":"PhilDL/epic-stack-monorepo","owner":"PhilDL","description":"Epic Stack Monorepo (pnpm)","archived":false,"fork":false,"pushed_at":"2023-09-29T05:26:43.000Z","size":9986,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-07T09:16:35.354Z","etag":null,"topics":["epic-stack","epic-stack-example"],"latest_commit_sha":null,"homepage":"https://epic-stack-monorepo.fly.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PhilDL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-22T11:03:14.000Z","updated_at":"2024-01-26T17:18:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"9e3b4a0e-f931-42b5-9a0d-6c3b160c9dce","html_url":"https://github.com/PhilDL/epic-stack-monorepo","commit_stats":null,"previous_names":["phildl/epic-stack-monorepo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PhilDL/epic-stack-monorepo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilDL%2Fepic-stack-monorepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilDL%2Fepic-stack-monorepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilDL%2Fepic-stack-monorepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilDL%2Fepic-stack-monorepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PhilDL","download_url":"https://codeload.github.com/PhilDL/epic-stack-monorepo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilDL%2Fepic-stack-monorepo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273953495,"owners_count":25197316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["epic-stack","epic-stack-example"],"created_at":"2024-11-08T20:29:09.921Z","updated_at":"2025-09-06T19:32:21.141Z","avatar_url":"https://github.com/PhilDL.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003e\u003ca href=\"https://www.epicweb.dev/epic-stack\"\u003eThe Epic Stack Monorepo 🚀\u003c/a\u003e\u003c/h1\u003e\n  \u003cstrong align=\"center\"\u003e\n    Ditch analysis paralysis and start shipping Epic Web apps.\n  \u003c/strong\u003e\n  \u003cp\u003e\n    This is an opinionated project starter and reference that allows teams to\n    ship their ideas to production faster and on a more stable foundation based\n    on the experience of \u003ca href=\"https://kentcdodds.com\"\u003eKent C. Dodds\u003c/a\u003e and\n    \u003ca href=\"https://github.com/epicweb-dev/epic-stack/graphs/contributors\"\u003econtributors\u003c/a\u003e.\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## Epic Stack Monorepo Example\n\nThis monorepo was created with `pnpm` for space efficiency and more convienence\nin monorepos than `npm`. On top of that package manager the monorepo pipeline\ntool of choice is turborepo (feel free to switch it for NX).\n\n- `apps` Folder containing the applications\n  - [`epic-app`](https://github.com/PhilDL/epic-stack-monorepo/tree/main/apps/epic-app):\n    the [Remix.run](https://remix.run) Epic Stack app.\n- `packages` Folder containing examples\n\n  - [`ui`](https://github.com/PhilDL/epic-stack-monorepo/tree/main/packages/ui):\n    this UI package contains the [shadcn/ui](https://ui.shadcn.com/) Component\n    previously in the Epic Stack App. It also exposes a Tailwind config\n    \"epic-stack\" preset, that you consume from the Remix app.\n  - [`client-hints`](https://github.com/PhilDL/epic-stack-monorepo/tree/main/packages/client-hints):\n    is an example package that takes the original functions and hooks handling\n    client-hints in the `utils` folder of the original app, and put that into\n    their own package.\n    [`The hooks`](https://github.com/PhilDL/epic-stack-monorepo/tree/main/packages/client-hints/src/client-hints.tsx):\n    were refactored to take \"loader\" as generics (typically the root loader).\n  - Some config packages:\n    - eslint containing some common eslint configs.\n    - tsconfig presets.\n\n## Follow the commit history\n\n- 1) [init monorepo setup with pnpm](https://github.com/PhilDL/epic-stack-monorepo/commit/5296754553ea26e6edcdde7b31b927403705620a): takes you through a working local monorepo developpement environment with PNPM.\n- 2) [Adapt Dockerfile, fix CI and deploy the epic-stack app](https://github.com/PhilDL/epic-stack-monorepo/commit/a82486866507688025c84ae54bf6f05f71c73e3d): takes CI to green, add turborepo, pipelines, fix deployment and Dockerfile.\n- 3) [Extract logic to monorepo packages: UI package, \"client-hints\" package, and config (tsconfig, eslint) packages](https://github.com/PhilDL/epic-stack-monorepo/commit/33997f9e47e41f6919990cb4dfcd098c65396a71): package creation examples.\n\n\n## Local development\n\n\u003e **Warning** All the following commands should be launched from the **monorepo\n\u003e root directory**\n\n### Install dependencies\n\n```bash\npnpm i\n```\n\nGiven the name of our app in `package.json` is `@epic-stack-monorepo/epic-app`:\n\nTurborepo is used here to have pipeline between packages. The setup here is\nbasic, and you can see turbo as just a way to run the same `pnpm` command in all\npackages, for example:\n\n### Build all packages\n\n```bash\npnpm build\n```\n\n### Dev all packages\n\n```bash\npnpm dev\n```\n\nAll turborepo // pnpm commands can be filtered to a specific package with the\n`--filter` flag. For example:\n\n### To Work on the Remix Epic Stack app\n\n```bash\npnpm dev --filter=@epic-stack-monorepo/epic-app\n```\n\nYou could also use `...` to run dev also on all the workspace packages deps:\n\n```bash\npnpm dev --filter=@epic-stack-monorepo/epic-app...\n```\n\n(This will also run the dev command on `@epic-stack-monorepo/client-hints` and\n`@epic-stack-monorepo/ui`).\n\n## Install package in a specific package\n\n```bash\npnpm add -D chokidar --filter=@epic-stack-monorepo/ui\n```\n\nThis will install `chokidar` in the `@epic-stack-monorepo/ui` package.\n\n# Original documentation\n\n```sh\nnpx create-remix@latest --install --init --git-init --template epicweb-dev/epic-stack\n```\n\n[![The Epic Stack](https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/246885449-1b00286c-aa3d-44b2-9ef2-04f694eb3592.png)](https://www.epicweb.dev/epic-stack)\n\n[The Epic Stack](https://www.epicweb.dev/epic-stack)\n\n\u003chr /\u003e\n\n## Watch Kent's Introduction to The Epic Stack\n\n[![screenshot of a YouTube video](https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/242088051-6beafa78-41c6-47e1-b999-08d3d3e5cb57.png)](https://www.youtube.com/watch?v=yMK5SVRASxM)\n\n[\"The Epic Stack\" by Kent C. Dodds at #RemixConf 2023 💿](https://www.youtube.com/watch?v=yMK5SVRASxM)\n\n## Docs\n\n[Read the docs](https://github.com/epicweb-dev/epic-stack/blob/main/docs)\n(please 🙏).\n\n## Support\n\n- 🆘 Join the\n  [discussion on GitHub](https://github.com/epicweb-dev/epic-stack/discussions)\n  and the [KCD Community on Discord](https://kcd.im/discord).\n- 💡 Create an\n  [idea discussion](https://github.com/epicweb-dev/epic-stack/discussions/new?category=ideas)\n  for suggestions.\n- 🐛 Open a [GitHub issue](https://github.com/epicweb-dev/epic-stack/issues) to\n  report a bug.\n\n## Branding\n\nWant to talk about the Epic Stack in a blog post or talk? Great! Here are some\nassets you can use in your material:\n[EpicWeb.dev/brand](https://epicweb.dev/brand)\n\n## Thanks\n\nYou rock 🪨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphildl%2Fepic-stack-monorepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphildl%2Fepic-stack-monorepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphildl%2Fepic-stack-monorepo/lists"}