How To Structure Your Golang (API) Projects!?

Sdílet
Vložit
  • čas přidán 1. 06. 2024
  • ► Join my Discord community for free education 👉 / discord
    ► Become a Patreon for more exclusive content 👉 / anthonygg_
    ► Buy my a coffee 👉 donate.stripe.com/aEU2a6ayH2u...
    ► Follow me on Twitter 👉 / anthdm
    ► Follow me on GitHub 👉 github.com/anthdm
    In this Golang tutorial, I will show you MY best practices on how to structure your Golang (API) projects.
    #golang

Komentáře • 67

  • @anthonygg_
    @anthonygg_  Před rokem +2

    ► Join my Discord community for free education 👉 discord.com/invite/bDy8t4b3Rz
    ► Become a Patreon for exclusive tutorials👉 www.patreon.com/anthonygg_
    ► Buy me a coffee 👉 donate.stripe.com/aEU2a6ayH2uCa3u4gg
    Thanks for watching

  • @TheRealisticNihilist
    @TheRealisticNihilist Před rokem +23

    I love the way this guy says "structure".

  • @krislui852
    @krislui852 Před 8 měsíci +5

    just learnt go recently and trying to build my first project on it. tried different ways to structure my project but found them being quite messy. great video, helps a lot.

  • @scarthebadguy
    @scarthebadguy Před rokem +5

    Hey mate these are great videos. I love how verbose you are as you type. I learn more from you talking than I have from any udemy course

  • @mwnkt
    @mwnkt Před rokem +3

    loving the consistency in uploads, loving the channel so far

  • @linhnguyen05111999
    @linhnguyen05111999 Před 2 měsíci +1

    omg amazing! I really needed this. Great example, especially the storage interface.

  • @jondoe79
    @jondoe79 Před rokem +1

    Super clean, it's grouped by feature.

  • @Incolent
    @Incolent Před rokem +5

    Just stumbled upon your channel. Amazing content for students! Keep it coming!

  • @pss_crs
    @pss_crs Před rokem +1

    I'm regretting notvdiscovered this channel early thanks.

  • @Leon-cj8hd
    @Leon-cj8hd Před 10 měsíci

    Your coding speed is insane, even while talking. Viewed some videos, I think the content is great, thanks a lot :)

  • @joshb7001
    @joshb7001 Před rokem +2

    You are pumping out golden eggs non stop. Thank you

  • @andreimikhalkevich5633
    @andreimikhalkevich5633 Před 11 měsíci +1

    go ahead Anthony, very helpful skills

  • @davidhtorres
    @davidhtorres Před 9 měsíci

    These videos are awesome! Thank you! Very clear!

  • @Shatterhand16
    @Shatterhand16 Před rokem +12

    Watched your "Important Tips On How To Write Idiomatic Code In Golang" just before watching this, and I believe that the interface declared in 8:02 should be Storer instead of Storage, same for module name. Additionally maybe it would be worth to enable screencast mode in vscode with smaller font and offset? I think it'd be great to learn some of the shortcuts that allow you to be that fast just by watching. By the way loving the content, keep it up!

    • @anthonygg_
      @anthonygg_  Před rokem +8

      Yeah storer would maybe more idiomatic. You are right.

    • @jean-naymar602
      @jean-naymar602 Před 8 měsíci +4

      This is a common misconception but the "effective go" doc does NOT say that every interface should end in -er.
      Instead, it says that IF an interface defines only 1 method, then this interface should be named by appending -er to the method's name : "By convention, one-method interfaces are named by the method name plus an -er suffix"
      That's it.
      (Admittedly, one method interfaces should be what you aim for anyway but still, you shouldn't bother naming multi-method interfaces with -er...)

    • @Shatterhand16
      @Shatterhand16 Před 8 měsíci

      @@jean-naymar602 That's cool to know, thanks for detailed explanation!

  • @tintin537
    @tintin537 Před rokem +1

    Thank you. as always superb.

  • @terriprifti5069
    @terriprifti5069 Před rokem +3

    This is a gem 💎

  • @JohnDoe-ji1zv
    @JohnDoe-ji1zv Před rokem

    Anthony thanks for the video! Would like to get your opinion on di frameworks like Uber fx. Do you use dependency injection frameworks in your applications ?

  • @Noudapi
    @Noudapi Před 2 měsíci

    Hey Anthony thank you for your video. I just don't understand how you implement the storage interface. Do you add all the functions to implement for all entities of your database?

  • @ThePandaGuitar
    @ThePandaGuitar Před rokem +1

    I don't know Go and that flag string is awesome. I can see why making CLIs in Go is sweet.

  • @blazinglyfaster9935
    @blazinglyfaster9935 Před rokem +1

    Perfect timing 🚀🚀🚀

  • @frozenn00b
    @frozenn00b Před 5 měsíci +1

    Breaking all the Golang project structure conventions for "reasons". Convention is to use cmd, internal, pkg, test for sorting your packages... arbitrary folder structures introduce additional hurdles for newcomers to the project to figure out what you're doing.

  • @soufta5872
    @soufta5872 Před 6 měsíci

    Hi there. Is golang a good thing for sysadmin and autmation projects ? I don't want to use python especially when it comes to third party librairies that are hard to install on production ! Thanks

  • @JanPhilippHeinrich
    @JanPhilippHeinrich Před rokem +3

    Hey Anthony,
    basically this is a good video but could you explain why you put the interface for store
    right there where it is implemented? I learned that we use duck typing / structural typing
    which means we would put the interface were it is used.

    • @anthonygg_
      @anthonygg_  Před rokem

      In have a video explaining interfaces and why you should use them

  • @bmitch3020
    @bmitch3020 Před rokem +13

    "package util" oh no, Oh no no no no no.

  • @nickchristoforidis6176

    Hello Anthony,
    A while ago, I just watch the "How To Build And Structure A JSON API Project In Golang!?" video, in which you're following a sightly different approach concerning the folders/packages structure (which I love very much BTW). "Everything on root" you're saying, "unless it's really needed".
    I'd like to ask you why? Does this happen because the videos are from different time?
    Thank you.

    • @anthonygg_
      @anthonygg_  Před rokem

      My personal opinion is to keep things very simple and with as less folders possible. Because soon or later you will end up with circular dependencies. But I know that this is very hard for a lot of people to switch to due to the fact that the meta is to folderize like a mad men. So, I try to switch things up and give people multiple approaches on "how they could structure Golang applications".

    • @nickchristoforidis6176
      @nickchristoforidis6176 Před rokem

      @@anthonygg_ Got it!
      I'm just starting and I'm friend of the minimalistic approach. You've right though.

  • @rafaelcordoba13
    @rafaelcordoba13 Před 10 měsíci +1

    How would you organize all the other go files based on application features? For a game server for example, you have a shop, daily quests, daily login, clans, events, wallet, etc. How do you see that scaling?

    • @anthonygg_
      @anthonygg_  Před 10 měsíci

      Just separate handlers, data, and business logic

  • @cothromachd
    @cothromachd Před rokem +2

    anthony the sigma

  • @maximilianlang7175
    @maximilianlang7175 Před rokem +2

    If you have more than one route, maybe something like /users and /books. Would you implement one store for all or would you have one store for all your types?

    • @anthonygg_
      @anthonygg_  Před rokem +1

      Depends. You could make more interfaces for each domain if you want. Otherwise your storage interface will be a raidboss

    • @maximilianlang7175
      @maximilianlang7175 Před rokem

      @@anthonygg_ Thanks! So you would have a user and a book interface and then several implementations for mongo oder mysql

    • @anthonygg_
      @anthonygg_  Před rokem

      @@maximilianlang7175 Yes. UserStorage, bookStorage and so on.

    • @maximilianlang7175
      @maximilianlang7175 Před rokem

      @@anthonygg_ and do you plan to make a video about mongo?

    • @anthonygg_
      @anthonygg_  Před rokem +1

      @@maximilianlang7175 good idea, will note that.

  • @MaheshKumar-tc3gn
    @MaheshKumar-tc3gn Před 2 měsíci

    Do you keep everything in server package. Server package will handle user requests, in future it will handle all the separate modules? I think it is bad idea and bad structure

  • @jed271
    @jed271 Před rokem +5

    What are your thoughts on hexagonal architecture?

    • @anthonygg_
      @anthonygg_  Před rokem +9

      Thats a scam

    • @jed271
      @jed271 Před rokem +1

      @@anthonygg_ can you elaborate more? I really like your contents

    • @anthonygg_
      @anthonygg_  Před rokem +5

      @@jed271 I think that people are inventing new ways of doing things because they have nothing better to do. My advice is to just solve the problem and do what works for you. The folder structure I showed you worked very well for me and I think it's a structure that is also highly adopted by a lot of big open-source projects. Don't make it too complex.

  • @andrewcathcart
    @andrewcathcart Před rokem +2

    Random, but can you export your vscode setup? Theme looks v clean

  • @pavelastraukh9905
    @pavelastraukh9905 Před 8 měsíci

    Is there a reason why store is passed by value and not by reference?

  • @kamalkamals
    @kamalkamals Před rokem +1

    so the storage it s look like session of connection to mongodb, but is that a best practice to inject it as params in every function of the services ?? why no use it like a global variable !

    • @anthonygg_
      @anthonygg_  Před rokem

      Yup. Im using that approach right now.

    • @kamalkamals
      @kamalkamals Před rokem

      @@anthonygg_ greate i use with graphql and works good, are u test before upload file with graphql ?? sorry if that is not the topic of this video

  • @hello-test-user
    @hello-test-user Před 10 měsíci

    make : The term 'make' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
    the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:1

  • @jorisjansen2892
    @jorisjansen2892 Před rokem +1

    🚀🚀

  • @2gbeh
    @2gbeh Před 2 měsíci

    🇳🇬 Is Go a high level language ? This syntax looks sick (in a bad way).

  • @insert-name1500
    @insert-name1500 Před rokem +2

    What's the name of this VS Code theme?

  • @pedrohenriquebufulindealme5763

    Do you have any video that extends on the Storage pattern you showed?

    • @anthonygg_
      @anthonygg_  Před rokem

      Hmm. Not sure. I use it in a lot of streams and projects

  • @gustavogoncalves2101
    @gustavogoncalves2101 Před rokem

    At interface storage can we make a gerenic interface with the default CRUD methods to work with N models?

  • @VeereshPatel15
    @VeereshPatel15 Před rokem

    Hi bro, how to learn golang
    --->>>Please explain learning path about golang & solidity
    -- >>>> how to learn / build /test/ deploy frontend for web 3 projects

  • @faizulla5838
    @faizulla5838 Před měsícem

    A lot off Bla Bla Bloa ... "How To Structure Your Golang (API) Projects!?" , but just 3 min about structure .... why need in this video inside the file?
    20 min video will good talk mi 15 min about folders and fills but not about insite the file.

  • @rezaneyrami7944
    @rezaneyrami7944 Před 5 měsíci

    Hello . I wish you would speak more slowly. I can hardly communicate with your language. If possible, speak more slowly... Thank you

  • @samess_
    @samess_ Před rokem

    Please create a cli app that generates the template of your structured project...🥲

  • @Gertozzz
    @Gertozzz Před rokem +1

    When are you going to code a Shalien server? Request.get.go