[{"data":1,"prerenderedAt":719},["ShallowReactive",2],{"project-25110879":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":46,"post_text":49,"what":50,"said":80,"maker_in_thread":188,"shape":199,"grid":203,"attempts":681,"same_week":682,"maker_shows":44,"maker_hidden":711,"reader_version":712,"card":713},"25110879","gh-pages-url-shortener","A URL shortener that can be entirely hosted on GitHub Pages","title","Show HN: I created a URL shortener that can be entirely hosted on GitHub Pages","https:\u002F\u002Fgithub.com\u002Fnelsontky\u002Fgh-pages-url-shortener","github.com","nelsontky",1605530116,2020,355,176,105,3028,4,"legend","dev_tools","url shortener","web_app",[21,24,25,26],"github pages","serverless","github issues","mixed",-0.108,{"positive":30,"neutral":31,"mixed":32,"critical":33},16,37,3,23,79,{"idea":36,"execution":39,"pricing":41,"docs":42,"design":43,"performance":45},{"positive":37,"critical":38},12,8,{"positive":40,"critical":37},0,{"positive":40,"critical":40},{"positive":40,"critical":40},{"positive":44,"critical":44},1,{"positive":40,"critical":40},[44,40,40,47,32,48,18,48,32,48,32,32,44,47,32,44,44,32,47,44,32,44,32,32,40,40,32,44,32,47,47,40,44,48,44,44,18,44,44,47],5,2,null,{"problem":51,"audience":49,"pricing":49,"motivation":58,"time_to_build":49,"stack":62,"openness":77,"stage":78,"team_size":79},{"value":52,"source":53,"evidence":54},"Creating short links without running a backend server.","maker",[55],{"id":56,"by":11,"text":57},"25111072","I was always fixated with URL shorteners and always wanted to write one myself. While it would be easy to write one that works with a server, I loved the idea of hosting and…",{"value":59,"source":53,"evidence":60},"Fixation with URL shorteners and wanting to host one for free.",[61],{"id":56,"by":11,"text":57},[63,71],{"value":64,"source":65,"evidence":66},"JavaScript","inferred",[67],{"id":68,"by":69,"text":70},"25113954","chrismorgan","This currently uses about 100KB of JavaScript (over 99KiB of polyfills, about 3KiB of actual code), loading the HTML file, then three JavaScript files, then making an API call to…",{"value":72,"source":53,"evidence":73},"GitHub API",[74],{"id":75,"by":11,"text":76},"25111365","The github api does not care about your origin so that wasn't something I had to deal with! If I had to deal with something like that, my best option would be to use a proxy…","open_source","beta","unknown",{"praise":81,"objections":101,"requests":135,"questions":151,"alternatives":156},[82,94],{"value":83,"source":84,"evidence":85},"Clever hack that lets anyone add short links without a pull request.","commenter",[86,90],{"id":87,"by":88,"text":89},"25111581","futhey","Such a fun little hack. The killer feature is that you found a way for anyone to create a new short URL without a pull request or any changes to the original repository. Nice work.",{"id":91,"by":92,"text":93},"25112565","ghego1","Congrats! I really love this concept for two reasons. First I'm always fascinated by smart solutions that make use of existing free (as in beer) infrastructures to provide a…",{"value":95,"source":84,"evidence":96},"Interesting learning exercise.",[97],{"id":98,"by":99,"text":100},"25111344","oneeyedpigeon","There's a lot of useful stuff to learn from this tiny example, providing you look at it more as a learning exercise than a production enterprise solution! OP, how does this get…",[102,117,121,128],{"value":103,"source":84,"evidence":104},"Relying on GitHub issues as a database is abuse and could get it shut down.",[105,109,113],{"id":106,"by":107,"text":108},"25111136","steerablesafe","Interesting. This could be considered as abuse of github issues though.",{"id":110,"by":111,"text":112},"25113705","maxpert","Using GH issues as DB :P I wonder how long before GitHub will notice and shut it down for abuse.",{"id":114,"by":115,"text":116},"25111122","quyleanh","It's so cool. I am using https:\u002F\u002Fgit.io as url shortener, and now this project makes me reconsider. What if some of shortener domain so popular that Github takes some action?…",{"value":118,"source":84,"evidence":119},"Client-side redirects are worse than HTTP redirects and the bundle is large.",[120],{"id":68,"by":69,"text":70},{"value":122,"source":84,"evidence":123},"Too many URL shorteners already, which accelerates link rot.",[124],{"id":125,"by":126,"text":127},"25113269","bigbubba","We have too many URL shorteners already. These things accelerate link rot.",{"value":129,"source":84,"evidence":130},"Malicious links are a risk.",[131],{"id":132,"by":133,"text":134},"25112728","TimLeland","Better be ready for the malicious links. I'm the developer of https:\u002F\u002Ft.ly\u002F link shortener. I spend most of my time adding in protection to prevent people from using the service…",[136,147],{"value":137,"source":84,"evidence":138},"Store links in a file via a GitHub Action instead of issues.",[139,143],{"id":140,"by":141,"text":142},"25113185","xendop","This is really cool. I think it might even be possible to improve it further so opening an issue isn't even needed. My thinking is you could store the links and the corresponding…",{"id":144,"by":145,"text":146},"25114053","tutfbhuf","I would find it better if he'd add something like an auto accept pull request bot, that allows you to append a single url (with validation check + rate limiting) to a file, that…",{"value":148,"source":84,"evidence":149},"Use a service worker to issue real HTTP redirects.",[150],{"id":68,"by":69,"text":70},[152],{"value":153,"source":84,"evidence":154},"How does it get around CORS?",[155],{"id":98,"by":99,"text":100},[157,164,170,177,181],{"value":158,"source":84,"evidence":159},"YOURLS",[160],{"id":161,"by":162,"text":163},"25113244","josefresco","I setup YOURLS* for a client several years back, worked quite well. Was always a little concerned about privacy\u002Fpotential for abuse (being self-hosted) but we never had those…",{"value":165,"source":53,"evidence":166},"Firebase URLs or Cloud Firestore",[167],{"id":168,"by":11,"text":169},"25113270","Hmm having a GitHub action redeploy the site is not instantaneous and it does take up to 1 minute for the site (and consequently the new short link) to be updated. Nevertheless,…",{"value":171,"source":84,"evidence":172},"URLZap",[173],{"id":174,"by":175,"text":176},"25111292","brunoluiz","That is quite interesting. Only issue is to rely on Github Issues for it (it might get messy with too many issues opened). I had this same ~dream of hosting a URL Shortener…",{"value":178,"source":84,"evidence":179},"git.io",[180],{"id":114,"by":115,"text":116},{"value":182,"source":84,"evidence":183},"Amazon S3 redirect objects",[184],{"id":185,"by":186,"text":187},"25113520","elondaits","I made a URL shortener for the organization I work at using Amazon S3. I created a bucket that is hosted as a website, to which I upload empty files with the \"Redirect\" metadata…",{"comments":189,"answered":190,"key":191},27,6,[192,193,196],{"id":56,"text":57},{"id":194,"text":195},"25111201","HAHA so that was you. That was a good one! Yes and that title is definitely slightly misleading I kinda didn't want it to get so long and wanted that slight clickbait effect. Yep…",{"id":197,"text":198},"25114508","Oh that is cool! It does remind me of https:\u002F\u002Ftelegra.ph\u002F by Telegram! (Even though they weren't really advertising it as a universal shortener). Just a quick question, how did…",{"commenters":200,"max_depth":190,"maker_replies":189,"first_comment_mins":201,"lifespan_hours":202},101,25,66,[204,208,212,216,219,222,225,227,230,233,236,239,241,244,247,250,254,257,261,264,266,270,273,275,278,281,284,288,291,293,296,299,301,305,308,309,311,315,317,321,323,326,330,333,336,339,342,344,347,349,351,353,355,358,359,362,365,367,369,372,375,378,381,385,388,390,393,396,400,403,406,409,412,414,416,417,419,422,424,428,432,434,437,438,439,441,445,448,451,453,457,462,464,466,469,471,473,477,480,482,484,486,490,492,494,496,497,499,501,503,506,508,510,513,515,518,520,522,524,528,530,533,537,538,541,543,547,549,551,553,555,558,560,564,566,569,573,575,579,583,586,589,593,595,598,601,605,609,611,613,615,619,621,623,625,627,631,633,635,637,641,644,647,651,654,656,658,660,662,665,667,670,672,674,676,679],[205,40,44,206,207,40],"25111249","project\u002Fcritical\u002Fnone","VWWHFSfQ",[209,40,40,210,211,40],"25111891","commenter\u002Fneutral\u002Fnone","veesahni",[213,40,40,214,215,40],"25113912","other\u002Fneutral\u002Fnone","xwdv",[217,40,40,214,218,40],"25114561","logram",[220,40,40,214,221,40],"25114647","sp332",[223,40,40,214,224,40],"25116913","eloff",[226,40,40,210,221,40],"25114386",[228,40,40,214,229,40],"25114254","fishtoaster",[231,40,40,214,232,40],"25114605","keanebean86",[234,40,40,214,235,40],"25114658","skulk",[237,40,40,214,238,40],"25115593","teraflop",[240,40,40,214,229,40],"25115522",[242,40,40,214,243,40],"25119299","c22",[245,40,40,214,246,40],"25116259","earthboundkid",[248,40,40,214,249,40],"25118293","layoutIfNeeded",[251,40,47,252,253,40],"25114945","project\u002Fpositive\u002Fidea","mcintyre1994",[255,40,32,256,229,40],"25115448","project\u002Fneutral\u002Fnone",[258,40,32,259,260,40],"25118653","project\u002Fneutral\u002Fidea","pmiller2",[262,40,32,259,263,40],"25119719","thaumasiotes",[56,44,40,265,11,44],"maker\u002Fneutral\u002Fnone",[267,44,44,268,269,40],"25111106","project\u002Fcritical\u002Fexecution","diggan",[271,44,47,272,115,40],"25111153","project\u002Fpositive\u002Fnone",[194,44,40,274,11,44],"maker\u002Fneutral\u002Fexecution",[276,44,32,277,269,40],"25111232","project\u002Fneutral\u002Fexecution",[279,44,44,268,280,40],"25119379","a1369209993",[282,44,32,259,283,40],"25111522","alexvoda",[285,44,47,286,287,40],"25111112","maker\u002Fpositive\u002Fidea","woutr_be",[289,44,40,210,290,40],"25111166","robbiemitchell",[292,44,32,277,287,40],"25112666",[294,44,32,256,295,40],"25146713","davchana",[297,44,32,259,298,40],"25111390","iamacyborg",[300,44,32,277,287,40],"25112673",[302,44,44,303,304,40],"25113090","project\u002Fcritical\u002Fidea","bdorn",[306,44,32,256,307,40],"25114368","rsync",[197,44,40,265,11,44],[310,44,40,214,307,40],"25115977",[312,44,32,313,314,40],"25115002","project\u002Fneutral\u002Fpricing","ValentineC",[316,44,32,313,307,40],"25115962",[318,44,32,319,320,40],"25117423","project\u002Fneutral\u002Fdocs","bryogenic",[322,44,32,319,307,40],"25121165",[324,44,44,206,325,40],"25118080","voltagex_",[327,44,44,328,329,40],"25119830","project\u002Fcritical\u002Fdesign","LeoPanthera",[331,48,32,259,332,40],"25111130","Jhsto",[334,48,32,319,335,40],"25111204","navanchauhan",[337,48,32,319,338,40],"25111222","notRobot",[340,48,32,319,341,40],"25111227","lbotos",[343,48,32,259,314,40],"25111291",[345,48,40,346,11,44],"25111381","maker\u002Fneutral\u002Fidea",[348,48,40,214,295,40],"25113154",[350,48,32,274,69,40],"25113965",[352,48,32,274,332,40],"25114274",[354,48,40,210,69,40],"25114407",[356,48,40,214,357,40],"25116572","wesleytodd",[106,32,44,303,107,40],[360,32,40,214,361,40],"25111202","OskarS",[363,32,40,214,364,40],"25117162","poyu",[366,32,40,265,11,44],"25111214",[368,32,47,252,215,40],"25111229",[370,32,40,214,371,40],"25111612","hiccuphippo",[373,32,40,214,374,40],"25112505","userbinator",[376,32,40,210,377,40],"25112589","kordlessagain",[379,18,40,214,380,40],"25118658","statico",[382,18,40,383,384,40],"25119889","commenter\u002Fneutral\u002Fidea","dnpp123",[386,47,32,256,387,40],"25111375","pelasaco",[389,47,40,274,11,44],"25111420",[391,47,40,392,387,40],"25111882","commenter\u002Fpositive\u002Fidea",[394,190,44,268,395,40],"25115185","OJFord",[397,398,44,268,399,40],"25111177",7,"eeZah7Ux",[401,398,40,214,402,40],"25111236","darkwater",[404,398,40,214,405,40],"25111379","wwwwwwwww",[407,398,32,277,408,40],"25111302","interactivecode",[410,398,44,268,411,40],"25111531","tjelen",[413,398,40,265,11,44],"25112183",[415,398,40,265,11,44],"25112219",[132,38,32,256,133,40],[418,38,40,346,11,44],"25112802",[420,38,47,421,133,40],"25112858","maker\u002Fpositive\u002Fnone",[110,423,44,268,111,40],9,[425,423,32,426,427,40],"25113843","project\u002Fneutral\u002Fperformance","khalilravanna",[429,430,47,252,431,40],"25111129",10,"belval",[91,433,47,252,92,40],11,[435,433,40,383,436,40],"25112940","Phemist",[140,37,47,252,141,40],[168,37,40,274,11,44],[440,37,32,259,295,40],"25146735",[442,443,44,268,444,40],"25113753",13,"AmazingTurtle",[446,443,40,214,447,40],"25113822","tomcat27",[449,443,40,214,450,40],"25113889","philshem",[452,443,40,265,11,44],"25114659",[454,455,40,214,456,40],"25136357",14,"debian3",[458,459,32,460,461,40],"25111267",15,"project\u002Fmixed\u002Fexecution","ffpip",[463,459,40,210,338,40],"25111330",[465,459,40,210,99,40],"25111356",[467,30,44,268,468,40],"25114392","Exuma",[470,30,40,274,11,44],"25114433",[472,30,32,259,295,40],"25146743",[474,475,32,259,476,40],"25113220",17,"giancarlostoro",[478,475,40,210,479,40],"25113239","hobby-coder-guy",[481,475,40,210,476,40],"25114526",[483,475,40,383,11,44],"25114557",[485,475,40,210,476,40],"25116326",[487,488,44,268,489,40],"25118777",18,"anuila",[87,491,47,252,88,40],19,[493,491,40,346,11,44],"25112122",[98,495,32,277,99,40],20,[75,495,40,277,11,44],[498,495,40,210,99,40],"25111394",[500,495,40,210,11,44],"25111574",[502,495,40,210,99,40],"25111609",[504,495,40,210,505,40],"25111957","hunter2_",[507,495,40,210,269,40],"25111628",[509,495,40,210,99,40],"25111816",[511,495,40,210,512,40],"25111654","detaro",[514,495,40,210,269,40],"25111698",[516,495,40,210,517,40],"25111661","J-Kuhn",[174,519,32,460,175,40],21,[521,519,40,346,11,44],"25111348",[523,519,32,259,295,40],"25146751",[525,526,32,259,527,40],"25112448",22,"geekodour",[529,526,40,274,11,44],"25112975",[531,33,40,383,532,40],"25114013","soheil",[534,535,44,303,536,40],"25132759",24,"ouromoros",[161,201,40,214,162,40],[539,201,40,210,540,40],"25113312","_eht",[542,201,40,265,11,44],"25113320",[544,545,40,214,546,40],"25120231",26,"btbytes",[144,189,32,548,145,40],"project\u002Fneutral\u002Fdesign",[550,189,40,210,11,44],"25114090",[552,189,40,210,145,40],"25114139",[114,554,47,252,115,40],28,[556,554,32,256,557,40],"25111180","iainmerrick",[559,554,40,256,11,44],"25111588",[561,562,47,252,563,40],"25111094",29,"chpmrc",[185,565,40,214,186,40],30,[567,565,40,210,568,40],"25114060","thebeardisred",[570,571,47,252,572,40],"25118165",31,"nkantar",[574,571,40,210,295,40],"25146758",[576,577,40,214,578,40],"25113459",32,"rahimnathwani",[580,581,40,214,582,40],"25111224",33,"hyperpallium2",[584,585,40,214,357,40],"25116560",34,[587,585,40,214,588,40],"25136655","hacksore",[590,591,44,268,592,40],"25112851",35,"ROARosen",[594,591,40,274,11,44],"25112955",[596,597,40,214,335,40],"25111186",36,[599,31,32,259,600,40],"25111268","antonpuz",[602,603,44,303,604,40],"25111532",38,"geongeorgek",[606,607,47,252,608,40],"25114077",39,"voldemort1968",[125,610,44,303,126,40],40,[612,610,40,346,11,44],"25113282",[614,610,32,259,126,40],"25113328",[616,617,44,268,618,40],"25112282",41,"ermik",[620,617,40,210,512,40],"25112300",[622,617,40,210,11,44],"25121789",[624,617,40,210,512,40],"25123164",[626,617,40,277,11,44],"25113014",[628,629,44,303,630,40],"25113048",42,"known",[68,632,32,460,69,40],43,[634,632,40,421,11,44],"25114953",[636,632,32,277,69,40],"25120937",[638,639,47,252,640,40],"25111167",44,"priitmaxx",[642,643,44,268,592,40],"25112811",45,[645,646,47,272,447,40],"25113812",46,[648,649,44,303,650,40],"25111274",47,"start123",[652,649,40,210,653,40],"25111357","username_my1",[655,649,40,210,650,40],"25111434",[657,649,40,210,461,40],"25112360",[659,649,40,210,650,40],"25112741",[661,649,40,210,650,40],"25111627",[663,649,40,210,664,40],"25111374","chrisma0",[666,649,40,210,650,40],"25111493",[668,649,44,303,669,40],"25111402","simonklitj",[671,649,40,210,11,44],"25111516",[673,649,40,210,650,40],"25111551",[675,649,32,548,461,40],"25111798",[677,649,47,678,650,40],"25111821","project\u002Fpositive\u002Fdesign",[680,649,40,210,461,40],"25112289",[],[683,688,693,698,702,706],{"id":684,"name":685,"points":686,"category":687},"25088683","Stargate (Dwitter 20584)",377,"creative",{"id":689,"name":690,"points":691,"category":692},"25099847","LibreASR",233,"ai",{"id":694,"name":695,"points":696,"category":697},"25139833","Podcast API",223,"data",{"id":699,"name":700,"points":701,"category":687},"25071643","dosylogo",174,{"id":703,"name":704,"points":705,"category":20},"25138872","Scratch.js",169,{"id":707,"name":708,"points":709,"category":710},"25127468","Twelve70",158,"consumer_social",false,"v2",{"id":714,"name":5,"line":6,"ai":711,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":715,"top":18,"kw":716,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":717,"url":9,"mix":718,"praise":83,"objection":103,"sub":21},25110879,-0.11,[21,24,25,26],"1005324232331531135131330031355012114115",[30,31,32,33],1794036598456]