[{"data":1,"prerenderedAt":545},["ShallowReactive",2],{"project-37448914":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":74,"maker_in_thread":218,"shape":220,"grid":224,"attempts":508,"same_week":509,"maker_shows":40,"maker_hidden":537,"reader_version":538,"card":539},"37448914","view.py","A Python web framework","title","Show HN: I built a Python web framework","https:\u002F\u002Fgithub.com\u002FZeroIntensity\u002Fview.py","github.com","zerointensity",1694285274,2023,173,113,345,3109,12,"notable","languages","web framework","library",[24,25,26,27],"python web framework","python","asgi","flask alternative","curious",-0.086,{"positive":31,"neutral":32,"mixed":33,"critical":34},4,18,0,9,31,{"idea":37,"docs":39,"design":41,"execution":42,"performance":44},{"positive":38,"critical":31},2,{"positive":33,"critical":40},1,{"positive":33,"critical":33},{"positive":33,"critical":43},3,{"positive":33,"critical":40},[46,43,33,46,43,46,43,46,40,43,40,33,33,40,40,33,33,33,33,33,33,33,33,40,33,40,43,43,33,40,33,33,33,33,40,33,33,43,40,33],5,"been working on this for nearly a year",{"problem":49,"audience":49,"pricing":49,"motivation":49,"time_to_build":50,"stack":56,"openness":72,"stage":72,"team_size":73},null,{"value":51,"source":52,"evidence":53},"nearly a year","maker",[54],{"id":55},"post",[57,65],{"value":58,"source":59,"evidence":60},"Python","commenter",[61],{"id":62,"by":63,"text":64},"37454035","Uptrenda","I briefly looked at the code and it seems like the actual server code is just based on third-party modules (e.g. uvicorn.) There's no socket code here and barely any mention of…",{"value":66,"source":59,"evidence":67},"C",[68],{"id":69,"by":70,"text":71},"37453540","fulafel","There's C code, how do I know it's secure?","unknown","solo",{"praise":75,"objections":87,"requests":106,"questions":128,"alternatives":161},[76,83],{"value":77,"source":59,"evidence":78},"Simple like Flask with HTML in the same file",[79],{"id":80,"by":81,"text":82},"37449234","evanharwin","Wow I like it, simple like Flask, but with the HTML in the same file (as opposed to the jinja templates) which is a pattern I really like! Makes me wonder if you could integrate…",{"value":84,"source":59,"evidence":85},"Good to see web stuff with Python",[86],{"id":80,"by":81,"text":82},[88,92,99],{"value":89,"source":59,"evidence":90},"Not really a new framework; wraps existing servers like uvicorn",[91],{"id":62,"by":63,"text":64},{"value":93,"source":59,"evidence":94},"Python is slow and has a high environmental footprint",[95],{"id":96,"by":97,"text":98},"37450219","29athrowaway","Python is great when your goal is to have the highest environmental footprint.",{"value":100,"source":59,"evidence":101},"Unclear what 'modern' means in the description",[102],{"id":103,"by":104,"text":105},"37449461","revskill","Definition of \"modern\" ?",[107,114,121],{"value":108,"source":59,"evidence":109},"Show a full site built with the framework beyond basic examples",[110],{"id":111,"by":112,"text":113},"37450290","forgotpwd16","Would like to see a simple site built on it besides basic examples (can even be used as a tutorial to the framework). The components seem interesting but feels like will quickly…",{"value":115,"source":59,"evidence":116},"Add a comparison with other Python web libraries",[117],{"id":118,"by":119,"text":120},"37451891","syngrog66","has someone wrote yet a good, brief comparison of this to the other Python web libs?",{"value":122,"source":59,"evidence":123},"Document the C-based performance hot paths in the readme",[124],{"id":125,"by":126,"text":127},"37450581","Retr0id","To what does it owe its lightning fast-ness, and how does it compare against other frameworks? Edit: It looks like some of the hot-paths are implemented in C. Interesting! (I…",[129,139,154],{"value":130,"source":59,"evidence":131},"Is it a web framework that compiles to JS, and how does state work?",[132,136],{"id":133,"by":134,"text":135},"37449491","brap","I went over the docs and couldn’t find anything about state management and client\u002Fserver actions. I’m guessing this would be similar to LiveView? If so, I’m not sure Python will…",{"id":137,"by":134,"text":138},"37454404","Then why compile to JS? And what happens when the client performs any actions, e.g clicks a button that should send an outgoing request either from the client or from the server?",{"value":140,"source":59,"evidence":141},"Why was it built and what makes it different?",[142,146,150],{"id":143,"by":144,"text":145},"37448990","lifeisstillgood","Fantastic. Any working project brings value to the world. What did you learn from doing this one? What makes your framework different?",{"id":147,"by":148,"text":149},"37460056","zero-g","Really cool! Why did you decide to start working on it? Because you wanted something simpler than what already exists, or just curiosity?",{"id":151,"by":152,"text":153},"37449160","rmbyrro","Congrats on launching a working product! What's the rationale behind view.py?",{"value":155,"source":59,"evidence":156},"Is the author really 15 years old?",[157],{"id":158,"by":159,"text":160},"37449979","dvektor","Are you really 15yrs old? is the biggest question here..",[162,169,176,183,190,197,204,211],{"value":163,"source":59,"evidence":164},"Flask",[165],{"id":166,"by":167,"text":168},"37450226","phas0ruk","Flask is decent. Can’t we use that?",{"value":170,"source":59,"evidence":171},"FastAPI",[172],{"id":173,"by":174,"text":175},"37450132","warthog","I would love something that combines FastAPI's simplicity for setup with Django-like completeness and integrations",{"value":177,"source":59,"evidence":178},"Litestar",[179],{"id":180,"by":181,"text":182},"37454009","barapa","Litestar may be closer https:\u002F\u002Flitestar.dev\u002F",{"value":184,"source":59,"evidence":185},"Django",[186],{"id":187,"by":188,"text":189},"37450722","nomdep","You can use whatever you want, can't you? However, my opinion is that is a PITA that every Flask project has a different structure, unlike a \"batteries included\" framework like…",{"value":191,"source":59,"evidence":192},"web2py \u002F py4web",[193],{"id":194,"by":195,"text":196},"37464834","glimmung","It's in maintenance mode, and still has a role. However, the focus has moved to py4web [1] which has many of web2py's strengths (including the DAL), but with a more orthodox…",{"value":198,"source":59,"evidence":199},"Bottle",[200],{"id":201,"by":202,"text":203},"37452129","guggle","Bottle was decent before Flask. Couldn't we use that instead ?",{"value":205,"source":59,"evidence":206},"Robyn",[207],{"id":208,"by":209,"text":210},"37453980","stock_toaster","If I had to write a python webapp today, I’d probably try out robyn instead of flask. https:\u002F\u002Fgithub.com\u002Fsparckles\u002Frobyn",{"value":212,"source":59,"evidence":213},"Streamsync",[214],{"id":215,"by":216,"text":217},"37450673","gobdovan","maybe streamsync [0] comes close to what you describe? \"Streamsync is an open-source framework for creating data apps. Build user interfaces using a visual editor; write the…",{"comments":33,"answered":33,"key":219},[],{"commenters":221,"max_depth":222,"maker_replies":33,"first_comment_mins":46,"lifespan_hours":223},83,7,155,[225,227,231,234,236,240,241,244,246,248,249,251,253,255,259,263,265,269,272,274,279,281,285,288,290,295,298,299,302,305,306,309,312,314,315,316,319,320,322,326,330,333,336,339,342,345,347,350,353,356,359,362,367,370,372,375,378,381,383,386,389,392,395,399,402,404,406,408,411,414,416,419,420,424,427,430,433,435,436,438,440,443,446,449,451,454,457,460,462,465,467,471,473,475,477,480,483,487,491,495,498,501,503,505],[80,33,46,226,81,33],"project\u002Fpositive\u002Fidea",[228,33,33,229,230,33],"37454425","commenter\u002Fneutral\u002Fnone","okasaki",[232,33,33,229,233,33],"37462213","uranusjr",[133,40,43,235,134,33],"project\u002Fneutral\u002Fdocs",[237,40,43,238,239,33],"37453516","project\u002Fneutral\u002Fdesign","kreetx",[137,40,33,229,134,33],[242,40,33,229,243,33],"37458904","lbhdc",[245,40,33,229,134,33],"37464735",[143,38,46,247,144,33],"maker\u002Fpositive\u002Fnone",[111,43,43,235,112,33],[173,31,43,250,174,33],"project\u002Fneutral\u002Fidea",[180,31,33,252,181,33],"other\u002Fneutral\u002Fnone",[254,31,33,252,174,33],"37455739",[256,46,46,257,258,33],"37450556","maker\u002Fpositive\u002Fidea","lozenge",[260,46,33,261,262,33],"37450884","commenter\u002Fneutral\u002Fdesign","matsemann",[264,46,33,261,258,33],"37453768",[266,267,43,250,268,33],"37449832",6,"ljlolel",[270,267,33,252,271,33],"37456854","raybb",[147,222,43,273,148,33],"maker\u002Fneutral\u002Fnone",[275,276,46,277,278,33],"37453999",8,"project\u002Fpositive\u002Fnone","Simon_O_Rourke",[103,34,43,280,104,33],"project\u002Fneutral\u002Fnone",[282,34,40,283,284,33],"37453632","project\u002Fcritical\u002Fexecution","chillbill",[286,34,33,229,287,33],"37454771","Biganon",[118,289,43,235,119,33],10,[291,292,43,293,294,33],"37450300",11,"project\u002Fneutral\u002Fperformance","nesarkvechnep",[296,292,33,229,297,33],"37450585","hackan",[151,18,43,238,152,33],[166,300,40,301,167,33],13,"project\u002Fcritical\u002Fidea",[303,300,33,229,304,33],"37450329","blooalien",[187,300,33,229,188,33],[307,300,33,229,308,33],"37453898","emidln",[310,300,33,252,311,33],"37450754","mhd",[313,300,33,252,202,33],"37452199",[194,300,33,252,195,33],[201,300,40,301,202,33],[317,300,33,252,318,33],"37456425","nilslindemann",[208,300,33,252,209,33],[125,321,43,293,126,33],14,[323,321,40,324,325,33],"37451996","maker\u002Fcritical\u002Fdocs","swyx",[327,328,33,252,329,33],"37451604",15,"throwawaaarrgh",[331,328,33,252,332,33],"37451652","Ozzie_osman",[334,328,33,252,335,33],"37452349","weakfish",[337,328,33,252,338,33],"37452883","intalentive",[340,328,33,252,341,33],"37452007","atoav",[343,328,33,252,344,33],"37452606","ardit33",[346,328,33,252,329,33],"37452706",[348,328,33,252,349,33],"37453637","b800h",[351,328,33,252,352,33],"37452243","merpnderp",[354,328,33,252,355,33],"37452595","dclowd9901",[357,328,33,252,358,33],"37453263","miraculixx",[360,328,33,252,361,33],"37453312","mr_toad",[363,364,33,365,366,33],"37449926",16,"other\u002Fcritical\u002Fnone","ilrwbwrkhv",[368,364,33,252,369,33],"37450052","askvictor",[371,364,33,252,366,33],"37450064",[373,364,33,365,374,33],"37450136","zzzeek",[376,364,33,252,377,33],"37450549","dvdkon",[379,364,33,252,380,33],"37450797","mabcat",[382,364,33,252,361,33],"37453338",[384,364,33,252,385,33],"37458574","igouy",[387,364,33,252,388,33],"37450336","MrLeap",[390,364,43,250,391,33],"37450557","bbkane",[393,364,40,301,394,33],"37450572","syndicatedjelly",[396,364,33,397,398,33],"37451353","commenter\u002Fneutral\u002Fidea","shrimpx",[400,364,33,397,401,33],"37452662","rickydroll",[403,364,33,397,394,33],"37452750",[405,364,40,301,394,33],"37475082",[407,364,33,397,398,33],"37515204",[409,364,43,250,410,33],"37451351","hu3",[412,364,33,252,413,33],"37452096","lukevp",[415,364,33,229,410,33],"37452549",[417,364,43,250,418,33],"37451948","elteto",[215,364,43,250,216,33],[421,364,33,422,423,33],"37451233","other\u002Fneutral\u002Fidea","phamilton",[425,364,33,422,426,33],"37451379","chatmasta",[428,364,33,422,429,33],"37451532","quickthrower2",[431,364,33,252,432,33],"37460207","gardenhedge",[62,434,40,283,63,33],17,[158,32,43,273,159,33],[437,32,33,252,112,33],"37450205",[439,32,33,252,159,33],"37450519",[441,32,33,252,442,33],"37455293","verandaguy",[444,32,33,252,445,33],"37461678","faizmokh",[447,32,33,252,448,33],"37450552","Semiapies",[450,32,33,252,262,33],"37450910",[452,32,33,252,453,33],"37451963","MatthiasPortzel",[455,32,33,252,456,33],"37453049","xcdzvyn",[458,32,33,252,459,33],"37453928","pocketarc",[461,32,33,252,456,33],"37468072",[463,32,33,252,464,33],"37450558","frodowtf",[69,466,40,283,70,33],19,[468,466,33,469,470,33],"37453602","commenter\u002Fneutral\u002Fexecution","lemper",[472,466,33,229,284,33],"37453622",[474,466,33,252,470,33],"37453679",[476,466,33,252,284,33],"37453803",[478,466,33,252,479,33],"37453905","Sakos",[481,466,33,252,482,33],"37454074","1f60c",[484,485,43,280,486,33],"37449438",20,"alrs",[488,489,43,293,490,33],"37452266",21,"Galanwe",[492,489,33,493,494,33],"37453401","commenter\u002Fneutral\u002Fperformance","scaredginger",[96,496,40,497,97,33],22,"project\u002Fcritical\u002Fperformance",[499,496,33,493,500,33],"37450309","megalord",[502,496,33,493,97,33],"37450900",[504,496,33,229,284,33],"37453641",[506,496,33,493,507,33],"37532296","justinclift",[],[510,515,519,524,529,533],{"id":511,"name":512,"points":513,"category":514},"37427127","HackYourNews",335,"ai",{"id":516,"name":517,"points":518,"category":20},"37470611","splat",309,{"id":520,"name":521,"points":522,"category":523},"37444683","Ghidra Plays Mario",207,"dev_tools",{"id":525,"name":526,"points":527,"category":528},"37499375","Lantern",196,"data",{"id":530,"name":531,"points":532,"category":20},"37438028","cursed-typescript",186,{"id":534,"name":535,"points":536,"category":514},"37433218","Rivet",176,false,"v2",{"id":540,"name":5,"line":6,"ai":537,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":541,"top":18,"kw":542,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":543,"url":9,"mix":544,"praise":77,"objection":89,"sub":21},37448914,-0.09,[24,25,26,27],"5305353513100110000000010133010000100310",[31,32,33,34],1794036641543]