The best Hacker News stories from Show from the past day

Go back

Latest posts:

Show HN: Stepped Actions – distributed workflow orchestration for Rails

Stepped is a Rails engine, extracted out of Envirobly where it powers tasks like application deployment, that involve complex, out-of-the-band tasks like DNS provisioning, retries, waiting for instances to boot, running health checks and all the fun stuff of a highly distributed networked system.

Show HN: Stickerbox, a kid-safe, AI-powered voice to sticker printer

Bob and Arun here, creators of Stickerbox.<p>If AI were built for kids, what would it look like?<p>Asking that question led us to creativity, and more specifically, the power of kids’ imaginations. We wanted to let kids combine the power of their ideas with AI tools but we needed to make sure we did it safely and in the right way.<p>Enter Stickerbox, a voice powered sticker printer. By combining AI image generation with thermal sticker printing, we instantly turn kids' wildest ideas into real stickers they can color, stick, and share.<p>What surprised us most is how the “AI” disappears behind the magic of the device. The moment that consistently amazes kids is when the printer finishes and they are holding their own idea as a real sticker. A ghost on a skateboard, a dragon doing its taxes, their dog as a superhero, anything they can dream of, they can hold in their hand. Their reactions are what pushed us to keep building, even though hardware can be really hard.<p>Along the way the scope of the project grew more than we expected: navigating supply chains, sourcing safe BPA/BPS free thermal paper, passing safety testing for a children’s product, and designing an interface simple enough that a five year old can walk up and just talk to it. We also spent a lot of time thinking about kids’ data and privacy so that parents would feel comfortable having this in their home.<p>Stickerbox is our attempt to make modern AI kid-safe, playful, and tangible. We’d love to hear what you think!<p>P.S. If you’re interested in buying one for yourself or as a gift, use code FREE3PACK to get an extra free pack of paper refills.

Show HN: I Made Loom for Mobile

An app to make demo vids<p>Of course I have a demo vid: <a href="https://www.youtube.com/watch?v=c_fq0TzlsXI" rel="nofollow">https://www.youtube.com/watch?v=c_fq0TzlsXI</a><p>This will be my last post to HN about this. I always like to try a few titles to see if any hit.

Show HN: I open-sourced my Go and Next B2B SaaS Starter (deploy anywhere, MIT)

Hi HN, I'm Mohammed, a technical founder who loves shipping and giving back to the community. I'm open-sourcing the full-stack engine that powers my B2B product, apflow.co.<p>What it is: A production B2B starter with a Go backend and Next.js frontend. Both are fully Dockerized with separate containers. No Vercel. No Supabase. Deploy the whole thing on a $6 VPS, or split frontend and backend across different providers. You own the infrastructure.<p>The problem I was solving:<p>Every SaaS starter I evaluated had the same issue: they locked me into someone else's platform. Vercel for hosting. PlanetScale for the database. Serverless functions billing per invocation. Fine for prototypes, but costs become unpredictable at scale and migrating away is painful.<p>I wanted something I could deploy on any Linux box with docker-compose up. Something where I could host the frontend on Cloudflare Pages and the backend on a Hetzner VPS if I wanted. No vendor-specific APIs buried in my code.<p>Why Go for the backend:<p>Go gives me exactly what I need for a SaaS backend:<p>Tiny footprint. The backend idles at ~50MB RAM. On a cheap VPS, that headroom lets me run more services without upgrading. Concurrency without complexity. Billing webhooks, file uploads, and AI calls run concurrently without callback hell. Compile-time type safety. Using SQLC, my SQL compiles to type-safe Go. If the query is wrong, it fails at build time, not in production. Predictable performance. No garbage collection pauses that surprise you under load. The architecture (Modular Monolith):<p>I didn't want microservices complexity for a small team, but I needed clean separation. I built a Modular Monolith: features like Auth, Billing, and AI are isolated Go modules with explicit interfaces, but they deploy as a single binary.<p>This structure also made AI coding tools (Cursor, Claude Code) dramatically more effective. Because every module has strict boundaries, the AI knows exactly where new code belongs and doesn't break other modules.<p>Full-stack, not just backend:<p>Backend: Go 1.25 + Gin + SQLC (type-safe SQL, no ORM) + PostgreSQL with pgvector Frontend: Next.js 16 + React 19 + Tailwind + shadcn/ui Communication: The frontend consumes a clean REST API. You can swap Next.js for any framework that speaks HTTP. Infrastructure: Separate Dockerfiles for frontend and backend. Deploy together or apart. What's pre-built:<p>The boring infrastructure is solved so you can focus on your actual product:<p>Auth + RBAC: Stytch B2B integration with Organizations, Teams, and Roles. Multi-tenant data isolation enforced at the query level. Billing: Polar.sh as Merchant of Record. Handles subscriptions, invoices, and global tax/VAT. No Stripe webhook edge cases. AI Pipeline: OpenAI RAG using pgvector. The retrieval service enforces strict context boundaries to minimize hallucinations. OCR: Mistral integration for document extraction. File Storage: Cloudflare R2 integration. Each feature is a separate module. Don't need OCR? Remove it. Want Stripe instead of Polar? The billing interface is abstracted.<p>Real-world proof:<p>This isn't a template I made for GitHub stars. It's the exact code running apflow.co in production. When I added document OCR, I built it as a new module without touching Auth or Billing. The architecture held.<p>How to try it:<p>Clone the repo, read setup.md to check the prerequisite, run ./setup.sh, and you have a working B2B environment locally in minutes.<p>Feedback I want:<p>I'd appreciate feedback from Go developers on the module boundaries and cross-module interfaces. Also curious if anyone has suggestions for the Docker setup in production deployments.<p>GitHub: <a href="https://github.com/moasq/production-saas-starter" rel="nofollow">https://github.com/moasq/production-saas-starter</a><p>Live: <a href="https://apflow.co" rel="nofollow">https://apflow.co</a>

