[{"data":1,"prerenderedAt":241},["ShallowReactive",2],{"project-14989214":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":35,"aspects":36,"strip":41,"post_text":43,"what":44,"said":69,"maker_in_thread":153,"shape":160,"grid":164,"attempts":202,"same_week":203,"maker_shows":34,"maker_hidden":233,"reader_version":234,"card":235},"14989214","notifme-sdk","A Node.js open source library to send transactional notifications","title","Show HN: A Node.js open source library to send transactional notifications","https:\u002F\u002Fgithub.com\u002Fnotifme\u002Fnotifme-sdk","github.com","bdav24",1502456660,2017,84,17,537,2242,24,"notable","infrastructure","notification library","library",[24,25,26,27,28],"node.js","transactional notifications","sms","push notifications","email","debated",0.194,{"positive":32,"neutral":32,"mixed":33,"critical":34},3,0,2,8,{"idea":37,"docs":38,"design":40},{"positive":34,"critical":33},{"positive":33,"critical":39},1,{"positive":33,"critical":39},[32,33,32,33,32,33,39,33,42,33,39,33,33,33,33,42,42],5,null,{"problem":45,"audience":43,"pricing":43,"motivation":55,"time_to_build":43,"stack":62,"openness":67,"stage":68,"team_size":68},{"value":46,"source":47,"evidence":48},"Sending transactional notifications across email, SMS and push from one library","inferred",[49,51],{"id":50},"post",{"id":52,"by":53,"text":54},"14990185","garysieling","Are there any well-tested Node.js libraries to do scheduling alongside something this? E.g., if I wanted to send the notifications once a week, etc.",{"value":56,"source":57,"evidence":58},"Started as a SaaS API service, then released as open source after dropping sales plans","maker",[59],{"id":60,"by":11,"text":61},"14990297","Hi hitgeek, thanks for your comment. The backstory is quite simple, the initial plan was to make a saas api service, but we don't like cold calling so much, so it ended up as an…",[63],{"value":64,"source":57,"evidence":65},"Node.js",[66],{"id":50},"open_source","unknown",{"praise":70,"objections":94,"requests":112,"questions":128,"alternatives":137},[71,87],{"value":72,"source":73,"evidence":74},"Clean, lovely design and practical library","commenter",[75,79,83],{"id":76,"by":77,"text":78},"14990755","richthegeek","We just wrote something similar, using RabbitMQ (https:\u002F\u002Fgithub.com\u002Frichthegeek\u002Fbeatrix) as the main manager for things. Seems like retries and delays are not part of this, but I…",{"id":80,"by":81,"text":82},"14989721","hitgeek","from the docs this looks like a really practical library. The testing and dev tools look great. whats the backstory for this library?",{"id":84,"by":85,"text":86},"14993508","yashafromrussia","ahh this looks awesome! will try it out. I love the fact that you can use any queue with this \u003C3",{"value":88,"source":73,"evidence":89},"Fallback and round-robin provider ideas are useful",[90],{"id":91,"by":92,"text":93},"14990574","squaro","fallback + round-robin : \u003C3 Awesome idea. fallback : could be very usefull if you main provider is down round-robin : send more free emails using multiple providers",[95,105],{"value":96,"source":73,"evidence":97},"'Transactional' term is not explained in the README",[98,102],{"id":99,"by":100,"text":101},"14990393","michaelmior","What is a \"transactional\" notification? This doesn't seem to be explained anywhere in the README.",{"id":103,"by":100,"text":104},"14995659","I would really suggest clarifying what you mean somewhere then because I don't think anyone would interpret it that way.",{"value":106,"source":73,"evidence":107},"Logo looks like a recolored Telegram logo, trademark risk",[108],{"id":109,"by":110,"text":111},"14990652","marksomnian","The logo looks like a recoloured Telegram logo [0]. I'd recommend you change it before this gets big to avoid trademark shenanigans. [0]: https:\u002F\u002Ftelegram.org",[113,117,124],{"value":114,"source":73,"evidence":115},"Built-in retries and delays",[116],{"id":76,"by":77,"text":78},{"value":118,"source":73,"evidence":119},"Queue integration examples (RabbitMQ, Redis)",[120,121],{"id":76,"by":77,"text":78},{"id":122,"by":11,"text":123},"14990955","Very nice, queue integration examples are one of my next steps. I didn't include the queue inside the lib to give the choice to users, but I intended to write a few ones. Would…",{"value":125,"source":73,"evidence":126},"Clarify how provider can run on a separate process from publisher",[127],{"id":76,"by":77,"text":78},[129,133],{"value":130,"source":73,"evidence":131},"What is a transactional notification?",[132],{"id":99,"by":100,"text":101},{"value":134,"source":73,"evidence":135},"How to schedule recurring notifications?",[136],{"id":52,"by":53,"text":54},[138,145],{"value":139,"source":73,"evidence":140},"Postways, a unified email\u002FSMS\u002Fpush API with template management",[141],{"id":142,"by":143,"text":144},"14993647","pan69","Shameless plug here.. I've been working on a service that kinda solves a similar problem, called Postways [1]. Even though Postways also provides a unified API for sending email,…",{"value":146,"source":73,"evidence":147},"beatrix (RabbitMQ-based messaging) and node-cron for scheduling",[148,149],{"id":76,"by":77,"text":78},{"id":150,"by":151,"text":152},"14990244","ezekg","I've used https:\u002F\u002Fgithub.com\u002Fkelektiv\u002Fnode-cron in the past, which could be run in the same process as the web app or in its own process. Works really well for recurring jobs.",{"comments":42,"answered":34,"key":154},[155,156,159],{"id":122,"text":123},{"id":157,"text":158},"14990643","Thanks for the feedback. I added the word \"transactional\" to say that we can't send batches with the lib. Anyway it's not a hard limitation because you can always make a loop.",{"id":60,"text":61},{"commenters":161,"max_depth":42,"maker_replies":42,"first_comment_mins":162,"lifespan_hours":163},11,57,12,[165,167,169,171,175,177,179,181,183,185,187,190,193,194,195,197,200],[76,33,32,166,77,33],"project\u002Fneutral\u002Fidea",[122,33,33,168,11,39],"maker\u002Fneutral\u002Fexecution",[99,39,32,170,100,33],"project\u002Fneutral\u002Fdocs",[172,39,33,173,174,33],"14990506","commenter\u002Fneutral\u002Fdocs","treehau5",[176,39,32,170,100,33],"14990536",[157,39,33,178,11,39],"maker\u002Fneutral\u002Fdocs",[103,39,39,180,100,33],"project\u002Fcritical\u002Fdocs",[142,34,33,182,143,33],"other\u002Fneutral\u002Fnone",[80,32,42,184,81,33],"maker\u002Fpositive\u002Fnone",[60,32,33,186,11,39],"maker\u002Fneutral\u002Fnone",[109,188,39,189,110,33],4,"project\u002Fcritical\u002Fdesign",[191,188,33,192,11,39],"14990753","commenter\u002Fneutral\u002Fdesign",[52,42,33,182,53,33],[150,42,33,182,151,33],[196,42,33,186,11,39],"14990655",[91,198,42,199,92,33],6,"project\u002Fpositive\u002Fidea",[84,201,42,199,85,33],7,[],[204,209,214,219,224,229],{"id":205,"name":206,"points":207,"category":208},"15017126","howacarworks.com",845,"creative",{"id":210,"name":211,"points":212,"category":213},"14997799","BarbBlock",614,"security_privacy",{"id":215,"name":216,"points":217,"category":218},"15000947","Mathcha",358,"dev_tools",{"id":220,"name":221,"points":222,"category":223},"14980075","Kozmos",197,"productivity",{"id":225,"name":226,"points":227,"category":228},"14982359","tenso.rs",196,"ai",{"id":230,"name":231,"points":232,"category":218},"14984167","Crackle",114,false,"v2",{"id":236,"name":5,"line":6,"ai":233,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":237,"top":18,"kw":238,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":239,"url":9,"mix":240,"praise":72,"objection":96,"sub":21},14989214,0.19,[24,25,26,27,28],"30303010501000055",[32,32,33,34],1794036558084]