What Large-Scale Software Looks Like

แชร์
ฝัง

ความคิดเห็น • 99

  • @hyperprotagonist
    @hyperprotagonist 9 วันที่ผ่านมา +140

    Production-grade is NOT enterprise-grade. Let’s make that distinction before it becomes the foundation for many people!

    • @minenandha
      @minenandha 9 วันที่ผ่านมา

      How exactly? Care to explain?

    • @Ivcota
      @Ivcota 9 วันที่ผ่านมา +39

      @@minenandha Production should be stable (probs a minimal requirement for all real apps) - Enterprise should be designed around requirements of large organizations (not required for scrappy startups)

    • @raymondmichael4987
      @raymondmichael4987 9 วันที่ผ่านมา +2

      @@Ivcotayou put it well buddy

    • @struggle-inc
      @struggle-inc 9 วันที่ผ่านมา +2

      Exactly

    • @hyperprotagonist
      @hyperprotagonist 9 วันที่ผ่านมา +9

      @@minenandha in layman terms, production-grade is the foundation, built to work reliably; enterprise-grade is the full infrastructure, designed to scale, integrate, and secure complex needs.

  • @lewxuanming7128
    @lewxuanming7128 9 วันที่ผ่านมา +7

    Awesome video- I’d love to see you make another video regarding the things you touched on that are in production apps (health checks, event management) and more importantly how to make that extensible across your app.
    Currently working on a startup, and I feel that’s a knowledge gap I have at the moment. Anyway, thanks a lot for the value in this video!

  • @falkfrentzen4120
    @falkfrentzen4120 9 วันที่ผ่านมา +17

    I‘m still not sure how to feel about MDX files for blogs. Often times the content creators are not developers, which usually means a headless CMS should be used instead of static files in the repo

    • @furycorp
      @furycorp 8 วันที่ผ่านมา +1

      I can confidently tell you that I have successfully introduced MD + MDX (MDX with careful choices) to non-technical stakeholders and if you sell it right they will absolutely see and appreciate the benefits. And that was BEFORE there was the tooling like there is today (drop-in rich text editors for web, sexy desktop apps, etc.). Consider their goals and their UX like any software; if you make their work easier they will appreciate your solution and adopt it. You might also be surprised that they are like a mod in some forum or something that uses MD and they already know it. These days its very widespread.

    • @haydenbleasel1
      @haydenbleasel1 5 วันที่ผ่านมา

      There's definitely pros and cons, I've been thinking about switching the default to a CMS and adding content-collections as a migration guide instead.

  • @genshian
    @genshian 7 วันที่ผ่านมา

    Its so great that Josh continues to push his career forward while keeping us in the loop. Usually, people either stop their career pursuit to continue TH-cam, but Josh pushes his career to push his knowledge of real world engineering and being up to date. Then shares it with us afterwards. This is rare and I'm really appreciative that I have access to the thinkings of an engineer who's deeply involved in the industry and not detached. Thanks a million!

  • @MengLinMaker
    @MengLinMaker 8 วันที่ผ่านมา +6

    I don't think this is microservices since microservices is about working in independent repos for independent deployments of each service.
    But definition is debatable.
    This is more like a monorepo with multiple services

  • @kyrregjerstad
    @kyrregjerstad 7 วันที่ผ่านมา +3

    One factor not mentioned here is the caching benefits of Turborepo that come from splitting your app into microservices. My mid-sized Next.js app experienced a huge improvement in build and test times after this separation, due to the caching layer Turbo provides.

  • @AbrahamLaria
    @AbrahamLaria 7 วันที่ผ่านมา +1

    My company is one case where web and mobile apps are needed from the start. Users go through the web app while service providers on the field benefits from a dedicated mobile app. Same use case can be extrapolated to a lot of similar business models.

  • @devambarbhaya2003
    @devambarbhaya2003 9 วันที่ผ่านมา +12

    Please make a project tutorial based on this repo.

  • @TheFocusedCoder
    @TheFocusedCoder 9 วันที่ผ่านมา +2

    finally someone understands what scale actually means and the focus on longevity not building throwaway pocs

  • @robertbruinsmaXXXX
    @robertbruinsmaXXXX 8 วันที่ผ่านมา +3

    This repo reminds me of the T3-TURBO stack. Just with questionable features

    • @JosephKinyuru-mo4nu
      @JosephKinyuru-mo4nu 8 วันที่ผ่านมา

      Facts. I was actually looking for a stack similar to this but its choice of auth provider and database orm doesn't suit what i am working on. Thanks for the reference to t3 turbo. Quick question have you used t3 turbo but with lucia auth ?

  • @furycorp
    @furycorp 9 วันที่ผ่านมา +2

    Another cool starter to look at. I really appreciate your videos! Personally I disagree "Production Grade" can be applied to everything especially where there's a critical auth dependency on on a money-burning VC backed startup that is still developing its product and has yet to support features for auth that established businesses expect from an Okta or AWS. Many would disagree on Prisma being part of a "production grade" equation as well especially depending on the requirements (definitely NOT suited for any company that puts data at its forefront). Its nice that this one has some basic thought to observability and feature flags even if they are minimal. It does kind of feel like every little feature in this thing is dependent on one subscription service or another.

  • @chamir4614
    @chamir4614 8 วันที่ผ่านมา +2

    "I know you are too lazy so I googled for you" He read my mind

  • @haydenbleasel1
    @haydenbleasel1 5 วันที่ผ่านมา

    Nice review! You're exactly right on the API as a microservice. I split it out so it can handle non-application services like background jobs, webhooks, etc. (doesn't make much of a difference on Vercel as they're all independent pieces of infrastructure) but also because if I were to spin out an Expo app for mobile devices, I'd prefer it to contact a dedicated API microservice than the main app.

    • @haydenbleasel1
      @haydenbleasel1 5 วันที่ผ่านมา

      The /health route on the API is more of a stub than anything else, but it's useful for uptime monitors to check if Vercel itself is having issues.

    • @haydenbleasel1
      @haydenbleasel1 5 วันที่ผ่านมา

      We'll also have more package abstractions over time, making it easier for people to swap out certain providers e.g. @repo/auth is useful for swapping out Clerk -> Auth.js without touching the apps.

    • @haydenbleasel1
      @haydenbleasel1 5 วันที่ผ่านมา

      We'll be splitting more packages out over time to make specific providers easier to switch. For example: repo/auth makes it easy to switch from Clerk to Auth.js

  • @SkullTraill
    @SkullTraill 8 วันที่ผ่านมา

    My definition for “enterprise” is similar to yours. It needs to support scaling. Not scaling users. But scaling employees/developers/internal growth. Everything has its own team, so things are abstracted so that the thing can be used easily by someone not it that team, but the trade off is that it’s much harder for someone not in that team to build on the thing itself.

  • @mohabedr5030
    @mohabedr5030 7 วันที่ผ่านมา +1

    Who came here to see if his code outperforms enterprise projects-and confirmed that, yes, it does.

  • @dmsnm
    @dmsnm 8 วันที่ผ่านมา +1

    I think Adonis JS has already set the path for something like this for Node JS enterprise grade projects. They mostly build their packages themselves in house instead of relying on 3rd party packages here and there.

    • @luka1790
      @luka1790 8 วันที่ผ่านมา +1

      Yeah, but almost no one uses adonis

  • @sunilmaurya6594
    @sunilmaurya6594 9 วันที่ผ่านมา

    Valuable content..keep up the good

  • @DomskiPlays
    @DomskiPlays 8 วันที่ผ่านมา +1

    So basically it's speed of development vs clean code

    • @Duskdown
      @Duskdown 8 วันที่ผ่านมา

      Without clean code there's no speed of development. Shitty software leads to slow development time.

  • @mohit84604
    @mohit84604 9 วันที่ผ่านมา +2

    You should check out Domain Driven Design once.

  • @DivinPrince
    @DivinPrince 9 วันที่ผ่านมา

    I'm loving the Convex V1 template 😊 right now

  • @TotallyNotZoid
    @TotallyNotZoid 8 วันที่ผ่านมา

    I would not take advice from people that move useless things to production and not actual people rely on them like this guy.

  • @segu_.
    @segu_. 8 วันที่ผ่านมา +2

    The apps/app dir is not for mobile. it's the actual web app template that makes use of clerk, shadecn/ui, etc.
    but the fact that josh mentioned it made me curious. is it possible to include a mobile version app like that ?

    • @haydenbleasel1
      @haydenbleasel1 5 วันที่ผ่านมา

      You could probably spin up an Expo app in the `apps` directory and run it on Turborepo. You could only make use of a couple of the packages though.

  • @codestacklab
    @codestacklab 4 วันที่ผ่านมา

    nx repo is much more advanced i guess , but harder , so does the bazzle . they are enterprise grade , while turbo is good for small agencies , and self sufficient apps

  • @The.Meshhh
    @The.Meshhh 8 วันที่ผ่านมา +2

    I understand what you are saying - But I don't see the downside of having the code split into packages? looking at the folder structure - Everything seems more organized? Even if I am not building a mobile app - The folder structure looks great - and just having them split into folders seems like the correct thing to do? Am I missing something?

    • @Vladyslav.L
      @Vladyslav.L 8 วันที่ผ่านมา

      You will spend less time (means money) placing API directly in the nextjs project. I guess this is what Josh meant

    • @DiscoverYourDepths
      @DiscoverYourDepths 8 ชั่วโมงที่ผ่านมา

      Almost all apps need the same reusable boilerplate functionality like Auth, Analytics, Payments, etc... so it makes sense to extract that logic into packages, then easily reuse it when bootstrapping a new project under the apps folder.

  • @snipe3045
    @snipe3045 7 วันที่ผ่านมา

    As a C student, wouldn't just be easy to do it like we've always done and use a service like strapi build all your api, and connect it to the front-end decoupling the frontend and backend? What is different about that concept?

  • @RealLexable
    @RealLexable 7 วันที่ผ่านมา

    Amazing Alter ❤. But doesn't it more scale your chances to be found via a mobile app right from the start rather than building only a webapp?

  • @imkir4n
    @imkir4n 9 วันที่ผ่านมา +1

    Indeed but need to replace some with OS Alternative.

  • @ashleytwo
    @ashleytwo 9 วันที่ผ่านมา

    Out of interest if you would hope to get to mobile down the line, would it not be best to start from a position where that could be possible?
    It's all hypothetical and down to the project of course but what is the bigger burden; the initial abstraction setup or having to abstract an existing project.

  • @TheTrackoShow
    @TheTrackoShow 8 วันที่ผ่านมา

    NextJS is Enterprise, Nike and My Job and many more use it

    • @furycorp
      @furycorp 7 วันที่ผ่านมา

      That doesn't make it enterprise. Its easy to say "X Brand" uses a framework when it could just be for marketing or docs sites vs. anything critical to core product.

  • @olalekanadekanmbi3771
    @olalekanadekanmbi3771 8 วันที่ผ่านมา

    Hey, I've been curious how would you refactor from just Web to accommodate mobile. Do u start a new repository or do u start moving folders around

  • @nodesignlaws
    @nodesignlaws 8 วันที่ผ่านมา +1

    fyi web is the landing page and app is the actual web application, not a mobile app

  • @dreamsachiever212
    @dreamsachiever212 9 วันที่ผ่านมา +1

    I thought you would give us a complete walk-through of this repo and explain the setup etc... I actually requested the creator of this repo from the same tweet he did agree to do a video but you know.... these guys.. I think they're already planning to add more features to it

    • @furycorp
      @furycorp 8 วันที่ผ่านมา +1

      Honestly its pretty minimal and nicely laid out skeleton of a project. Simply running down the list of items in the apps and packages directories should tell you a LOT. If there's any piece of the puzzle that doesn't make sense for you click into it and search for what imports it. Kudos to them for an intuitive project layout and clear descriptive concise names. A thing that's missing that I would require if managing a project that would also help you answer a lot of questions is for every app + package to have a README that at a minimum has a topline explaining how it fits in and identifies any special dependencies and third-party services or API's and what's required to get rolling with them both for dev and production (+ direct links to relevant docs + URLs). I never assume the dev is a TS ecosystem fanatic nor somehow knows what some trademark brand name service actually does. This helps onboard devs way faster among other benefits.

    • @dreamsachiever212
      @dreamsachiever212 8 วันที่ผ่านมา

      @furycorp I just started learning monorepo and turborepo a couple of weeks ago. So yeah wanted to have more in-depth details as you mentioned a README would be great. For instance I wanted to know the reasoning behind having the UI as a separate complete app instead of having it as a package.

    • @furycorp
      @furycorp 7 วันที่ผ่านมา

      ​@@dreamsachiever212 generally in a monorepo the popular convention is that "apps" are things that are deployable whereas "packages" are libraries that export code for import by other apps and/or packages in the workspace (i.e. like all the public packages on npm).
      Big Picture: the apps and packages directories are only a popular convention: the directory names "apps" and "packages" are actually completely arbitrary. With pnpm workspaces you can organize your workspace however you see fit. pnpm reads `pnpm-workspace.yaml` for the list of directories to scan for packages to consider as part of the workspace. For example some people like to define a separate "configs" top-level directory for packages that export shared config files so they're not lumped with other "packages". As another example some people prefer "libs" directory name to "packages".

    • @haydenbleasel1
      @haydenbleasel1 5 วันที่ผ่านมา

      Yeah I'll record something in the next week or so. I'll be adding more features, but very carefully. The line between useful and overcomplicated is a fine one.

  • @brayanjpm
    @brayanjpm 8 วันที่ผ่านมา

    It's useful for learning purposes but not for solopreneurs, as you've said, this starterkit is 'ENTERPRISE' for companies already stablished.

    • @furycorp
      @furycorp 8 วันที่ผ่านมา

      there's very little enterprise about this. its definitely solopreneur level for a real thing in production.

  • @zerefdev
    @zerefdev 8 วันที่ผ่านมา

    Keep in mind that you have to use vercel if you decide to use this template

    • @haydenbleasel1
      @haydenbleasel1 5 วันที่ผ่านมา

      You can likely deploy it elsewhere (Netlify, Custom VPS, etc.) - I just haven't written guides on it yet.

    • @zerefdev
      @zerefdev 4 วันที่ผ่านมา

      @@haydenbleasel1vercel bs is deeply cooked in this project

  • @tomich20
    @tomich20 9 วันที่ผ่านมา

    so, any actual good monorepo startekit you can recommend for nextjs with NextAuth, Prisma ORM, Stripe you can recommend? =)

  • @CreateApp-g5q
    @CreateApp-g5q 8 วันที่ผ่านมา

    Can you please make a tutorial of building a framework similar to Convex one?

  • @dogcodes
    @dogcodes 8 วันที่ผ่านมา

    Hi Josh, was wondering what headphones you are using?

  • @gold-junge91
    @gold-junge91 8 วันที่ผ่านมา

    How is the google analytics implementation has it a cookie consent banner that is working?

  • @48265868
    @48265868 8 วันที่ผ่านมา +9

    "enterprise-grade" - Uses Prisma xD lol

  • @captainayaan
    @captainayaan 8 วันที่ผ่านมา

    Can you make a turbo app tutorial for both for web and mobile app for same e-commerce platform?

  • @teofannispapadopoulos4349
    @teofannispapadopoulos4349 6 วันที่ผ่านมา

    Microservices ? How … often theres a confusion on serverless and microservices. While they can be used together usually microservices have well#defined boundaries that encapsulate end to end business logic , each service is independently deployable (for which part you often see it ship with its own database) essentially a black-box. In the repo we have a lamda - cool but lets not label it “microservice”

  • @GamePlay-pl2nv
    @GamePlay-pl2nv 6 วันที่ผ่านมา

    make more videos like this

  • @whynot9963
    @whynot9963 8 วันที่ผ่านมา

    Enterprise software with Prisma? Hell nah, in my own project compared it to a medium sized query, it was 2x slower than raw sql. Kysely has the performance and typings and you can use prisma schema

  • @vasylmarchak3494
    @vasylmarchak3494 4 วันที่ผ่านมา

    This is not micro services, basically this one monolith service

  • @mocambiquemaputomatola8238
    @mocambiquemaputomatola8238 8 วันที่ผ่านมา

    Hi Josh, can you build yelp clone

  • @pokescreation
    @pokescreation 7 วันที่ผ่านมา

    Why and who thinks that for building production grade software needs shorts no,stop using clerk,etc. they are not what professional uses

  • @ob34915
    @ob34915 7 วันที่ผ่านมา

    most of the enterprise companys uses angular, nextjs is just for twitter hype dev

  • @AlphaMan-e7r
    @AlphaMan-e7r 9 วันที่ผ่านมา

    Which browser do you use?

  • @reze_dev
    @reze_dev 8 วันที่ผ่านมา

    Could be better if they use jwt or oauth2 instead of clerk like laravel

  • @RoshanJeyarubanRajesh
    @RoshanJeyarubanRajesh 9 วันที่ผ่านมา

    11 min ago is crazy

  • @franciscosilva2135
    @franciscosilva2135 8 วันที่ผ่านมา

    Why don’t we just use a cappacitator for the mobile

    • @segu_.
      @segu_. 8 วันที่ผ่านมา

      what is that?

    • @franciscosilva2135
      @franciscosilva2135 8 วันที่ผ่านมา

      @ i only search about it i have no experience but for what i understand it is something that you can wrap your next js app and it will also compile to mobile but like i said i have 0 ideia how it works since i haven’t reach that phase yet

  • @o_glethorpe
    @o_glethorpe 8 วันที่ผ่านมา +1

    Nextjs for enterprise lol

  • @Deus-lo-Vuilt
    @Deus-lo-Vuilt 8 วันที่ผ่านมา

  • @reze_dev
    @reze_dev 8 วันที่ผ่านมา

    What the hell microservices your talking about bro?

  • @FranFiori94
    @FranFiori94 8 วันที่ผ่านมา +1

    Sorry but that repo it's trash

  • @zaabimahdi
    @zaabimahdi 8 วันที่ผ่านมา +12

    Next js can never be an Entreprise level development framework ....

    • @RadTwin
      @RadTwin 8 วันที่ผ่านมา

      🤦🏾‍♂

    • @rand0mtv660
      @rand0mtv660 8 วันที่ผ่านมา +1

      Yeah I like Next.js, but it lacks bunch of things on backend side to make it even production ready (let alone enterprise ready) for backend work. For frontend work it's pretty good, but backend not so much. It just lacks so many basic features to be a full app building framework.
      This boilerplate is unfortunately just another boilerplate that combines bunch of SaaS software together. At least it's free and people behind it are not trying to charge few hundred dollars like I've seen some others do.

    • @DOOM11777
      @DOOM11777 6 วันที่ผ่านมา

      What is nextjs missing? For the backend. ​@@rand0mtv660

    • @anitsarkar3737
      @anitsarkar3737 6 วันที่ผ่านมา

      ​@@rand0mtv660next.js is not production ready that is why Varcel aqure Tourborepo

  • @sourabhR4ikwar
    @sourabhR4ikwar 9 วันที่ผ่านมา +4

    Why prisma its pathetic. I would never use that for an enterprise application.

    • @ramongodas
      @ramongodas 8 วันที่ผ่านมา +4

      nobody cares

    • @dvillegaspro
      @dvillegaspro 8 วันที่ผ่านมา +1

      What’s wrong with prisma?

    • @48265868
      @48265868 8 วันที่ผ่านมา +1

      @@ramongodas You costumer will care when everything is slow af. Your wallet will also care when you are spending 10x more due to overfetching, multiple roundtrips and what not.

    • @furycorp
      @furycorp 7 วันที่ผ่านมา

      ​@@dvillegaspro it encourages devs to do things that actual DBA's wouldn't do and break postgres conventions in favour of TypeScript conventions. Definitely not good for any actual business app where data is the lifeblood of the business. Imagine blocking an army of data science + analytics, business analyst, DBA, and IT people (and their preferred tooling) because some JS/TS dev picked something that suits only them. You're also always missing tons of postgres features that are central to real-world enterprise apps but Prisma doesn't support. Prisma, Drizzle, and others ALL have issues with their DSL's for defining schemas: they mimic SQL but subtract features. For example you can't actually follow best practices as documented by postgres with either because the schema definition language doesn't support those features. In fact these things will auto-generate schemas that have items on the "DONT DO THIS" list from the official postgres docs.