Show HN: TinyPDF – 3kb pdf library (70x smaller than jsPDF)

I needed to generate invoices in a Node.js app. jsPDF is 229KB. I only needed text, rectangles, lines, and JPEG images.<p><pre><code> So I wrote tinypdf: <400 lines of TypeScript, zero dependencies, 3.3KB minified+gzipped. What it does: - Text (Helvetica, colors, alignment) - Rectangles and lines - JPEG images - Multiple pages, custom sizes What it doesn't do: - Custom fonts, PNG/SVG, forms, encryption, HTML-to-PDF That's it. The 95% use case for invoices, receipts, reports, tickets, and labels. GitHub: https://github.com/Lulzx/tinypdf npm: npm install tinypdf</code></pre>

Show HN: Hacker News, but every headline is hysterical clickbait

Show HN: A local-first memory store for LLM agents (SQLite)

Show HN: Composify – Open-Source Visual Editor / Server-Driven UI for React

Everyone's shipping AI tools right now, and here I am with a visual editor. Still, I think many teams are very familiar with the problem of "marketing wants to change the landing page again."<p>I've run into this for years. Campaign pages come in, engineers get pulled in, and tickets stack up. It's usually the same components, just rearranged.<p>A few years ago, at a startup I worked at, we built an internal tool to deal with this. You register your existing React components, they show up as drag-and-drop blocks, and the result is a JSX string. No schema to learn, no changes to your component code.<p>We used it in production, handling real traffic in a messy, legacy-heavy environment. It held up well. Over time, it powered roughly 60% of our traffic. Marketing shipped pages without filing tickets, and product teams ran layout-level A/B tests. That experience eventually led me to clean it up and open-source it.<p>Composify sits somewhere between a no-code page builder and a headless CMS. Page builders like Wix or Squarespace offer drag-and-drop, but lock you into their components. There are also solid tools like Builder.io, Puck, and Storyblok, but many require you to adapt your components to their model. Composify is intentionally minimal: it lets you use your actual production components as they are.<p>It's still early. The docs need work, and there are rough edges. But it's running in production and has solved a real problem for us. If you already have a component library and want non-devs to compose pages from it, it might be useful.<p>Homepage: <a href="https://composify.js.org" rel="nofollow">https://composify.js.org</a><p>Happy to answer questions or hear feedback!

Show HN: Learning a Language Using Only Words You Know

A proof-of-concept language learning app that uses LLMs to generate definitions of unknown words using only previously mastered vocabulary.

Show HN: Picknplace.js, an alternative to drag-and-drop

