[{"data":1,"prerenderedAt":150},["ShallowReactive",2],{"project-14790528":3},{"id":4,"name":5,"line":5,"line_source":6,"title":7,"url":8,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":33,"aspects":34,"strip":37,"post_text":28,"what":38,"said":63,"maker_in_thread":84,"shape":92,"grid":94,"attempts":113,"same_week":114,"maker_shows":13,"maker_hidden":143,"reader_version":144,"card":145},"14790528","Npm donate","title","Show HN: Npm donate","https:\u002F\u002Fgithub.com\u002Fbukinoshita\u002Fnpm-donate","github.com","bukinoshita",1500311872,2017,2,9,2207,2242,99,"shown","web_saas","payments for npm packages","library",[23,24,25,26],"npm","donations","stripe","open source funding","quiet",null,{"positive":30,"neutral":31,"mixed":30,"critical":32},0,1,3,4,{"privacy":35,"idea":36},{"positive":30,"critical":32},{"positive":30,"critical":30},[31,30,32,30,31,30,31,30,30],{"problem":28,"audience":39,"pricing":28,"motivation":28,"time_to_build":28,"stack":46,"openness":62,"stage":62,"team_size":62},{"value":40,"source":41,"evidence":42},"npm package maintainers and their users","inferred",[43],{"id":44,"by":10,"text":45},"14790951","Just the project owner. 1. Project maintainer add `npm-donate`; 2. Creates stripe account; 3. Add API Key; 4. Release; Users that wants to donate to the project, doesn't need an…",[47,53],{"value":48,"source":41,"evidence":49},"JavaScript",[50],{"id":51,"by":10,"text":52},"14790783","You can check an example here where I use `dotenv`. https:\u002F\u002Fgithub.com\u002Fbukinoshita\u002Fnpm-donate\u002Fblob\u002Fmaster\u002Fexample\u002Flib\u002Fdonate.js",{"value":54,"source":55,"evidence":56},"Stripe API","maker",[57,61],{"id":58,"by":59,"text":60},"14790564","detaro","The documentation you link for the stripe API key says Authenticate your account when using the API by including your secret API key in the request. You can manage your API keys…",{"id":44,"by":10,"text":45},"unknown",{"praise":64,"objections":65,"requests":74,"questions":75,"alternatives":83},[],[66],{"value":67,"source":68,"evidence":69},"Embedding the Stripe API key in a published package exposes it to end users","commenter",[70,71],{"id":58,"by":59,"text":60},{"id":72,"by":59,"text":73},"14791033","The code on the endusers machine needs the API key to function, since there is no server on the publishers side involved, right? So you have to give the API key to them in some…",[],[76],{"value":77,"source":68,"evidence":78},"How can the Stripe API key be used safely without being distributed to users",[79,80],{"id":58,"by":59,"text":60},{"id":81,"by":59,"text":82},"14790960","Add API key where? I don't get how this authenticates to Stripe without distributing the API key.",[],{"comments":85,"answered":33,"key":86},5,[87,88,89],{"id":51,"text":52},{"id":44,"text":45},{"id":90,"text":91},"14791000","To the file where is calling `npm-donate`. But instead of hard code the API Key, you use some sort of dotenv to hide the API key from the end users. When users install your…",{"commenters":13,"max_depth":14,"maker_replies":85,"first_comment_mins":33,"lifespan_hours":93},30,[95,97,99,102,104,105,107,108,111],[58,30,31,96,59,30],"project\u002Fcritical\u002Fprivacy",[51,30,30,98,10,31],"maker\u002Fneutral\u002Fdocs",[100,30,32,101,59,30],"14790930","project\u002Fneutral\u002Fidea",[44,30,30,103,10,31],"project\u002Fneutral\u002Fdocs",[81,30,31,96,59,30],[90,30,30,106,10,31],"project\u002Fneutral\u002Fprivacy",[72,30,31,96,59,30],[109,30,30,110,10,31],"14791602","maker\u002Fneutral\u002Fprivacy",[112,30,30,106,10,31],"14800687",[],[115,120,125,130,134,139],{"id":116,"name":117,"points":118,"category":119},"14805265","gamblers-dice",523,"languages",{"id":121,"name":122,"points":123,"category":124},"14771406","Quilt",367,"data",{"id":126,"name":127,"points":128,"category":129},"14799111","Cinc",363,"productivity",{"id":131,"name":132,"points":133,"category":19},"14794949","choppingboard.recipes",208,{"id":135,"name":136,"points":137,"category":138},"14769317","Python books",150,"learning_science",{"id":140,"name":141,"points":142,"category":138},"14798336","Learn Anything",145,false,"v2",{"id":146,"name":5,"line":5,"ai":143,"cat":19,"year":12,"points":13,"comments":14,"rec":27,"s":28,"top":17,"kw":147,"maker":10,"domain":9,"tier":18,"attempts":30,"strip":148,"url":8,"mix":149,"praise":-1,"objection":67,"sub":20},14790528,[23,24,25,26],"103010100",[30,31,30,32],1794036557370]