This Folder Structure Makes Me 100% More Productive

Поділитися
Вставка
  • Опубліковано 20 жов 2024

КОМЕНТАРІ • 182

  • @LewisCowles
    @LewisCowles День тому +16

    Since nobody is commenting on your absolute boss-level excalidraw diagrams I will. This came up in my feed and I just came for the diagrams. Organise your code however makes sense for the folks that work on the code. This looks fine, but the real win here is in Excalidraw presenting information.

  • @SamuelL1clau
    @SamuelL1clau 2 дні тому +35

    Really helpful when you're facing the exact problem of maintaining a pretty large and complex application .. . And cherry on the cake is that boundary eslint module which I discovered today. Thanks for producing all these excellent videos !

    • @canadianbootz1
      @canadianbootz1 2 години тому

      Agreed - the eslint plugin config is new to me and 100% helpful - thanks!

  • @6sense651
    @6sense651 День тому +6

    Hi Kyle, As a beginner and struggling to organize my files since English is my second language where it takes time to think a name of a file or folder, this is a really HUGE help for us

    • @deatho0ne587
      @deatho0ne587 22 години тому +2

      Even if English is your primary it is always hard to name files, folders and variables. Might be the hardest part of development to be honest.

  • @ericmisha
    @ericmisha День тому +3

    You've just described is how Angular has been doing this for years. A textbook example of structuring medium and large-sized Angular applications that scale well. This is the proper way to do it.

    • @tengun
      @tengun 16 годин тому +1

      Also Django.

  • @foldisnomistake
    @foldisnomistake День тому +7

    Guys, take a look into FSD methodology (Feature Sliced Design). It uses pretty much the same approaches. Tried to build several project using it, and really loved it.

    • @IncomingLegend
      @IncomingLegend День тому +1

      looks good, will give it a try

    • @foldisnomistake
      @foldisnomistake День тому

      @@IncomingLegend yeah, and you can adopt it to your needs, and use whatever you like more from it

    • @arvi8843
      @arvi8843 17 годин тому +1

      how about circular dependency?

    • @foldisnomistake
      @foldisnomistake 14 годин тому

      @@arvi8843 you can setup linter for checking for it too. but usually it is not a problem in case of using FSD

    • @tuananhdo1870
      @tuananhdo1870 5 годин тому

      Feature-Driven Development (chatgpt)

  • @frostytf2
    @frostytf2 3 години тому

    This is the type of content I love to see. Thanks for going over practical examples and showing full config. Really insightful

  • @private-1
    @private-1 2 дні тому +11

    This is like domain driven design in the form of folder structures.

    • @CottidaeSEA
      @CottidaeSEA День тому +1

      If you're using domain driven design you probably should use a folder structure like this. If you're not, you're just making things harder for yourself and everyone else.
      A structure like this also helps in making it clear what's generic utility and what's domain/feature specific.

  • @rtpHarry
    @rtpHarry День тому +2

    Yeah I use a version of this, based on the Nx product structure. Its pretty good, especially to just have a plan that you know straight away where to put everything.
    But the problem I have is that the shared folder gets really messy still, and components can get lost really easily.
    I'm thinking about scrapping the shared folder and just having a shared folder or notation in each feature.
    The problem is that you have a component and then one other section needs to use it, so it has to get moved to the shared folder. For example, I have a library feature, which is basically a blog feed in the app.
    But then the report page needs to integrate posts into it. And now the blog display functionality has to be moved into shared.
    When its a little util component its easy to forget it exists. The shared cannot be organised much because if you nest it away you then have to go through every folder to discover if something has been built.
    It needs to have some extra-namespaced name to really make it clear what it is with no context. But if its cross cutting it has to have a vague name.
    And as the folder grows its just the same problem coming up again - everything is muddled together and you have to go through every component to find what you need and / or not reinvent the wheel.
    I don't know what the solution is. Perhaps at some point you just have to start making duplicate wrappers so the component can "live" with the feature, but simply contain the shared component. Or maybe an LLM will step in soon and become a search engine for your project.

  • @Vigiflyer
    @Vigiflyer 2 дні тому +20

    I'd be interested in seeing a NUXT implementation of this. Great Video. Thank you for taking the time to produce it

    • @QueeeeenZ
      @QueeeeenZ День тому +2

      You can use layers in Nuxt

  • @gauravkumawat5811
    @gauravkumawat5811 2 дні тому +4

    Exactly what I wanted to begin my Lead Management System Project ❤
    Thnks Kyle....🎉🎉

  • @javadbagheri9921
    @javadbagheri9921 2 дні тому +7

    I'm extremely waiting for the large project you want to publish on UA-cam, every time I saw your video, I learn a new thing. About 75% of my programming knowledge come from your video just because I learn a little from others before you. I know this is hard to making video for us but I want from you to help us Kyle ❤❤❤❤❤. I hope you succeed more and more in your life.

  • @AIZEN155
    @AIZEN155 2 дні тому +11

    I would like to see the structure for monorepo that contains backend and frontend logic with a mobile app and additional things like auth interaction with databases and more

    • @IncomingLegend
      @IncomingLegend День тому +1

      monorepos suck

    • @AIZEN155
      @AIZEN155 День тому +1

      @@IncomingLegend agree but needed for big projects, you don't wonna create many repos and manage them separately

  • @megaclinton6527
    @megaclinton6527 2 дні тому +2

    developing can get really complicated with just one change... thanks for simplifying it!

  • @StephenFosterUK
    @StephenFosterUK День тому

    This is sound advice no matter the framework or language even. Its a lightweight Domain approach(which is frankly just enough DDD lol) and I've been using for nearly a decade.
    Anyone starting over in Angular world NX tooling has the boundries approach built into the tooling and it works well.
    I can't tell you how many times I've had to reject a PR from a new joiner because someone editied the rules on imports and thought that was the solution. There really is no better way to manage a large project than by feature.
    Depending on the framework you may even be able to skip some sub folders and rely on filenames.. Bend it to suit but make sure you try to protect the vertical slicing of features. If you really have to jump across and cant avoid then make a rule for 'api' (or similar name) and explicitally export the limited functionallity. Then you have a known entry point.

  • @roguesherlock
    @roguesherlock День тому

    perfect timing. I currently have domain driven architecture where all my business logic flows through that specific domain but I should probably extend that to include all the ui too!

  • @ninoJAckwwe
    @ninoJAckwwe День тому +5

    ُThank you so much Kyle, BTY you're the only youtuber that I watch his video with the normal playback speed :)

  • @SSan-n3q
    @SSan-n3q 5 годин тому

    TIL about the eslint boundary plugin, will implement this way of folder structure going forward. tysm for the amazing videos and diagrams Kyle :)

  • @wildernns
    @wildernns День тому +1

    You're killing it with the unique content ideas as usual! Thanks Kyle

  • @denisgithinji1119
    @denisgithinji1119 День тому +1

    Couldn't have been released at a more right on time. Thanks 👍🏽

  • @maddada
    @maddada День тому

    Thank you for this!
    This is great for smaller projects but for larger ones going with this method would be kind of reinventing Nx monorepos with Domain Driven Design. With those you get extra benefits like:
    - Being able to add more related apps in 1 project and share dependencies between them (optional)
    - Using Nx affected to run only the e2e/component level tests that are relevant
    - Easily keeping the dependency graph correct without circular deps or tight coupling
    + many more
    It's always better to use industry standard frameworks instead of reinventing our own.

    • @IncomingLegend
      @IncomingLegend День тому

      monorepos suck

    • @maddada
      @maddada День тому

      @@IncomingLegend I used to dislike them too but for large projects they're a godsend.
      For example my company has a SaaS product that's used by massive clients like Samsung, Mitsubishi, BP and Nasa.
      We have thousands of e2e tests to ensure that our changes don't break customers pages (these e2e tests need to run on 2 environments: SharePoint SE and SharePoint Online). Without Nx monorepos and Nx affected we have to run the whole test suite every time we want to make a release which takes 8+ hours (imagine the tests fail and we have to fix the issue and rerun too)
      With Nx monorepos + Nx affected we are about to run only the tests that are related to the part of the product that changed. We can also run the relevant e2e tests automatically on PR creation.
      There's a reason massive companies like Facebook and Google use monorepos.

  • @pezwarrior4
    @pezwarrior4 2 дні тому +2

    Modular setup is what I'm practicing right now.

    • @warrenarnoldmusic
      @warrenarnoldmusic День тому

      20:53 😅Js devs have just discovered scoped packages. This is the convention in java

  • @yoyo26-34
    @yoyo26-34 День тому

    very interesting, I'm already defining my folders this way. Global Objects and "business ones". Then I'm adding a "business scenarios" that links everything all together. For example "scenario_userlogin, scenario_cardpayment, ..."

  • @noman_ali_khan
    @noman_ali_khan 16 годин тому

    Hey Kyle I really love your work.
    The requested video is How can we document any project from scratch technical documents for front-end and backend.
    Thank You

  • @fletcherrat337
    @fletcherrat337 День тому

    Absolutely love the diagrams and the way you have shown folder structure and user stories in the same example.
    My only complaint is that you scroll to the left as your complexity increases instead of panning to the right like normal English reading left to right lol. It's literally personally choice and inconsequential so totally ignore this and keep putting out awesome content.

  • @se7sTC
    @se7sTC День тому

    I think this structure forces you to think in Microfrontends architecture. Not just at dependency level, but rendering, decoupling, state and communication

  • @rns10
    @rns10 День тому

    I have a request - I would like to see a project which uses a separate backend - exposed with APIs (like python, go, java or even js) but separate.
    As backend dev, if I want to build frontend from scratch I would love to learn from a project video. The backend project videos make bare minimum UI, and frontend projects make bare minimum backend, or use full stack framework like next js which doesnt help in making projects if backend is separate.
    If you have already made a video on this or can give me any reference that will also be good.
    There are some concepts which are not easy to understand with like - auth, have the frontend, backend state same for an object, how to handle APIs where you need to call multiple apis to achieve a single data feature on frontend.

  • @megamind452
    @megamind452 День тому

    Theo can't be mad this time.
    Nice vid 👍

  • @jacobphillips9235
    @jacobphillips9235 День тому

    Amazing! Thank you for the charts and diagrams! That ESLint piece is sweet! And yes, I'm using Next.js 14 app router with a newer project that is in the early fun stage. So I'd love to see those specifics 💖

  • @realfranciscohermida
    @realfranciscohermida День тому

    Would be great to see this going a step further and expanding this structure to a pnpm multi package(monorepo) project. Some of those features could be reused across multiple apps if they are extracted into their own package which would have the same recursive folder structure. You would have similar rules for the packages itself.

  • @Raphael-jo1rp
    @Raphael-jo1rp День тому +1

    I can see the advantages, but it's not one sided either:
    1 - Get use mentally to this workflow can take time and is not straight forward based on previous habits;
    2 - You need some time to setup your eslintrc file, and to think carefully beforehand about your structure;
    3 - Decide how to separate your files and folders. For instance, why you put login in app in the first place? I could see it in either shared or even features, for instance;
    4 - If you work iin a team, you will have to talk about that shift, and it might simply get rejected.

    • @gabrielcorpuz5649
      @gabrielcorpuz5649 День тому +1

      Deciding what parts of the app are features and shared is probably the hardest part

    • @rtpHarry
      @rtpHarry День тому

      Hmm I wrote a big reply about this but its not showing now I came back to edit it. I guess basically, all I wanted to say was, you don't decide where to put it, the app does. The first time you need to use a component in another feature, you refactor it out into the shared folder. It organises itself.

    • @31realbest
      @31realbest 2 години тому

      Login refers to the page not to the functions, etc.. Everything in the app folder are the pages in your website, just code to the render the different components

  • @arifrabbani4204
    @arifrabbani4204 День тому

    Great video. I want to see the next version. With more folders like caching, middleware and all.

  • @StanislausKatczinsky
    @StanislausKatczinsky День тому +2

    What happens in situations where you have to reference other features. Let's say you want to delete a user to comply with regulations you would have to delete also products added by that user, so how would you structure that?

  • @jhaeberli
    @jhaeberli День тому

    Great explanation!

  • @TheHermitHacker
    @TheHermitHacker День тому

    I have a sneaking suspicion this will help me a lot! Thank you so much for this. I didn't know that Linting tools could this.

  • @flavioarantesdoamorimbarce95
    @flavioarantesdoamorimbarce95 День тому +2

    Thanks for sharing Kyle. But i was wondering if I need some logic for example of user, the current user id and a product id to create an order. I would have to break the folder structure to access some user logic on the product page or have duplicated code. Do we have a solution for it?

  • @LePhenixGD
    @LePhenixGD 2 дні тому

    I really like this folder strucutre, very modular !

  • @Weahl
    @Weahl День тому

    That looks amazing!

  • @anuragpramanik6095
    @anuragpramanik6095 День тому

    Kyle got tanned :D. But great content. Thanks for sharing.

  • @aaeonCodes
    @aaeonCodes День тому

    Very insightful and practical. Thank you Kyle for always focusing on the useful stuff.

  • @petherpettersson6152
    @petherpettersson6152 День тому

    It's a take on Vertical Slice Architecture, haven't seen or thought about it for web before though.

  • @cat_copilot
    @cat_copilot День тому

    Ty for Eslint tip

  • @dgdev69
    @dgdev69 День тому

    Bro never failed to deliver. Love you man.
    I am up for nextjs video

  • @maddada
    @maddada День тому

    Great video! Thank you.
    Can I know how you're drawing this red line with your cursor when you're showing the diagram?

  • @loquek
    @loquek День тому

    Interesting approach, I don't think it's perfect, but thank you for clearly sharing with visuals tools and a comparison!
    I thought it was interesting how next (or a page router) effects this setup, perhaps as a project like this scales, an API would be more preferential for some features and perhaps you should be breaking into a monorepo. Hope that's helpful comment feedback✌

  • @The_RubenM
    @The_RubenM День тому

    n00b question: what if you have a feature that shows all the products that a user has liked? In this example, would you put that in the user folder or the product folder?

  • @matthiasweston3426
    @matthiasweston3426 День тому

    Remix Feature Folders by Jacob Paris is a good read.

  • @cbbcbb6803
    @cbbcbb6803 День тому

    Let's give it a try!

  •  День тому

    So you saying you found modular system in 2024 :) Great work dude.

  • @yickkiuleung5037
    @yickkiuleung5037 9 годин тому

    what about contexts ? will they have their own directory or be combined with one of the listed ones ?

  • @zmeireles68
    @zmeireles68 21 годину тому

    That's an excellent way to force the developer to follow a certain pattern.

  • @leulfanuel3550
    @leulfanuel3550 День тому

    When I see your videos I feel happy. How do you do it?

  • @i-heart-google7132
    @i-heart-google7132 День тому

    Hey Kyle, here's a question - why don't you simply use the Nx Workspace, instead of reinventing the wheel? :)

  • @charlescoult
    @charlescoult 2 дні тому +1

    Can this be made recursive? like - the 'products' feature could have a 'features' folder within it that defines features for the products features

  • @chambaderaphael8946
    @chambaderaphael8946 День тому

    It reminds me of the module organization of angular or nestjs👍

  • @rugucloud
    @rugucloud День тому

    In fact, organizing TypeScript files into folders is the most challenging part.

  • @MilanTrpkovic
    @MilanTrpkovic День тому

    How long have you been in this line of work? Great content, very helpful, greetings from Serbia

  • @phailsharkaev4653
    @phailsharkaev4653 День тому

    If you dive into the use-cases architecture approach, you’ll become a 1000x developer!

  • @joezappie
    @joezappie День тому

    Say you have an orders feature, and in the OrdersGrid file you wanted to show the user that placed it with a user component that shows their name and picture. If features are restricted from other features, how can you do that? If you make that user component a global that makes it confusing for maintenance as down the road if i forget id go to the user feature folder to try to find it.
    Great video, just curious how youd deal with a common use case like this.

    • @arvi8843
      @arvi8843 17 годин тому

      Yep he didn't address circular dependency or relations between features.

  • @omnilothar
    @omnilothar День тому

    if the folder name should consist of 2 words, what do you use? camel case, dash or underscore?

  • @21mighty86
    @21mighty86 5 годин тому

    What if you have product card component that has list of users that bought the product (from users feature).
    What to do in this example?
    Is product feature allowed to import from users?

  • @Saleh_Balakisiyev
    @Saleh_Balakisiyev День тому +1

    I think it would be a lot harder to implement i18n to this folder structure

  • @GiigliHub
    @GiigliHub День тому

    Nice awesome file structure ,Beginnergs always worries about it..

  • @chrishabgood8900
    @chrishabgood8900 2 дні тому

    You do an amazing job!!!!

  • @arvi8843
    @arvi8843 17 годин тому

    How does this structure address circular dependency. For example, user needs products list and vice versa? Wouldn't they be importing from one another thus circular dependency?

  • @thebks1
    @thebks1 День тому

    How we can manage the global state of the application, particularly if we’re using Redux Toolkit. lets say I follow this style, where should I create Feature specific slices and `store.js` files? Also, would it be possible for you to create a dedicated video on state management?

  • @MrJettann
    @MrJettann 19 годин тому

    Nice way of structuring folders! But i have a question, you have globally shared components, but in real projects some of these components only belong to certain pages, so it would be nice to have one more folder like pages or modules, where you will store everything related to this particular page, like hooks, components etc and there you will use different features from features folder, am i thinking the right way?

    • @WebDevSimplified
      @WebDevSimplified  6 годин тому +1

      That is something you can do. I tend to find that pages that become complex enough to need all that extra stuff sometime can just become their own feature, but that isn't always the case. If you find you have a few components/hooks you need for just one page I would recommend either just putting them all in the same page file if they aren't too complex or creating a separate _components/_hooks/_etc folders at the level of the page in your app folder. This would require you to modify the ESLint config, though.

    • @MrJettann
      @MrJettann 5 годин тому

      @@WebDevSimplified sounds reasonable, will try it!

  • @mingyangli9171
    @mingyangli9171 День тому

    Great video. Would you be open to share your thoughts on a better structure for TypeScript-based Node.js folder structures? Maybe another video?

  • @a.r.b5653
    @a.r.b5653 День тому +5

    Features not being able to import each other is too restrictive... What if i'm creating an app as complex as Figma... Then i would need certain Features to be able to interact with other Features...

    • @pkorneev5226
      @pkorneev5226 День тому

      Check out feature slice design architecture

    • @convulsion1928
      @convulsion1928 День тому

      I would argue that it's still good for reusability and avoiding reliance between functionality that are quite different. What could be added is another layer above the features layer, with a primary function of bundling different features together. So, in practice your page will be a composition of different features and 'widgets' or whatever you want to call it, that are just more complex composition of features underneath.

    • @paragateoslo
      @paragateoslo 22 години тому +1

      Not at all. If a feature needs to import another feature. That part is no longer a feature, but a shared component and it needs to be generalized and moved to a shared components folder. The rules are pretty simple
      - A component is only used in a feature|page. It goes in that folder
      - A component is used between features. It goes to the shared folder.

    • @bejalal17
      @bejalal17 20 годин тому

      @@paragateoslo I agree with you to a certain extent. I'd like to emphasize the fact that shared components should remain featureless like a UI kit (alerts, inputs, menus etc...) or maybe a library dependency whereas feature folders should mainly reflect points of entry (pages). If a component is truly using multiple features then I think it should be split into the feature-specific logic and featureless (technical) then in each feature reference the reusable technical part and redefine (for the lack of a better word) the same feature. Surely, the main complaint would be that this goes against DRY but at least you guarantee feature relative independence.

    • @paragateoslo
      @paragateoslo 3 години тому

      @@bejalal17 Oh yes. When I say moved to a shared folder. I don't mean take that component straight as it is from the feature folder. You identify the parts that are shared, refactor out that out as feature free reusable component that is put in the shared folder.
      A shared component should NEVER contain entity/feature/page related code. It should be agnostic.

  • @nobir98
    @nobir98 2 дні тому +50

    Uncle Bob was actually telling the software engineers a decade ago about "The Clean Architecture"
    Edit: I didn't know that eslint can do that. Thank you Kyle for showing this feature of eslint

    • @NaourassDerouichi
      @NaourassDerouichi День тому

      Great reference, thanks for the mention!

    • @Shuyinz
      @Shuyinz День тому +1

      So the clean architecture is feature based architecture Kyle is showing us?

    • @nobir98
      @nobir98 День тому

      @@NaourassDerouichi You are most welcome 😁

    • @nobir98
      @nobir98 День тому

      @@Shuyinz
      Not precisely. Clean architecture can be created using feature-based approaches, although it is not clearly defined, as Uncle Bob points out. He even claims that the architecture's layers do not remain in four levels, but rather more or less (mentioned in his article), but the dependency rules are always applied to the layers. In other words, dependency rules say higher-level layers should not depend on lower-level layers.
      Clean architecture has two basic goals: 1. Separation of concerns. 2. Dependency Rules.

    • @yojou3695
      @yojou3695 День тому

      meh

  • @MattCreenan
    @MattCreenan 2 дні тому +4

    tl;dr code locality is good 😃
    On the web app my team created and maintains, we structure things by scope at the top level, then by type underneath that. We use Nx, so everything is under either apps/ or libs/. But under libs/:
    - A "shared" scope is at the top for anything used across features.
    - Everything else is a feature level scope just named whatever the feature is
    - Underneath those, we group types of files together: ui/, feature/, data/, utils/, etc.

  • @KristianTheDesigner
    @KristianTheDesigner 13 годин тому

    100% more productive is a bold claim. Nice overview of how you like to structure a project tho. Structure is all about common sense.

  • @antonarbus
    @antonarbus 2 дні тому +1

    Looks like the light version of Feature Sliced Design pattern

  • @julionunes2092
    @julionunes2092 2 дні тому

    This project structure is very commonly used in angular.
    Angular works with modules and each module is a feature.

  • @tengun
    @tengun 16 годин тому

    This reminds me with Django and their modules.

  • @josecentenodev
    @josecentenodev 7 годин тому

    woooooooooow man! this is pure gold

  • @nexovec
    @nexovec 2 дні тому +1

    oh, what about starting flat and just making folders when it seems counterproductive to not have them? Kinda always works out for me.

    • @The-Torbey
      @The-Torbey 2 дні тому +1

      That would be a sort of refactoring. Costs unnecessary time and you need to change the imports everywhere every time. Sure, for small projects you don't really need the folder structure shown in the video but it's a good practice to have any kind of structure so you don't have to change everything all the time

  • @cagansen5404
    @cagansen5404 2 дні тому

    it's like the vertical slice architecture right? and if you cold make a video about nextjs 15 and with react 19 both with best practices it would be sick

  • @WhyAreYouFindingMe
    @WhyAreYouFindingMe 2 дні тому

    The best folder structure, I found

    • @warrenarnoldmusic
      @warrenarnoldmusic День тому

      20:53 😅Js devs have just discovered scoped packages. This is the convention in java

    • @Snozcumber
      @Snozcumber День тому

      ​@@warrenarnoldmusicoooo Mr snazzy pants

    • @Love_Peace_Giver
      @Love_Peace_Giver День тому

      @@warrenarnoldmusic java is not as popular as js lol

  • @rohitkharche7562
    @rohitkharche7562 День тому

    What about collocation of components with _components folder just in the place it is being used ?

  • @julianklumpers
    @julianklumpers День тому

    How would you apply this to a monorepo where you want to reuse code across multiple applications

  • @guilhermenascimento4067
    @guilhermenascimento4067 День тому

    And how you make the relations in drizzle if you can’t import the table outside

  • @ivanmaglica264
    @ivanmaglica264 День тому

    I highly suggest that instead of features folder, you name it modules folder. Features folder should be reserved for features objects, pieces of functionality that you extract out of main module for better clarity and separation of logic. Once your objects/modules become big and contain more subdomains, you extract each subdomain onto it's own feature, especially if it has it's own state. There is nothing more horrifying than seeing a module with multiple features crammed in it, all containing their own state. Result, an object with 1000 private properties and names spanning two screens.

  • @ziacodes
    @ziacodes День тому

    Let's say I've a function getUsers() in features/users
    I want to use that in features/blogs, and let's say I want to use getUsers() function.
    How I do that? Eslint won't allow to import from other features? Move that function to top level? only a single function on top level while rest in feature folder? This is confusing me.

  • @simpingsyndrome
    @simpingsyndrome День тому

    Can u make a video about the difference between folder structure and a System Design for example MVC is this any related with the folder structure?
    Please like to up this

  • @tannertanner1
    @tannertanner1 День тому

    😱 tysm

  • @2gbeh
    @2gbeh День тому

    Rules implementation 👍

  • @PooyaBadiee
    @PooyaBadiee 2 дні тому +3

    I usually go with this approach but I name them modules instead of features

  • @awekeningbro1207
    @awekeningbro1207 День тому

    My question is, why does a frontend project need a database folder? Frontend doesn't access db directly, it talks with backend via the api, so I feel like db folder is of no use.

    • @oliverhughes169
      @oliverhughes169 День тому

      The example was a NextJS app, which is more 'fullstack'. As well as your frontend code, you are also writing server code executed on a node server that is providing the API and access to the DB.

  • @NaourassDerouichi
    @NaourassDerouichi День тому

    Astro fullstack architecture please !

  • @imkir4n
    @imkir4n 2 дні тому

    13:00 you know what, i just did the reverse of this just now. lol 😂

  • @deatho0ne587
    @deatho0ne587 22 години тому

    Odd part is this is not to far removed from the junior version, just instead of one file multiple files/directories.

  • @stefan-d.grigorescu
    @stefan-d.grigorescu День тому

    You can take this one step further. Try grouping by an action your user can perform. So, instead of having a folder called products, have "increase product price", where you could keep together things related particulary to that action, like a popup component, some dtos to interact with api, some service injected to call the api, constants. All these things that are dedicated for that action. This is even more cohesive than having together in a products/data folder some dtos ProductSaveRequest, ProductListItemResponse, IncreaseProductPriceForm etc. (all represent products, but do not work together, they are dedicated to specific tasks).
    I have discovered this idea before, but just recently started to get it and try it. It's really nice, you might wanna think about it :)

  • @Ryujin_001
    @Ryujin_001 День тому

    Does anyone know which browser he is using ?

    • @zy1p
      @zy1p День тому

      Arc

  • @videoponder4673
    @videoponder4673 День тому

    I like that approach. But hey, why not just have an app folder and folders A to Z and sort functions alphabetically?

    • @NorthernChimp
      @NorthernChimp День тому

      Alphabetical order becomes quickly nonsensical.

  • @pkorneev5226
    @pkorneev5226 День тому

    Isn't it called feature sliced design architecture?

  • @ianengelbrecht4773
    @ianengelbrecht4773 День тому

    Gold

  • @stefanopuloz622
    @stefanopuloz622 День тому +1

    In theory this sounds great in practice it is not.
    This approach requires constant planning and paying attention to what goes to which feature folder. For one-man or small to mid-sized projects it is doable.
    For large scale projects with a lot of people this devolves quite fast into bloody mess. Do not try it if that is the case.

  • @noriller
    @noriller 2 дні тому +1

    I try to make something similar... been calling it (in my head) a "fractal folder structure" (because you know, fractals...)
    My rule is almost what you described, but allowing for further nesting when needed. (not sure how you would handle it there)
    Like productsForFoo, productsForBar would each be able to replicate the products structure. The further nested, the "less impact" it can have, so someone more junior can work on it. But as it is needed "higher", then I refactor (aka move to a common shared space) and I know that the closer to root, the more impact it can have... so someone more senior and/or more people reviewing the changes.
    Didn't know about that eslint plugin, but not sure how it would handle "recursive" folders.
    Actually, I always go for making refactoring easier, so I can make a productsForFoo.ts first, if needed I rename to productsForFoo/index.ts, creating a folder and an index (no need to refactor imports), then move things on that file to adjacent files/folders as needed.

  • @JEYTODEE
    @JEYTODEE 4 години тому

    Das mit Servern von Amazon ist aber an sich egal. Das ist halt ein Cloud Provider, davon gibt es aber viele und auch einige in der größere. Eigene Server in den Größen sind einfach nicht sinnvoll. Bei so einem Cloud Provider kann man halt innerhalb von wenigen Momenten mehr Kapazitäten dazu buchen bzw. starten um mehr load gleichzeitig abzuarbeiten.

  • @fabaladibbasey7453
    @fabaladibbasey7453 День тому

    Well vertically sliced