I find that the drag and drop experience can quickly become a nightmare, especially on mobile. To tap, hold, drag, and scroll, all at the same time, is both difficult to achieve, and prone to errors. I've always had in mind this 2-step approach, where picking an element and placing it were two separate steps. So I implemented this basic version to showcase my idea.<p>While it might take more time than a regular drag and drop, the benefit is for people who struggle with holding down the mouse button. With picknplace.js, you only need two clicks and some scrolling.<p>This solution is meant as an experiment, so I'm open to discussion.

Show HN: Picknplace.js, an alternative to drag-and-drop

I find that the drag and drop experience can quickly become a nightmare, especially on mobile. To tap, hold, drag, and scroll, all at the same time, is both difficult to achieve, and prone to errors. I've always had in mind this 2-step approach, where picking an element and placing it were two separate steps. So I implemented this basic version to showcase my idea.<p>While it might take more time than a regular drag and drop, the benefit is for people who struggle with holding down the mouse button. With picknplace.js, you only need two clicks and some scrolling.<p>This solution is meant as an experiment, so I'm open to discussion.

Show HN: Stop AI scrapers from hammering your self-hosted blog (using porn)

Alright so if you run a self-hosted blog, you've probably noticed AI companies scraping it for training data. And not just a little (RIP to your server bill).<p>There isn't much you can do about it without cloudflare. These companies ignore robots.txt, and you're competing with teams with more resources than you. It's you vs the MJs of programming, you're not going to win.<p>But there is a solution. Now I'm not going to say it's a great solution...but a solution is a solution. If your website contains content that will trigger their scraper's safeguards, it will get dropped from their data pipelines.<p>So here's what fuzzycanary does: it injects hundreds of invisible links to porn websites in your HTML. The links are hidden from users but present in the DOM so that scrapers can ingest them and say "nope we won't scrape there again in the future".<p>The problem with that approach is that it will absolutely nuke your website's SEO. So fuzzycanary also checks user agents and won't show the links to legitimate search engines, so Google and Bing won't see them.<p>One caveat: if you're using a static site generator it will bake the links into your HTML for everyone, including googlebot. Does anyone have a work-around for this that doesn't involve using a proxy?<p>Please try it out! Setup is one component or one import.<p>(And don't tell me it's a terrible idea because I already know it is)<p>package: <a href="https://www.npmjs.com/package/@fuzzycanary/core" rel="nofollow">https://www.npmjs.com/package/@fuzzycanary/core</a> gh: <a href="https://github.com/vivienhenz24/fuzzy-canary" rel="nofollow">https://github.com/vivienhenz24/fuzzy-canary</a>

Show HN: Stop AI scrapers from hammering your self-hosted blog (using porn)

Alright so if you run a self-hosted blog, you've probably noticed AI companies scraping it for training data. And not just a little (RIP to your server bill).<p>There isn't much you can do about it without cloudflare. These companies ignore robots.txt, and you're competing with teams with more resources than you. It's you vs the MJs of programming, you're not going to win.<p>But there is a solution. Now I'm not going to say it's a great solution...but a solution is a solution. If your website contains content that will trigger their scraper's safeguards, it will get dropped from their data pipelines.<p>So here's what fuzzycanary does: it injects hundreds of invisible links to porn websites in your HTML. The links are hidden from users but present in the DOM so that scrapers can ingest them and say "nope we won't scrape there again in the future".<p>The problem with that approach is that it will absolutely nuke your website's SEO. So fuzzycanary also checks user agents and won't show the links to legitimate search engines, so Google and Bing won't see them.<p>One caveat: if you're using a static site generator it will bake the links into your HTML for everyone, including googlebot. Does anyone have a work-around for this that doesn't involve using a proxy?<p>Please try it out! Setup is one component or one import.<p>(And don't tell me it's a terrible idea because I already know it is)<p>package: <a href="https://www.npmjs.com/package/@fuzzycanary/core" rel="nofollow">https://www.npmjs.com/package/@fuzzycanary/core</a> gh: <a href="https://github.com/vivienhenz24/fuzzy-canary" rel="nofollow">https://github.com/vivienhenz24/fuzzy-canary</a>

Show HN: GitForms – Zero-cost contact forms using GitHub Issues as database

