[{"data":1,"prerenderedAt":479},["ShallowReactive",2],{"project-22073037":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":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":45,"post_text":47,"what":48,"said":82,"maker_in_thread":210,"shape":220,"grid":225,"attempts":438,"same_week":443,"maker_shows":42,"maker_hidden":471,"reader_version":472,"card":473},"22073037","ESQLate","Build minimum viable admin panels with just SQL","title","Show HN: ESQLate – Build minimum viable admin panels with just SQL","https:\u002F\u002Fgithub.com\u002Fforbesmyester\u002Fesqlate","github.com","mattatkeyboard",1579251419,2020,505,79,50,3028,2,"legend","dev_tools","admin panel generator","web_app",[24,25,26,27,28],"admin panel","sql","back office","postgresql","crud","curious",0.202,{"positive":32,"neutral":33,"mixed":34,"critical":35},12,17,0,5,34,{"idea":38,"docs":40,"design":41,"privacy":43,"execution":44},{"positive":39,"critical":18},11,{"positive":34,"critical":34},{"positive":42,"critical":18},1,{"positive":34,"critical":34},{"positive":34,"critical":42},[46,34,34,34,34,34,34,34,35,35,34,34,35,46,46,46,42,34,34,42,35,46,35,46,35,34,34,42,42,46,46,35,35,46,35,46,46,35,34,42],3,null,{"problem":49,"audience":47,"pricing":47,"motivation":47,"time_to_build":47,"stack":61,"openness":80,"stage":81,"team_size":81},{"value":50,"source":51,"evidence":52},"Building simple admin panels and back office UIs requires writing a lot of boilerplate code","inferred",[53,57],{"id":54,"by":55,"text":56},"22073275","BjoernKW","That looks quite useful. The name's pretty clever, too. Tools like these are a viable, low-code (to use a hyped-up term) alternative to creating full-blown back-ends with all the…",{"id":58,"by":59,"text":60},"22073827","eb0la","I believe admin panels are the MVP implementation for this idea. Almost every business software is a select\u002Finsert\u002Fupdate. If you can do it over a view, or you have a trigger on…",[62,69,76],{"value":63,"source":64,"evidence":65},"Node.js","maker",[66],{"id":67,"by":11,"text":68},"22073295","Yeh. It send through the key\u002Fvalues in HTTP POST and then you have the SQL and K\u002FC's on the server, the SQL itself is not sent. Server passes them through as parameters to the…",{"value":70,"source":51,"evidence":71},"Svelte",[72],{"id":73,"by":74,"text":75},"22074222","tomerbd","Brilliant. Interesting to see you used svelte! Anyone else has experience with it?",{"value":77,"source":51,"evidence":78},"PostgreSQL",[79],{"id":67,"by":11,"text":68},"open_source","unknown",{"praise":83,"objections":105,"requests":130,"questions":152,"alternatives":167},[84,97],{"value":85,"source":86,"evidence":87},"Useful idea that reduces admin panel work","commenter",[88,92,96],{"id":89,"by":90,"text":91},"22073504","saviorand","This is awesome! Saves so much work on building simple admin panels. I have experience in custom software development, and that's such a huge pile of work for developers it's…",{"id":93,"by":94,"text":95},"22073767","xupybd","Thank you so much I've wanted something like this for years but never invested the time into finding or building it.",{"id":54,"by":55,"text":56},{"value":98,"source":86,"evidence":99},"Name and approach praised",[100,101],{"id":54,"by":55,"text":56},{"id":102,"by":103,"text":104},"22073400","cube2222","Great work! I once was a fan of custom well tailored DSL's for each tool. However, nowadays I really like the current direction of providing a lot of tooling with only SQL…",[106,112,123],{"value":107,"source":64,"evidence":108},"Authentication not handled by the tool",[109],{"id":110,"by":11,"text":111},"22105325","Authentication is not handled at all. Given it is a project with a front and back end (using a REST interface between) I think the correct approach is to do authentication on a…",{"value":113,"source":86,"evidence":114},"Setup instructions did not work for one commenter",[115,119],{"id":116,"by":117,"text":118},"22076382","gavinray","Super neat idea and tool! I tried to clone it and run it locally, but it doesn't run. Tried with both yarn and npm. ``` > node-sass src\u002Findex.scss > public\u002Findex.css sh: 1:…",{"id":120,"by":121,"text":122},"22073373","sandGorgon","could you check the code ? i think esqlate-server is .gitignored",{"value":124,"source":86,"evidence":125},"UI config in JSON is unappealing",[126],{"id":127,"by":128,"text":129},"22073956","howmayiannoyyou","Good, but, I don't want to write UI configs in JSON. Making the UI should be as minimally difficult as the rest of the app makes tasks.",[131,138,145],{"value":132,"source":86,"evidence":133},"Support for one-to-many and many-to-many relationships",[134],{"id":135,"by":136,"text":137},"22073291","trungdq88","Interesting. How would you make this to support one-to-many\u002Fmany-to-many relationships?",{"value":139,"source":86,"evidence":140},"Authentication via OpenID",[141],{"id":142,"by":143,"text":144},"22080895","_frkl","This looks really useful. How is authentication and authorization handled? Can I connect it to my Openid provider?",{"value":146,"source":86,"evidence":147},"Store admin panel configuration in a database",[148],{"id":149,"by":150,"text":151},"22080409","janci","Why not have the admin panels configuration stored in a database itself instead of json? And use the admin panels to add more admin panels...",[153,160],{"value":154,"source":86,"evidence":155},"How does it prevent SQL injection",[156],{"id":157,"by":158,"text":159},"22073218","jimmar","Interesting idea. Are you doing anything to protect against sql injection attacks?",{"value":161,"source":86,"evidence":162},"How it differs from Redash",[163],{"id":164,"by":165,"text":166},"22073883","mattbee","It looks excellent! But I know https:\u002F\u002Fredash.io already and used it in my last business - does this do something different? I'm always hungry for better SQL business admin tools…",[168,175,182,189,196,203],{"value":169,"source":86,"evidence":170},"react-admin",[171],{"id":172,"by":173,"text":174},"22073521","Rowern","This looks pretty interesting! If anyone is looking for a tool to build a full fledge Back Office I warmly recommend react-admin (https:\u002F\u002Fgithub.com\u002Fmarmelab\u002Freact-admin\u002F). Been…",{"value":176,"source":86,"evidence":177},"PostgREST",[178],{"id":179,"by":180,"text":181},"22074765","xwowsersx","Another worthy mention (not FE, but also exploiting power of sql): https:\u002F\u002Fgithub.com\u002FPostgREST\u002Fpostgrest \"PostgREST serves a fully RESTful API from any existing PostgreSQL…",{"value":183,"source":86,"evidence":184},"Hasura",[185],{"id":186,"by":187,"text":188},"22075822","hadem","You might also find Hasura interesting for instant GraphQL with Postgres: https:\u002F\u002Fhasura.io\u002F",{"value":190,"source":86,"evidence":191},"Metabase",[192],{"id":193,"by":194,"text":195},"22077669","fulldecent2","Metabase?",{"value":197,"source":86,"evidence":198},"Adminer",[199],{"id":200,"by":201,"text":202},"22075892","milankragujevic","I use adminer for this. https:\u002F\u002Fwww.adminer.org\u002F It's a single PHP file, and does everything I need.",{"value":204,"source":86,"evidence":205},"Django Admin",[206],{"id":207,"by":208,"text":209},"22075291","cdrx","I think forestadmin.com \u002F jetadmin.io are the SQL introspection equivalent of the Django Admin. Both are commercial products though.",{"comments":211,"answered":35,"key":212},9,[213,216,219],{"id":214,"text":215},"22073591","That is true, and I considered this approach. But DB procedures cannot link to each other and the target users are different - giving some people a DB procedure is much harder…",{"id":217,"text":218},"22073897","It does basic left\u002Fright aligning for strings\u002Fnumbers etc. It's a nice feature\u002Fidea but I'm torn between implementing it and also allowing you to do it in SQL... I agree that…",{"id":110,"text":111},{"commenters":221,"max_depth":222,"maker_replies":211,"first_comment_mins":223,"lifespan_hours":224},60,7,35,110,[226,228,232,235,238,241,244,246,250,253,254,256,259,262,264,267,270,272,275,278,280,282,284,286,290,292,296,299,302,305,308,311,315,318,321,322,323,327,331,332,335,338,340,343,345,346,349,350,351,355,358,362,364,366,369,371,373,375,377,379,381,384,388,391,395,397,401,404,406,408,410,413,417,421,425,428,430,433,435],[172,34,46,227,173,34],"project\u002Fneutral\u002Fnone",[229,34,34,230,231,34],"22073782","commenter\u002Fneutral\u002Fnone","cpursley",[233,34,34,230,234,34],"22075152","brentis",[236,34,34,230,237,34],"22075640","esistgut",[239,34,34,230,240,34],"22075751","airstrike",[242,34,34,230,243,34],"22077549","ianmobbs",[179,42,34,245,180,34],"other\u002Fneutral\u002Fnone",[247,42,34,248,249,34],"22074924","other\u002Fneutral\u002Fdocs","geewee",[251,42,34,245,252,34],"22075009","marviel",[186,42,34,245,187,34],[255,42,34,230,252,34],"22076456",[257,42,34,245,258,34],"22077114","vosper",[260,42,34,245,261,34],"22077628","aidos",[263,42,34,245,117,34],"22079099",[265,42,34,230,266,34],"22075638","pagnol",[268,42,34,245,269,34],"22082264","kiwicopple",[102,18,35,271,103,34],"project\u002Fpositive\u002Fidea",[273,18,34,245,274,34],"22073783","emmelaich",[276,18,35,271,277,34],"22073843","mstade",[279,18,34,230,103,34],"22073946",[281,18,34,230,277,34],"22076471",[283,18,34,230,103,34],"22076888",[285,18,34,230,277,34],"22077032",[287,46,34,288,289,34],"22073856","other\u002Fneutral\u002Fidea","jimmcslim",[54,291,35,271,55,34],4,[293,35,46,294,295,34],"22073425","project\u002Fneutral\u002Fidea","bsaul",[297,35,34,245,298,34],"22073472","mickael-kerjean",[300,35,46,301,295,34],"22073516","maker\u002Fneutral\u002Fdocs",[303,35,46,294,304,34],"22073688","zozbot234",[306,35,46,307,298,34],"22074126","maker\u002Fneutral\u002Fidea",[309,35,34,245,310,34],"22073509","vidarh",[312,35,42,313,314,34],"22073546","project\u002Fcritical\u002Fdesign","Cthulhu_",[316,35,34,245,317,34],"22073689","brainzap",[319,35,34,245,320,34],"22074365","zubairq",[207,35,34,245,208,34],[193,35,34,245,194,34],[324,325,34,245,326,34],"22075160",6,"esamatti",[328,222,42,329,330,34],"22073444","project\u002Fcritical\u002Fidea","barrystaes",[214,222,34,307,11,42],[73,333,35,334,74,34],8,"project\u002Fpositive\u002Fdesign",[336,211,35,271,337,34],"22073836","mattmanser",[217,211,34,339,11,42],"maker\u002Fneutral\u002Fdesign",[142,341,46,342,143,34],10,"project\u002Fneutral\u002Fprivacy",[110,341,34,344,11,42],"maker\u002Fneutral\u002Fprivacy",[164,39,35,271,165,34],[347,39,46,294,348,34],"22073903","tyingq",[157,32,46,344,158,34],[67,32,34,344,11,42],[352,353,35,271,354,34],"22073838",13,"richieartoul",[356,353,34,245,357,34],"22074152","yuegui",[359,360,34,245,361,34],"22073341",14,"Gys",[363,360,34,307,11,42],"22073363",[200,365,34,245,201,34],15,[367,365,34,245,368,34],"22079826","mantiniss",[127,370,42,313,128,34],16,[116,33,42,372,117,34],"project\u002Fcritical\u002Fexecution",[58,374,46,294,59,34],18,[376,374,34,301,11,42],"22073905",[135,378,46,294,136,34],19,[380,378,46,294,55,34],"22073307",[382,378,34,383,11,42],"22073308","project\u002Fneutral\u002Fdesign",[385,386,46,227,387,34],"22074429",20,"yehia2amer",[389,386,35,271,390,34],"22074783","darau1",[392,393,35,271,394,34],"22112407",21,"nojvek",[89,396,35,271,90,34],22,[398,399,46,294,400,34],"22075519",23,"nautilus12",[402,399,34,403,11,42],"22078681","project\u002Fneutral\u002Fexecution",[149,405,46,383,150,34],24,[93,407,35,271,94,34],25,[120,409,46,403,121,34],26,[411,409,34,412,11,42],"22073413","project\u002Fneutral\u002Fdocs",[414,409,46,415,416,34],"22074804","maker\u002Fneutral\u002Fexecution","matthewaveryusa",[418,419,46,294,420,34],"22073512",27,"rygxqpbsngav",[422,423,34,245,424,34],"22075862",28,"0xff00ffee",[426,423,35,271,427,34],"22076337","Twisell",[429,423,34,245,424,34],"22079045",[431,423,34,245,432,34],"22080328","topspin",[434,423,34,245,348,34],"22077421",[436,423,42,329,437,34],"22083945","jelder",[439,440],{"id":4,"t":12,"points":14,"comments":15},{"id":441,"t":442,"points":18,"comments":34},"22311039",1581530546,[444,449,453,458,462,467],{"id":445,"name":446,"points":447,"category":448},"22063744","No-Bullshit Games",520,"games",{"id":450,"name":451,"points":452,"category":20},"22081419","OneDev",459,{"id":454,"name":455,"points":456,"category":457},"22091603","A set of standard document templates",433,"productivity",{"id":459,"name":460,"points":461,"category":457},"22065333","Screenshot Hero",429,{"id":463,"name":464,"points":465,"category":466},"22077052","sixty5o2",230,"hardware",{"id":468,"name":469,"points":470,"category":20},"22091874","Proton Native V2",222,false,"v2",{"id":474,"name":5,"line":6,"ai":471,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":475,"top":18,"kw":476,"maker":11,"domain":10,"tier":19,"attempts":18,"strip":477,"url":9,"mix":478,"praise":85,"objection":107,"sub":21},22073037,0.2,[24,25,26,27,28],"3000000055005333100153535001133553533501",[32,33,34,35],1794036585544]