GithubHelp home page GithubHelp logo

phildl / epic-stack-monorepo Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 1.0 9.75 MB

Epic Stack Monorepo (pnpm)

Home Page: https://epic-stack-monorepo.fly.dev

JavaScript 4.64% TypeScript 91.95% CSS 2.67% Dockerfile 0.75%
epic-stack epic-stack-example

epic-stack-monorepo's Introduction

Ditch analysis paralysis and start shipping Epic Web apps.

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.

Epic Stack Monorepo Example

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).

  • apps Folder containing the applications

  • packages Folder containing examples

    • ui: 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 the utils folder 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.

Follow the commit history

Local development

Warning All the following commands should be launched from the monorepo root directory

Install dependencies

pnpm i

Given 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:

Build all packages

pnpm build

Dev all packages

pnpm dev

All turborepo // pnpm commands can be filtered to a specific package with the --filter flag. For example:

To Work on the Remix Epic Stack app

pnpm dev --filter=@epic-stack-monorepo/epic-app

You 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).

Install package in a specific package

pnpm add -D chokidar --filter=@epic-stack-monorepo/ui

This will install chokidar in the @epic-stack-monorepo/ui package.

Original documentation

npx create-remix@latest --install --init --git-init --template epicweb-dev/epic-stack

The Epic Stack

The Epic Stack


Watch Kent's Introduction to The Epic Stack

screenshot of a YouTube video

"The Epic Stack" by Kent C. Dodds at #RemixConf 2023 ๐Ÿ’ฟ

Docs

Read the docs (please ๐Ÿ™).

Support

Branding

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

Thanks

You rock ๐Ÿชจ

epic-stack-monorepo's People

Contributors

mosattler avatar phildl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

mosattler

epic-stack-monorepo's Issues

Document use cases?

Hi!

Thanks for creating and sharing this! This looks quite interesting! I found it while searching for an epic-web boilerplate that used ppm instead of npm.

It's not clear what the goals behind the monorepo are, though. Is the (main) use case to have multiple (different) apps in the same repo while sharing common bits and libraries between them? Why would someone use this instead of a regular epic-stack boilerplate? I think it'd be worth clarifying it in the README (e.g what are the production advantages? Why would someone use this in production instead of a regular boilerplate? Pros/Cons etc).

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.