got tired of paying $29–99/month for simple contact forms on landing pages and side projects (Typeform, Tally, etc.).So I built GitForms: an open-source contact form that stores submissions as GitHub Issues.How it works:Form runs on your Next.js 14 site (Tailwind + TypeScript) On submit → creates a new Issue in your repo via GitHub API You get instant email notifications from GitHub (free)<p>Zero ongoing costs:No database, no backend servers Deploy on Vercel/Netlify free tier in minutes Configurable via JSON (themes, text, multi-language)<p>Perfect for MVPs, landing pages, portfolios, or any low-volume use case.Repo: <a href="https://github.com/Luigigreco/gitforms" rel="nofollow">https://github.com/Luigigreco/gitforms</a> License: CC-BY-NC-SA-4.0 (non-commercial only – fine for personal projects, not client work).Curious what HN thinks: would you use this? Any obvious improvements or edge cases I missed?Thanks!

Show HN: GitForms – Zero-cost contact forms using GitHub Issues as database

got tired of paying $29–99/month for simple contact forms on landing pages and side projects (Typeform, Tally, etc.).So I built GitForms: an open-source contact form that stores submissions as GitHub Issues.How it works:Form runs on your Next.js 14 site (Tailwind + TypeScript) On submit → creates a new Issue in your repo via GitHub API You get instant email notifications from GitHub (free)<p>Zero ongoing costs:No database, no backend servers Deploy on Vercel/Netlify free tier in minutes Configurable via JSON (themes, text, multi-language)<p>Perfect for MVPs, landing pages, portfolios, or any low-volume use case.Repo: <a href="https://github.com/Luigigreco/gitforms" rel="nofollow">https://github.com/Luigigreco/gitforms</a> License: CC-BY-NC-SA-4.0 (non-commercial only – fine for personal projects, not client work).Curious what HN thinks: would you use this? Any obvious improvements or edge cases I missed?Thanks!

Show HN: I built a WebMIDI sequencer to control my hardware synths

Hey HN,<p>I’m an ex-Google engineer trying to get back into music production.<p>I needed a way to sequence my hardware synths using AI contexts without constantly switching windows, so I built this.<p>It runs entirely in the browser using WebMIDI. No login required. It connects to your local MIDI devices (if you're on Chrome/Edge) and lets you generate patterns.<p>Tech stack: [React / WebMIDI API / etc].<p>Link: www.simplychris.ai/droplets<p>Code is a bit messy, but it works. Feedback welcome.

Show HN: Titan – JavaScript-first framework that compiles into a Rust server

Hi HN,<p>I built Titan, a backend framework where you write routes and logic in JavaScript, and the CLI compiles everything into a single Rust + Axum binary using the Boa JS engine. No Node.js is required in production.<p>The idea is to keep JS developer experience while getting Rust performance and a self-contained deployable server.<p>Current features:<p>JS route DSL<p>Action system mapped to Rust<p>esbuild bundling<p>Generated Rust server with Axum<p>Hot-reload dev server<p>Single-binary output<p>Repo: <a href="https://github.com/ezet-galaxy/-ezetgalaxy-titan" rel="nofollow">https://github.com/ezet-galaxy/-ezetgalaxy-titan</a><p>Would love feedback on the architecture, DX, and whether this hybrid JS→Rust approach is useful.<p>Thanks for reading!

Show HN: High-Performance Wavelet Matrix for Python, Implemented in Rust

I built a Rust-powered Wavelet Matrix library for Python.<p>There were surprisingly few practical Wavelet Matrix implementations available for Python, so I implemented one with a focus on performance, usability, and typed APIs. It supports fast rank/select, top-k, quantile, range queries, and even dynamic updates.<p>Feedback welcome!

Show HN: High-Performance Wavelet Matrix for Python, Implemented in Rust

I built a Rust-powered Wavelet Matrix library for Python.<p>There were surprisingly few practical Wavelet Matrix implementations available for Python, so I implemented one with a focus on performance, usability, and typed APIs. It supports fast rank/select, top-k, quantile, range queries, and even dynamic updates.<p>Feedback welcome!

Show HN: High-Performance Wavelet Matrix for Python, Implemented in Rust

I built a Rust-powered Wavelet Matrix library for Python.<p>There were surprisingly few practical Wavelet Matrix implementations available for Python, so I implemented one with a focus on performance, usability, and typed APIs. It supports fast rank/select, top-k, quantile, range queries, and even dynamic updates.<p>Feedback welcome!

1 2 3 ... 912 913 914 >