[{"data":1,"prerenderedAt":496},["ShallowReactive",2],{"project-22145168":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":48,"post_text":51,"what":52,"said":96,"maker_in_thread":212,"shape":223,"grid":227,"attempts":451,"same_week":458,"maker_shows":50,"maker_hidden":488,"reader_version":489,"card":490},"22145168","Userbase","Add user accounts and persistence to your static site","title","Show HN: Userbase – Add user accounts and persistence to your static site","https:\u002F\u002Fuserbase.com\u002F","userbase.com","DVassallo",1579935865,2020,206,93,266,3028,9,"notable","web_saas","backend as a service","api",[24,25,26,27],"user authentication","end-to-end encryption","static site backend","user accounts","mixed",-0.184,{"positive":31,"neutral":32,"mixed":33,"critical":34},15,28,4,22,69,{"design":37,"privacy":40,"idea":42,"execution":44,"docs":46,"pricing":47},{"positive":38,"critical":39},0,6,{"positive":41,"critical":39},5,{"positive":39,"critical":43},8,{"positive":38,"critical":45},1,{"positive":38,"critical":38},{"positive":38,"critical":45},[45,41,38,45,49,41,50,45,49,49,45,49,45,45,45,50,49,41,38,41,45,45,49,49,45,38,49,49,41,45,49,41,41,45,49,49,33,41,41,45],3,2,null,{"problem":53,"audience":59,"pricing":68,"motivation":74,"time_to_build":51,"stack":82,"openness":93,"stage":94,"team_size":95},{"value":54,"source":55,"evidence":56},"Adding user accounts and data persistence to static sites without running a database","maker",[57],{"id":58},"post",{"value":60,"source":61,"evidence":62},"Developers building apps on static sites who want user accounts","inferred",[63,64],{"id":58},{"id":65,"by":66,"text":67},"22146010","paublyrne","If your product is SAAS aimed at helping to add authentication to simple apps with low lift, then I think it's a real problem. If I use this product in my product and my customer…",{"value":69,"source":55,"evidence":70},"Free tier with a Pro plan for unlimited metered storage planned",[71],{"id":72,"by":11,"text":73},"22147655","Correct. Pro plan with unlimited metered storage, and support for collecting payments coming soon. (Targeting end of April).",{"value":75,"source":76,"evidence":77},"Maker wanted a user account option for their own application with no good options available","commenter",[78],{"id":79,"by":80,"text":81},"22146686","j-berman","Perhaps, we'll see! My interest in this project was born out of wanting to do something similar for my own application. Didn't see any good options at the time and now there is…",[83],{"value":84,"source":61,"evidence":85},"JavaScript SDK",[86,90],{"id":87,"by":88,"text":89},"22148384","tuxxy","I took a cursory look at the crypto on the backend, and it was mildly concerning. It appears to not be using modern asymmetric primitives. At first glance, it's not insecure or…",{"id":91,"by":11,"text":92},"22147934","Main differences: - An end-to-end encrypted database. - Super simple SDK. - 100% open source, MIT licensed. Both the backend and SDK.","open_source","launched","unknown",{"praise":97,"objections":123,"requests":150,"questions":173,"alternatives":192},[98,109,116],{"value":99,"source":76,"evidence":100},"Privacy-focused design with end-to-end encryption",[101,105],{"id":102,"by":103,"text":104},"22146953","soneca","Wow, that's exactly what I needed. I see a lot of comments challenging the founder's choice on the trade-off \"e2e encryption vs users losing their passwords\", so I will explain…",{"id":106,"by":107,"text":108},"22147219","naiyt","Wow, this is fortuitous for me. I've been wanting something like this for quite some time, and was literally just thinking about it this morning. I've had a lot of ideas for…",{"value":110,"source":55,"evidence":111},"Simple SDK and predictable pricing",[112,115],{"id":113,"by":11,"text":114},"22146281","It is. Main differences: - User data is end-to-end encrypted. - Super simple SDK. - Predictable pricing. (You won't need a cost calculator.) - 100% open source, MIT licensed.",{"id":91,"by":11,"text":92},{"value":117,"source":55,"evidence":118},"Open source under MIT license",[119,120],{"id":91,"by":11,"text":92},{"id":121,"by":11,"text":122},"22154301","Wanted it to be open, no strings attached. The business comes from providing high-quality hosting and (eventually) pro services (support for accepting payments, etc).",[124,135,139],{"value":125,"source":76,"evidence":126},"No password reset: losing the password means losing data",[127,130,131],{"id":128,"by":66,"text":129},"22145824","From the FAQ: What happens if a user forgets the password? Users should always keep a copy of their password in a safe place, such as a password manager. Since the encryption key…",{"id":65,"by":66,"text":67},{"id":132,"by":133,"text":134},"22146671","oefrha","I think the problem is that there might not be too much overlap between projects so simple that developers would completely outsource user accounts and data management, and…",{"value":136,"source":76,"evidence":137},"Cryptography uses a dated 2048-bit Diffie-Hellman group rather than modern primitives",[138],{"id":87,"by":88,"text":89},{"value":140,"source":76,"evidence":141},"Storing the user key in local storage is risky",[142,146],{"id":143,"by":144,"text":145},"22146231","lovetocode","Seriously, why on earth would you even recommend storing a password in plaintext anywhere?",{"id":147,"by":148,"text":149},"22151992","ThePowerOfFuet",">keep the user's key stored in plaintext Nope.",[151,159,166],{"value":152,"source":76,"evidence":153},"Password reset functionality",[154,155],{"id":128,"by":66,"text":129},{"id":156,"by":157,"text":158},"22177550","shanecleveland","Agreed. I can definitely see myself using this once password reset is an option. I am sure there are use cases with the existing functionality. Telling users their data will be…",{"value":160,"source":76,"evidence":161},"Social logins such as GitHub and Twitter",[162],{"id":163,"by":164,"text":165},"22148452","swyx","where do social logins like github and twitter rank in your list of priorities? on a more meta level, since you're so open anyway, might want to look into public feature…",{"value":167,"source":76,"evidence":168},"Origin whitelisting to prevent phishing",[169],{"id":170,"by":171,"text":172},"22148885","persona","congratulations on the launch! are there any checks done on the backend to guarantee that the website using the \"init(appId)\" call is the right one? The attack vector here is a…",[174,185],{"value":175,"source":76,"evidence":176},"How does it differ from Auth0, Parse or Firebase?",[177,181],{"id":178,"by":179,"text":180},"22147885","adamlangsner","What are the differences between this product and Auth0? Why would a dev choose one over the other? Do they target different developers \u002F stacks. Or are they both vying for the…",{"id":182,"by":183,"text":184},"22145804","quickthrower2","I guess this is similar to Parse or Firebase?",{"value":186,"source":76,"evidence":187},"How is client-side password hashing done and how does it compare to SRP?",[188],{"id":189,"by":190,"text":191},"22146406","giaour","> we hash passwords client-side Is that instead of or in addition to any hashing done on the server? It seems like doing all hashing on the client side essentially means that you…",[193,197,201,205],{"value":194,"source":76,"evidence":195},"Auth0",[196],{"id":178,"by":179,"text":180},{"value":198,"source":76,"evidence":199},"Parse or Firebase",[200],{"id":182,"by":183,"text":184},{"value":202,"source":76,"evidence":203},"Netlify Identity",[204],{"id":102,"by":103,"text":104},{"value":206,"source":76,"evidence":207},"remoteStorage",[208],{"id":209,"by":210,"text":211},"22148788","fiatjaf","There's a protocol for this and it's called remoteStorage[0]. It has a JavaScript implementation that just works and different compatible servers, plus anyone can run its own.…",{"comments":18,"answered":39,"key":213},[214,217,220],{"id":215,"text":216},"22146313","End-to-end encryption is one of the main features of the product. Since the key is user-controlled, there will always be something that the user must keep and never lose. For…",{"id":218,"text":219},"22148482","We’re marketing this as something that can significantly reduce personal data misuse compared to having user data sitting in clear in a MySQL database. The value-add is mainly to…",{"id":221,"text":222},"22146255","Thank you. Working on it. The next version is expected to have a feature to allow you to export all the data to your own self-hosted backend (without any downtime).",{"commenters":224,"max_depth":43,"maker_replies":18,"first_comment_mins":225,"lifespan_hours":226},40,243,94,[228,230,233,236,240,243,245,248,250,252,253,255,258,261,262,266,269,272,273,276,278,280,282,285,288,291,293,297,299,302,304,306,309,312,315,317,319,321,323,325,328,330,334,336,338,341,344,345,347,348,351,354,357,358,360,361,362,365,368,370,372,375,377,380,383,385,386,389,393,395,396,397,401,403,407,409,413,414,416,418,422,425,428,430,432,434,436,438,440,441,443,445,449],[128,38,45,229,66,38],"project\u002Fcritical\u002Fdesign",[231,38,45,229,232,38],"22145853","Eikon",[234,38,41,235,80,38],"22146014","project\u002Fpositive\u002Fprivacy",[237,38,38,238,239,38],"22146432","commenter\u002Fneutral\u002Fnone","weego",[241,38,38,238,242,38],"22146493","ec109685",[244,38,38,238,80,38],"22146556",[246,38,49,247,80,38],"22145878","maker\u002Fneutral\u002Fdesign",[65,38,45,249,66,38],"project\u002Fcritical\u002Fidea",[251,38,38,238,80,38],"22146058",[132,38,45,249,133,38],[79,38,41,254,80,38],"project\u002Fpositive\u002Fidea",[256,38,49,257,133,38],"22146724","project\u002Fmixed\u002Fidea",[259,38,41,260,80,38],"22146797","maker\u002Fpositive\u002Fnone",[156,38,49,257,157,38],[263,38,49,264,265,38],"22149802","project\u002Fneutral\u002Fdesign","geofft",[267,38,45,268,80,38],"22150481","project\u002Fcritical\u002Fprivacy",[270,38,45,271,144,38],"22146200","maker\u002Fcritical\u002Fprivacy",[143,38,38,238,144,38],[274,38,49,275,80,38],"22146296","maker\u002Fneutral\u002Fprivacy",[189,38,49,277,190,38],"project\u002Fneutral\u002Fprivacy",[279,38,49,275,80,38],"22146651",[281,38,38,238,144,38],"22152366",[283,38,49,284,80,38],"22154281","maker\u002Fneutral\u002Fnone",[286,38,38,238,287,38],"22146327","Axsuul",[289,38,45,229,290,38],"22146307","mkl",[292,38,49,247,80,38],"22146951",[294,38,49,295,296,38],"22146412","project\u002Fmixed\u002Fdesign","ghego1",[298,38,45,249,242,38],"22146471",[300,38,45,229,301,38],"22146707","tobr",[303,38,49,247,80,38],"22146784",[305,38,49,247,80,38],"22146764",[307,38,45,249,308,38],"22148308","withinboredom",[310,38,49,311,80,38],"22150364","maker\u002Fneutral\u002Fidea",[313,38,45,268,314,38],"22149825","sarakayakomzin",[316,38,49,275,80,38],"22150327",[318,38,45,249,242,38],"22146515",[320,38,49,247,80,38],"22146918",[322,38,49,277,242,38],"22147056",[324,38,49,275,80,38],"22147123",[326,38,49,327,242,38],"22147384","project\u002Fneutral\u002Fidea",[329,38,41,254,80,38],"22147454",[331,38,38,332,333,38],"22148690","other\u002Fneutral\u002Fnone","kick",[335,38,38,332,242,38],"22149795",[337,38,38,332,333,38],"22150125",[339,38,49,327,340,38],"22146525","nbrempel",[342,38,41,343,80,38],"22146931","maker\u002Fpositive\u002Fidea",[147,38,45,268,148,38],[346,38,49,275,80,38],"22154252",[215,38,38,311,11,45],[349,38,45,249,350,38],"22167431","jwblackwell",[352,38,45,229,353,38],"22146510","mattlondon",[355,38,45,229,356,38],"22148813","prophesi",[102,45,41,235,103,38],[359,45,41,260,80,38],"22148809",[87,50,45,268,88,38],[218,50,38,275,11,45],[363,50,45,364,314,38],"22148517","project\u002Fcritical\u002Fexecution",[366,50,49,367,80,38],"22148655","maker\u002Fneutral\u002Fexecution",[369,50,38,238,356,38],"22148618",[371,50,38,238,80,38],"22148891",[373,50,38,374,88,38],"22158289","commenter\u002Fcritical\u002Fprivacy",[376,50,49,277,80,38],"22162569",[378,50,38,379,356,38],"22173484","commenter\u002Fneutral\u002Fprivacy",[381,49,49,382,301,38],"22146166","project\u002Fneutral\u002Fexecution",[221,49,38,384,11,45],"maker\u002Fpositive\u002Fexecution",[106,33,41,235,107,38],[387,41,41,260,388,38],"22147589","gbasin",[390,39,49,391,392,38],"22148330","project\u002Fneutral\u002Fdocs","neiman",[209,394,45,249,210,38],7,[178,43,49,327,179,38],[91,43,38,311,11,45],[398,18,49,399,400,38],"22147505","project\u002Fneutral\u002Fpricing","Existenceblinks",[72,18,38,402,11,45],"maker\u002Fneutral\u002Fpricing",[404,405,41,254,406,38],"22146634",10,"antoineMoPa",[163,408,49,257,164,38],11,[410,411,41,343,412,38],"22148953",12,"stockkid",[121,411,38,311,11,45],[170,415,45,268,171,38],13,[417,415,38,275,11,45],"22148912",[419,420,49,327,421,38],"22145926",14,"heinrichhartman",[423,420,38,332,424,38],"22146160","weef",[426,420,45,249,427,38],"22148596","guu",[429,420,41,254,80,38],"22148689",[431,420,49,327,427,38],"22148800",[433,420,49,327,80,38],"22148831",[435,420,41,235,80,38],"22151507",[437,420,49,327,80,38],"22148706",[439,420,41,260,421,38],"22158835",[182,31,49,327,183,38],[442,31,41,235,80,38],"22145898",[113,31,38,444,11,45],"project\u002Fpositive\u002Fpricing",[446,31,45,447,448,38],"22147459","project\u002Fcritical\u002Fpricing","tristador",[450,31,38,402,11,45],"22147696",[452,453],{"id":4,"t":12,"points":14,"comments":15},{"id":454,"t":455,"points":456,"comments":457},"25869472",1611302261,80,25,[459,463,468,473,478,483],{"id":460,"name":461,"points":462,"category":20},"22152736","usb-hubs.org",560,{"id":464,"name":465,"points":466,"category":467},"22154088","botium-speech-processing",438,"ai",{"id":469,"name":470,"points":471,"category":472},"22128385","Women Make",345,"consumer_social",{"id":474,"name":475,"points":476,"category":477},"22164212","Binarysearch.io",279,"learning_science",{"id":479,"name":480,"points":481,"category":482},"22174412","Thinc",250,"languages",{"id":484,"name":485,"points":486,"category":487},"22139975","Postgresqlco.nf",223,"dev_tools",false,"v2",{"id":491,"name":5,"line":6,"ai":488,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":492,"top":18,"kw":493,"maker":11,"domain":10,"tier":19,"attempts":50,"strip":494,"url":9,"mix":495,"praise":99,"objection":125,"sub":21},22145168,-0.18,[24,25,26,27],"1501352133131112350511331033513551334551",[31,32,33,34],1794036585814]