((((sandro.net))))

quarta-feira, 27 de maio de 2026

Show HN: Posthorn, self-hosted mail without the mail server https://ift.tt/cYt8kzA

Show HN: Posthorn, self-hosted mail without the mail server Introducing Posthorn, a self hosted email gateway. One docker container (or Go binary) between every self hosted app on your VPS and your transactional email provider. Set up Posthorn once, point your apps to it, done. I was trying to deploy Ghost on a DigitalOcean droplet and found that DO and many different VPS services have started to block the default SMTP ports to try to combat the various types of abuse they get. To actually configure my app, I had to hack together a Postfix relay. In another project, I had a static site which had a contact form, but my free Formspree account was occasionally hitting usage limits and I desperately wanted some of the anti-spam features they had gated behind their paid accounts so I put together a caddy module to catch HTTP POSTs and bounce them to my provider. I kept bumping into these same email issues. Many of the services I wanted to host (Gitea, Mastodon, Umami, Comentario) ran into the same limitations. This felt like a really common issue that had no good solution. Posthorn is what I built to solve this. It's a small Go binary (or 10 MB docker image) that sits between your self hosted apps and your transactional email provider of choice (shipping with support for Postmark, Resend, Mailgun, Amazon SES or an outbound SMTP relay). It also accepts POSTs from HTML forms to support static site needs while adding security layers such as honeypot fields, origin checks and IP rate limiting. There's also a JSON HTTP API that supports Bearer auth for backend scripts or cron jobs that just want a /send endpoint. I now use this personally in multiple scenarios and I've spent a lot of time beating this up and testing against what I can validate. I'd love to hear how this might be useful for you, what breaks and any feedback you might have. It's open source under Apache 2.0 and I'd love contributions. I'm planning to support and grow this for the long haul. Code: https://ift.tt/un8PM7c Docs: https://posthorn.dev/ Longer write up: https://ift.tt/zQmeugK Previous HN discussion on the exact issue I'm trying to solve: https://ift.tt/X2YVEeU https://ift.tt/un8PM7c May 27, 2026 at 01:26AM

terça-feira, 26 de maio de 2026

segunda-feira, 25 de maio de 2026

Show HN: SaveNeighbor – food delivery through your own personal network https://ift.tt/9vKJuSw

Show HN: SaveNeighbor – food delivery through your own personal network Hey everyone, the idea came to me when I got a food delivery from a woman who mentioned she had her children with her. I thought, I wish I could request her every time I get delivery, just for the feeling of knowing just who my tips are supporting. That was 4 years ago, being non-technical I didn't see myself getting it done. But thanks to Cursor and Chatgpt, SaveNeighbor is born. I know the model adds friction and the convenience is low until you build up a network, but that's kinda the point. Think of Ubers 'Wait and save', if you can be flexible you can save big on fees. And being able to choose who your money goes to is the biggest benefit in my opinion. Shoot me all your questions, I can't wait to hear your feedback. Thanks. https://ift.tt/Go1Sbkf May 24, 2026 at 10:09PM

Show HN: HTML Deployer – AI Code to Website Publisher https://ift.tt/RYmIPVc

Show HN: HTML Deployer – AI Code to Website Publisher https://ift.tt/o5JB0yx May 25, 2026 at 06:14AM

Show HN: Geomatic – a command-driven geometry studio enabled with autodiff https://ift.tt/Ji4Ez83

Show HN: Geomatic – a command-driven geometry studio enabled with autodiff All commands have the format `output = \func inputs` or just `\function inputs`. Points and scalars are built on the fly. Eg `\line a b` to an empty canvas creates points `a` and `b`, and joins them with a line. One can use broadcasting semantics similar to NumPy and PyTorch in a visual setting (imagine creating a list of circles where one dim corresponds to radius and another to the center). One can also use backpropagation, run gradient descent or visualize vector fields. Almost everything is reactive so changing a variable updates all of the downstream geometry. It also allows anyone to write and load their own visualization, which can be broadcasted and differentiated through. https://ift.tt/bNkgWaO May 25, 2026 at 05:25AM

DJ Sandro

http://sandroxbox.listen2myradio.com