[{"data":1,"prerenderedAt":446},["ShallowReactive",2],{"project-31958823":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":41,"post_text":44,"what":45,"said":93,"maker_in_thread":200,"shape":212,"grid":216,"attempts":404,"same_week":409,"maker_shows":39,"maker_hidden":438,"reader_version":439,"card":440},"31958823","Copper","A Go framework for your projects","title","Show HN: Copper – A Go framework for your projects","https:\u002F\u002Fgithub.com\u002Fgocopper\u002Fcopper","github.com","tusharsoni",1656768647,2022,146,80,414,2570,17,"notable","dev_tools","web framework","library",[24,21,25,26],"go framework","go web","dependency injection","mixed",-0.162,{"positive":30,"neutral":31,"mixed":32,"critical":33},4,6,0,8,18,{"design":36,"idea":38,"docs":40},{"positive":37,"critical":30},2,{"positive":39,"critical":37},1,{"positive":32,"critical":39},[42,39,43,32,43,32,43,39,32,32,32,32,39,32,32,32,32,39,32,32,32,32,32,32,32,32,32,43,32,42,32,32,32,42,42,43,32,39,39,39],5,3,"Hey HN! I've been working with Go for the last 5+ years at large-ish companies building products that many of you may use regularly.\n\nA ton of people say that Go's standard library is really powerful and usually enough to get by without external dependencies. I think that's true for companies that have the resources to build and maintain packages to reduce code duplication. For everyone else, we're left to finding the right set of packages to build our projects.\nSo, I built Copper - a toolkit that helps you get your project off the ground with minimal dependencies. It covers everything from ro",{"problem":46,"audience":55,"pricing":61,"motivation":62,"time_to_build":61,"stack":67,"openness":92,"stage":92,"team_size":92},{"value":47,"source":48,"evidence":49},"Go projects need many external packages to get started, beyond the standard library's boilerplate.","maker",[50,52],{"id":51},"post",{"id":53,"by":11,"text":54},"31959103","It kinda does but there's a lot of boilerplate that goes in before we actually get to the app logic. And, understandably, there's no structure provided by the Go stdlib. Once I…",{"value":56,"source":57,"evidence":58},"Go developers building web projects.","inferred",[59,60],{"id":51},{"id":53,"by":11,"text":54},null,{"value":63,"source":48,"evidence":64},"Go's standard library lacks structure and resources, so a batteries-included toolkit helps.",[65,66],{"id":51},{"id":53,"by":11,"text":54},[68,72,78,84],{"value":69,"source":48,"evidence":70},"Go",[71],{"id":51},{"value":73,"source":48,"evidence":74},"GORM",[75],{"id":76,"by":11,"text":77},"31959604","Code generation is an awesome alternate, I'm more familiar with sqlc.dev. They're doing some really interesting work. My goal with Copper is to provide out-of-the-box…",{"value":79,"source":48,"evidence":80},"Tailwind",[81],{"id":82,"by":11,"text":83},"31959759","This is a good observation. One trend I'm noticing is that the \"old way\" (PHP, Rails, etc.) of doing things is making a comeback. Go is very well positioned for this but lacks…",{"value":85,"source":86,"evidence":87},"Wire","commenter",[88],{"id":89,"by":90,"text":91},"31965901","thiht","Too bad it uses Wire. There’s absolutely no need for dependency injection frameworks in Go, you can just inject directly to receiver functions. It does the same thing without the…","unknown",{"praise":94,"objections":109,"requests":136,"questions":151,"alternatives":170},[95,102],{"value":96,"source":86,"evidence":97},"Single binary frontend and backend bundling.",[98],{"id":99,"by":100,"text":101},"31961209","andreygrehov","Congrats! > One Binary > Build frontend apps along with your backend and ship everything in a single binary. I'm doing something similar and love it. Do you embed the entire…",{"value":103,"source":86,"evidence":104},"Demo video is tight and useful.",[105],{"id":106,"by":107,"text":108},"31959554","zinodaur","Copper looks really cool - bringing the rapid dev of Rails to golang. Very tight demo btw",[110,121,125],{"value":111,"source":86,"evidence":112},"Frameworks are unnecessary in Go; the standard library suffices.",[113,117],{"id":114,"by":115,"text":116},"31959046","jjtheblunt","Doesn't the Go standard library do what you mentioned above?",{"id":118,"by":119,"text":120},"31959875","swagonomixxx","Building a \"Rails-like\" framework in Go is honestly totally antithetical to the \"Go way\" of doing things. Rails has a ton of magic, implicit behaviours, monkey patching, ERB, and…",{"value":122,"source":86,"evidence":123},"Dependency injection via Wire is unnecessary indirection.",[124],{"id":89,"by":90,"text":91},{"value":126,"source":86,"evidence":127},"GORM is not a good default database package.",[128,132],{"id":129,"by":130,"text":131},"31976379","icod1","Reading through the comments, most of you are either new to Go or new to web dev in general. Only that would explain how this SHITSHOW of a \"framework\" would get any praise at…",{"id":133,"by":134,"text":135},"31959550","born-jre","this looks fine but not a fan of gorm. but it could be decent choice if u want to build integrated framework i can understand why people would choose it, another option is…",[137,147],{"value":138,"source":86,"evidence":139},"Support for sqlc and SQLite.",[140,144],{"id":141,"by":142,"text":143},"31960372","andrewstuart2","If you're using postgres, I'm a major fan of the anti-ORM (ROM?) that is sqlc. Nothing I've used comes in Go close in productivity or safety (and ability to write proper queries…",{"id":145,"by":11,"text":146},"31960549","They're on top of my list to add to Copper. As soon as we get sqlite support!",{"value":148,"source":48,"evidence":149},"Phoenix-like features for server-side rendering.",[150],{"id":82,"by":11,"text":83},[152,163],{"value":153,"source":86,"evidence":154},"Does it provide placeholder route parameters?",[155,159],{"id":156,"by":157,"text":158},"31959222","atwood22","Go’s HTTP routing is very primitive. That’s one big area that I’ve always needed to use a 3rd party dependency. The main issue is that it doesn’t support placeholder values in…",{"id":160,"by":161,"text":162},"31959331","telesoft",">The main issue is that it doesn’t support placeholder values Can you elaborate? Like give me an example of a route path that uses placeholder values? I use Go to build web apps…",{"value":164,"source":86,"evidence":165},"Is it suited for SPA frontends with a JSON API?",[166],{"id":167,"by":168,"text":169},"31960059","synergy20","So go is trying to be a server-side-render framework here, what about the SPA style in that go is a simple json-api server, and let SPA to do all the template and render, is gin…",[171,182,189,193],{"value":172,"source":86,"evidence":173},"Bud",[174,178],{"id":175,"by":176,"text":177},"31960592","matthewmueller","Author of https:\u002F\u002Fgithub.com\u002Flivebud\u002Fbud here, congrats on the launch Tushar! Looking forward to building up the Go web framework ecosystem with you!",{"id":179,"by":180,"text":181},"31959727","bestinterest","So many frameworks in other languages are trying to get to the productivity of Rails but they just don't have the same spark imo. There is no Rails equivalent in JS, theres lots…",{"value":183,"source":86,"evidence":184},"Pagoda",[185],{"id":186,"by":187,"text":188},"31959464","mstef9","Devs interested in this may also be interested in Pagoda [1], a rapid, easy full-stack web development starter kit in Go that I wrote. It leverages popular frameworks and modules…",{"value":190,"source":86,"evidence":191},"sqlc",[192],{"id":141,"by":142,"text":143},{"value":194,"source":86,"evidence":195},"Ent",[196],{"id":197,"by":198,"text":199},"31960155","lordofgibbons","What about the Ent ORM library? https:\u002F\u002Fentgo.io\u002F",{"comments":201,"answered":33,"key":202},11,[203,206,209],{"id":204,"text":205},"31961871","Thank you, so much to do in this space! Bud looks great and I see we share many common goals. The dependency injection piece looks interesting. Did you build it custom or…",{"id":207,"text":208},"31959645","ha, add me to that list :) I think it's fine if CLIs are optional and I've tried to do that with Copper. Of course, your initial setup will be longer without scaffolding so it's…",{"id":210,"text":211},"31959567","Oh that's fun! In my demo video [1], I build a (minimal) HN clone so hopefully that answers your question in detail. But the tldr is - you'll need a lot more than just templating…",{"commenters":213,"max_depth":33,"maker_replies":201,"first_comment_mins":214,"lifespan_hours":215},42,30,47,[217,219,221,225,226,230,232,236,239,243,247,249,253,254,256,258,259,262,264,266,269,271,274,276,277,279,280,283,286,290,293,296,297,299,300,302,303,304,308,310,313,316,318,321,324,326,328,330,332,335,338,341,344,346,348,350,353,356,358,361,365,367,370,373,375,377,381,383,386,389,391,392,394,396,399],[175,32,42,218,176,32],"maker\u002Fpositive\u002Fnone",[204,32,32,220,11,39],"maker\u002Fneutral\u002Fdesign",[222,39,39,223,224,32],"31959488","project\u002Fcritical\u002Fdesign","theplumber",[207,39,32,220,11,39],[227,39,43,228,229,32],"31963377","project\u002Fneutral\u002Fdesign","EToS",[186,37,32,231,187,32],"other\u002Fneutral\u002Fnone",[233,37,32,234,235,32],"31964051","other\u002Fpositive\u002Fdesign","hdra",[237,43,43,238,161,32],"31959482","project\u002Fneutral\u002Fidea",[240,43,32,241,242,32],"31959555","other\u002Fneutral\u002Fidea","skinnyarms",[244,43,32,245,246,32],"31959810","commenter\u002Fneutral\u002Fnone","pram",[210,43,32,248,11,39],"maker\u002Fneutral\u002Fdocs",[250,43,32,251,252,32],"31961094","commenter\u002Fcritical\u002Fidea","morelisp",[114,30,43,238,115,32],[53,30,32,255,11,39],"maker\u002Fpositive\u002Fidea",[156,30,39,257,157,32],"project\u002Fcritical\u002Fidea",[160,30,32,245,161,32],[260,30,32,245,261,32],"31959370","evilthrow",[263,30,32,251,161,32],"31959498",[265,30,32,245,261,32],"31960002",[267,30,32,268,252,32],"31960693","commenter\u002Fneutral\u002Fperformance",[270,30,32,245,161,32],"31960730",[272,30,32,273,252,32],"31960772","commenter\u002Fcritical\u002Fnone",[129,42,39,275,130,32],"project\u002Fcritical\u002Fnone",[89,31,39,223,90,32],[179,278,32,241,180,32],7,[82,278,32,255,11,39],[281,278,32,241,282,32],"31959901","melony",[284,278,32,245,285,32],"31960308","treis",[287,278,32,288,289,32],"31960361","other\u002Fneutral\u002Fdesign","jitl",[291,278,32,292,252,32],"31960641","other\u002Fneutral\u002Fperformance",[294,278,32,292,295,32],"31960725","hrgiger",[118,278,39,257,119,32],[298,278,32,241,282,32],"31959924",[197,278,32,231,198,32],[301,278,32,231,252,32],"31960622",[141,278,32,231,142,32],[145,278,32,255,11,39],[305,278,32,306,307,32],"31960382","other\u002Fcritical\u002Fidea","xyzzy_plugh",[309,278,32,241,176,32],"31960558",[311,278,32,251,312,32],"31961368","deltaonefour",[314,278,32,245,315,32],"31962401","Xeoncross",[317,278,32,245,312,32],"31962827",[319,278,32,306,320,32],"31960991","michaelchisari",[322,278,32,251,323,32],"31964793","smw",[325,278,32,251,320,32],"31965121",[327,278,32,306,312,32],"31961323",[329,278,32,241,315,32],"31962426",[331,278,32,245,323,32],"31964823",[333,278,32,306,334,32],"31960084","al_mandi",[336,278,32,241,337,32],"31961662","euroderf",[339,278,43,340,176,32],"31960665","maker\u002Fneutral\u002Fidea",[342,278,32,306,343,32],"31960785","rubyist5eva",[345,278,32,241,176,32],"31960824",[347,278,32,251,343,32],"31961369",[99,33,42,349,100,32],"project\u002Fpositive\u002Fdesign",[351,33,32,234,352,32],"31961417","leetrout",[354,33,32,288,355,32],"31961423","capableweb",[357,33,32,248,11,39],"31961887",[359,33,32,234,360,32],"31963594","binwiederhier",[362,363,32,231,364,32],"31959087",9,"ge96",[366,363,32,218,11,39],"31959109",[368,369,42,349,246,32],"31959847",10,[371,369,32,372,11,39],"31962421","maker\u002Fneutral\u002Fnone",[106,201,42,374,107,32],"project\u002Fpositive\u002Fidea",[167,376,43,238,168,32],12,[378,376,43,379,380,32],"31960212","project\u002Fneutral\u002Fnone","dangelov",[382,376,32,231,168,32],"31960586",[384,376,32,231,385,32],"31960354","AlphaSite",[387,376,32,388,11,39],"31960483","project\u002Fpositive\u002Fexecution",[133,390,39,223,134,32],13,[76,390,32,228,11,39],[393,390,39,223,119,32],"31959906",[395,390,32,231,187,32],"31960358",[397,398,32,241,334,32],"31971999",14,[400,401,39,402,403,32],"31961779",15,"project\u002Fcritical\u002Fdocs","irq-1",[405,408],{"id":406,"t":407,"points":30,"comments":32},"31855894",1656023481,{"id":4,"t":12,"points":14,"comments":15},[410,415,419,424,429,434],{"id":411,"name":412,"points":413,"category":414},"31988820","pamspy",235,"security_privacy",{"id":416,"name":417,"points":418,"category":414},"32002555","human eyes only",216,{"id":420,"name":421,"points":422,"category":423},"32005678","C3",182,"languages",{"id":425,"name":426,"points":427,"category":428},"31932434","Featureform",136,"ai",{"id":430,"name":431,"points":432,"category":433},"32001817","SPS2022",132,"web_saas",{"id":435,"name":436,"points":437,"category":20},"31936356","UI Filler",129,false,"v2",{"id":441,"name":5,"line":6,"ai":438,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":442,"top":18,"kw":443,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":444,"url":9,"mix":445,"praise":96,"objection":111,"sub":21},31958823,-0.16,[24,21,25,26],"5130303100001000010000000003050005530111",[30,31,32,33],1793991048213]