Show HN: Claude Code Plugin to play music when waiting on user input
Claude Code tends to be just slow enough you have time to tab away and get distracted. This plugin uses Claude Code's hooks to play music when Claude is waiting for user input so you don't just leave it sitting for 15 minutes.
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.
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
Show HN: SQL Quest – The Bank Job
The article details a fictional bank heist where the protagonist uses their SQL skills to bypass security measures and access the bank's systems. It highlights the potential risks and vulnerabilities that can be exploited through SQL-based attacks.
Show HN: Concepts Reader, a Backup Plan for My Life
I manage my life in Concepts (iPad drawing app) using dependency graphs. My boards grew to gigabytes and I got worried - what if the app stops working for my use case? So I built a viewer as a backup plan. It's Flutter Web, open source, and runs in the browser.
Show HN: I built an interactive 3D brain viewer (DK Atlas)
I was struggling to understand neuroscience and the word associations between technical terms and where the locations are (anatomically)
And quite some of my neuroscience friends are loving it.
Show HN: Dbzero – Code as if you have infinite RAM (Python persistence engine)
DBZero is an open-source software development framework that provides a set of tools and libraries for building modern, scalable web applications. It offers features like database integration, templating, and routing to help developers create high-performance, production-ready applications efficiently.
Show HN: Stickerbox, a kid-safe, AI-powered voice to sticker printer
Bob and Arun here, creators of Stickerbox.
If AI were built for kids, what would it look like?
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.
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.
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.
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.
Stickerbox is our attempt to make modern AI kid-safe, playful, and tangible. We’d love to hear what you think!
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: Misata – synthetic data engine using LLM and Vectorized NumPy
Hey HN, I’m the author.
I built Misata because existing tools (Faker, Mimesis) are great for random rows but terrible for relational or temporal integrity. I needed to generate data for a dashboard where "Timesheets" must happen after "Project Start Date," and I wanted to define these rules via natural language.
How it works: LLM Layer: Uses Groq/Llama-3.3 to parse a "story" into a JSON schema constraint config.
Simulation Layer: Uses Vectorized NumPy (no loops) to generate data. It builds a DAG of tables to ensure parent rows exist before child rows (referential integrity).
Performance: Generates ~250k rows/sec on my M1 Air.
It’s early alpha. The "Graph Reverse Engineering" (describe a chart -> get data) is experimental but working for simple curves.
pip install misata
I’d love feedback on the simulator.py architecture—I’m currently keeping data in-memory (Pandas) which hits a ceiling at ~10M rows. Thinking of moving to DuckDB for out-of-core generation next. Thoughts?
Show HN: Linggen – A local-first memory layer for your AI (Cursor, Zed, Claude)
Hi HN,
Working with multiple projects, I got tired of re-explaining our complex multi-node system to LLMs. Documentation helped, but plain text is hard to search without indexing and doesn't work across projects. I built Linggen to solve this.
My Workflow: I use the Linggen VS Code extension to "init my day." It calls the Linggen MCP to load memory instantly. Linggen indexes all my docs like it’s remembering them—it is awesome. One click loads the full architectural context, removing the "cold start" problem.
The Tech:
Local-First: Rust + LanceDB. Code and embeddings stay on your machine. No accounts required.
Team Memory: Index knowledge so teammates' LLMs get context automatically.
Visual Map: See file dependencies and refactor "blast radius."
MCP-Native: Supports Cursor, Zed, and Claude Desktop.
Linggen saves me hours. I’d love to hear how you manage complex system context!
Repo: https://github.com/linggen/linggen Website: https://linggen.dev
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.
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.
This solution is meant as an experiment, so I'm open to discussion.
Show HN: MCPShark Viewer (VS Code/Cursor extension)- view MCP traffic in-editor
A few days ago I posted MCPShark (a traffic inspector for the Model Context Protocol). I just shipped a VS Code / Cursor extension that lets you view MCP traffic directly in the editor, so you’re not jumping between terminals, logs, and "I think this is what got sent".
VS Code Marketplace: https://marketplace.visualstudio.com/items?itemName=MCPShark...
Main repo: https://github.com/mcp-shark/mcp-shark
Feature requests / issues: https://github.com/mcp-shark/mcp-shark/issues
Site: https://mcpshark.sh/
If you’re building MCP agents/tools: what would make MCP debugging actually easy—timeline view, session grouping, diffing tool args, exporting traces, something else? I’d be thankful if you could open a feature request here: https://github.com/mcp-shark/mcp-shark/issues
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: 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).
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.
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.
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".
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.
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?
Please try it out! Setup is one component or one import.
(And don't tell me it's a terrible idea because I already know it is)
package: https://www.npmjs.com/package/@fuzzycanary/core gh: https://github.com/vivienhenz24/fuzzy-canary
Show HN: ZDS – Zig Data Structures
A collection of high-performance data structures for Zig.
Show HN: I Made Loom for Mobile
An app to make demo vids
Of course I have a demo vid: https://www.youtube.com/watch?v=c_fq0TzlsXI
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 made an AI agent to interact with resume and make changes as you ask
I built an agent that understands your resume content and make changes as you prompt with the real time resume preview.
Show HN: HiFidelity – A native macOS offline audiophile music player
- Powered by the BASS (un4seen) audio library for professional-grade audio quality and TagLib for meta-data reading
- Support for 10+ audio formats including lossless and high-resolution files Lossless & Hi-Res: FLAC, OGA, WAV, AIFF, AIF, APE, WV, TTA, DFF, DSF Compressed: MP3, MP2, AAC, OGG, OPUS, M4A, M4B, M4P, MP4, M4V, MPC Specialized: CAF, WEBM, SPX
- Bit-perfect playback with sample rate synchronization and Obtain Exclusive Access of audio device (Hog mode)
- Gapless Playback: Seamless transitions between tracks with no silence or interruption
- Built-in equalizer with customizable presets
- Browse by tracks, albums, artists, or genres
- Smart Recommendations: Auto play functionality, you don't have to think what to play next Lyrics Support:
- Download lyrics directly within the app from lrclib
- Real-time line-by-line lyrics highlighting
- Mini Player: Compact floating window with integrated queue and lyrics panels
- Audio device change option within UI
- Advanced Search: Find tracks instantly across your entire library with FTS5 (Rebuild search index if you not able to see any results: Settings -> Advanced -> Rebuild FTS)
- Playback History: Keep track of what you've listened to
- Favorites: Mark and organize your favorite tracks
- Import playlist with m3u or Import Folder as playlist
- Menu bar controls and Now Playing info
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."
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.
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.
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.
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.
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.
Homepage: https://composify.js.org
Happy to answer questions or hear feedback!
Show HN: I built a fast RSS reader in Zig
Well, I certainly tried. I had to, because it has a certain quirk inspired by "digital minimalism."
The quirk is that it only allows you to fetch new articles once per day (or X days).
Why? Let me explain...
I want my internet content to be like a boring newspaper. You get it in the morning, and you read the whole thing while sipping your morning coffee, and then you're done! No more new information for today. No pings, no alerts, peace, quiet, zen, etc.
But with that, I needed it to be able to fetch all articles from my hundreds of feeds in one sitting. This is where Zig and curl optimisations come in. I tried to do all the tricks in the book. If I missed something, let me know!
First off, I'm using curl multi for the network layer. The cool thing is it automatically does HTTP/2 multiplexing, which means if your feeds are hosted on the same CDN it reuses the same connection. I've got it configured to handle 50 connections total with up to 6 per host, which seems to be the sweet spot before servers start getting suspicious. Also, conditional GETs. If a feed hasn't changed since last time, the server just says "Not Modified" and we bail immediately.
While curl is downloading feeds, I wouldn't want CPU just being idle so the moment curl finishes downloading a single feed, it fires a callback that immediately throws the XML into a worker thread pool for parsing. The main thread keeps managing all the network stuff while worker threads are chewing through XML in parallel. Zig's memory model is perfect for this. Each feed gets its own ArenaAllocator, which is basically a playground where you can allocate strings during parsing, then when we're done, we just nuke the entire arena in one go.
For parsing itself, I'm using libexpat because it doesn't load the entire XML into memory like a DOM parser would. This matters because some podcast feeds especially are like 10MB+ of XML. So with smart truncation we download the first few X mb's (configurable), scan backwards to find the last complete item tag, cut it there, and parse just that. Keeps memory usage sane even when feed sizes get massive.
And for the UI I just pipe everything to the system's "less" command. You get vim navigation, searching, and paging for free. Plus I'm using OSC 8 hyperlinks, so you can actually click links to open them on your browser. Zero TUI framework needed. I've also included OPML import/export and feed groups as additional features.
The result: content from hundreds of RSS feeds retrieved in matter of seconds, and peace of mind for the rest of the day.
The code is open source and MIT licensed. If you have ideas on how to make it even faster or better, comment below. Feature requests and other suggestions are also welcome, here or GitHub.
Show HN: Sqlit – A lazygit-style TUI for SQL databases
I work mostly in the terminal but found myself constantly switching to bloated GUIs like SSMS only for the simple task of browsing tables and run queries. And I didn't find Existing SQL TUIs intuitive, having to read documentation to learn keybindings and CLI flags to connect. Given I had recently switched to linux, I found myself using vs code's sql database extension. Something was awfully wrong.
I wanted something like lazygit for databases – run it, connect, and query and frankly just make it enjoyable to access data.
Sqlit is a keyboard-driven SQL TUI with:
- Context-based keybindings (always visible)
- Neovim-like interface with normal and insert mode for query editing
- Browse databases, tables, views, stored procedures
- Adapters for SQL Server, SQLite, PostgreSQL, Turso & more
- SSH tunneling support
- Themes (Tokyo Night, Nord, Gruvbox etc.)
Inspired by lazygit, neovim and lazysql. Built with Python/Textual.
Feedback welcome – especially on which adapters to prioritize next. My vision of sqlit is to make a tool that makes it easy to connect and query data, and to do that, and that thing only, really well.https://github.com/Maxteabag/sqlit
Show HN: I Built an Image Captioning Tool Using Llama.cpp
Frustrated with the apparent lack of tools for tagging and describing images locally, I built a quick and dirty little tool. You start it up, start up llama-server, and point it at a directory of photos. It scans through them, captioning them one at a time, and provides the captions and tags in an editable interface for you. When you're happy with them, you can save them, which writes them to the exif metadata of the image, and moves onto the next one
Show HN: I implemented generics in my programming language
It took a while to implement, though now I have generic functions working in Axe. Documentation, repository and site attached.
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.
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.
The problem I was solving:
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.
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.
Why Go for the backend:
Go gives me exactly what I need for a SaaS backend:
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):
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.
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.
Full-stack, not just backend:
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:
The boring infrastructure is solved so you can focus on your actual product:
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.
Real-world proof:
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.
How to try it:
Clone the repo, read setup.md to check the prerequisite, run ./setup.sh, and you have a working B2B environment locally in minutes.
Feedback I want:
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.
GitHub: https://github.com/moasq/production-saas-starter
Live: https://apflow.co
Show HN: High-Performance Wavelet Matrix for Python, Implemented in Rust
I built a Rust-powered Wavelet Matrix library for Python.
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.
Feedback welcome!
Show HN: Bithoven – A high-level, imperative language for Bitcoin Smart Contract
Hey HN! I’m a researcher working on Bitcoin smart contracts, and today I’m releasing Bithoven—a high-level imperative language that compiles to native Bitcoin Script (Legacy, SegWit, and Taproot).
The Goal:
Raw Bitcoin Script is notoriously difficult to reason about. Writing raw Bitcoin Script today feels like writing Assembly in the 1970s. You have to mentally juggle the stack (`OP_SWAP`, `OP_ROT`), manually manage distinct execution branches, and pray you didn't leave a stack item unconsumed (which crashes the script). My goal was to bridge the gap between complex contract logic and raw opcodes, allowing developers to write readable, compile-time-safe code.
Key Features:
- Imperative Syntax: Write logic using familiar if/else and return statements instead of mental stack juggling.
- Type Safety: First-class support for bool, signature, string, and number types to prevent runtime errors.
- Targeted Compilation: Support for Legacy, SegWit, and Taproot compilation targets.
- Native Primitives: Built-in keywords for timelocks (older, after) and cryptography (sha256, checksig).
You can try it in the browser here (runs via WASM): https://bithoven-lang.github.io/bithoven/ide/
Here is an example of a Hashed Time-Locked Contract (HTLC):
(condition: bool, sig_alice: signature)
(condition: bool, preimage: string, sig_bob: signature)
{
if condition {
// Relative locktime (Sequence)
older 1000;
return checksig (sig_alice, alice_pk);
} else {
// Hashlock verification
verify sha256 sha256 preimage == hash;
return checksig (sig_bob, bob_pk);
}
}
The project is free open source and the academic paper is currently under review. I’d love to hear any feedback. Thanks for checking it out!
Show HN: Spice Cayenne – SQL acceleration built on Vortex
Hi HN, we’re Luke and Phillip, and we’re building Spice.ai OSS - a lightweight, portable data and AI engine and powered by Apache DataFusion & Ballista for SQL query, hybrid-search, and LLM-inference across disaggregated-storage used by enterprises like Barracuda Networks and Twilio.
We first introduced Spice [1] on HN in 2021 and re-launched it on HN [2] in 2024 re-built from the ground up in Rust.
Spice includes the concept of a Data Accelerator [3], which is a way to materialize data from disparate sources, such as other databases, in embedded databases like SQLite and DuckDB.
Today we’re excited to announce a new Ducklake-inspired Data Accelerator built on Vortex [3], a highly performant, extensible columnar data format that claims 100x faster random access, 10-20x faster scans, 5x faster writes with a similar compression ratio vs. Apache Parquet.
In our tests with Spice, Vortex performs faster than DuckDB with a third of the memory usage, and is much more scalable (multi-file). For real-world deployments, we see the DuckDB Data Accelerator often capping out around 1TB, but Spice Cayenne can do Petabyte-scale.
You can read about it at https://spice.ai/blog and in the Spice OSS release notes [4].
This is just the first version, and we’d love to get your feedback!
GitHub: https://github.com/spiceai/spiceai
[1] https://news.ycombinator.com/item?id=28448887
[2] https://news.ycombinator.com/item?id=39854584
[3] https://github.com/vortex-data/vortex
[4] https://spiceai.org/blog/releases/v1.9.0
Show HN: Paper2Any – Open tool to generate editable PPTs from research papers
Hi HN, We are the OpenDCAI group from Peking University. We built Paper2Any, an open-source tool designed to automate the "Paper to Slides" workflow based on our DataFlow-Agent framework. The Problem: Writing papers is hard, but creating professional architecture diagrams and slides (PPTs) is often more tedious. Most AI tools just generate static images (PNGs) that are impossible to tweak for final publication. The Solution: Paper2Any takes a PDF, text, or sketch as input, understands the research logic, and generates fully editable PPTX (PowerPoint) files and SVGs. We prioritize flexibility and fidelity—allowing you to specify page ranges, switch visual styles, and preserve original assets. How it works: 1. Multimodal Reading: Extracts text and visual elements from the paper. You can now specify page ranges (e.g., Method section only) to focus the context and reduce token usage. 2. Content Understanding: Identifies core contributions and structural logic. 3. PPT Generation: Instead of generating one flat image, it generates independent elements (blocks, arrows, text) with selectable visual styles and organizes them into a slide layout. Links: - Demo: http://dcai-paper2any.cpolar.top/ - Code (DataFlow-Agent): https://github.com/OpenDCAI/DataFlow-Agent We'd love to hear your feedback on the generation quality and the agent workflow!
Show HN: A pager
Hello HN,
I basically don't use notifications for anything. The noise is too much. Slack is too loud. Email is too slow. But sometimes you do need a note in your face.
I found myself missing 1990s pagers. I wanted a digital equivalent - something that does one thing: beep until I ack it.
So I built UDP-7777.
Concept:
- 0% Cloud: It listens on UDP Port 7777. No accounts, no central servers. You don't need Tailscale/ZeroTier/WG/etc, it's just easy for device sets.
- CAPCODES: It maps your IP address (LAN or Tailscale) to a retro 10-digit "CAPCODE" that looks like a phone number (e.g., (213) 070-6433 for loopback).
- Minimalism: Bare-bones interface. Just a box, a few buttons, and a big red blinker.
The Tech:
It's a single binary written in Go (using Fyne). It implements "burst fire" UDP (sending packets 3x) to ensure delivery without the handshake overhead of TCP.
New in v2.2.7:
- Frequency Tuning: Bind specifically to your Tailscale/ZeroTier interface.
- Squelch: Optional shared-secret keys to ignore unauthorized packets.
- Heartbeat: Visual/Audio alerts that persist until you physically click ACK.
I built this for anyone looking to cut through the noise—DevOps teams handing off the "on-call IP", or deep-work focus where you only want interruptions from a high-trust circle.
I'd love to hear your thoughts on the IP-to-Phone-Number mapping logic (it's purely visual, but I'm really into it).
Site & Binaries (Signed for Mac/Win): https://udp7777.com
Show HN: We built a small app with my wife to track promises we do
Hi HN,
First time sharing an app here
My wife and I kept making small promises to each other (“I owe you a dinner”, “you pick the next movie”, “I’ll plan the weekend”) and then forgetting them
We tried notes and reminders, but they didn’t work well
So we built this small app as a game for us, where:
- One person creates a “check” (a promise/favor)
- The other redeems it when they want
- The partner marks it fulfilled
It allow you to keep track of dates, celebrations, ideas, memories; it's an space for you and your wife (or at least it's our space so far)
That’s the core
Everything else is optional
Over time we added:
- Shared calendar for dates and anniversaries
- Simple streaks and milestones (not social, not competitive)
- Shared wishlist and memories
- Time-delayed notes (“open in 6 months”) that your couple won't see
Design constraints:
- Private by default (just two users)
- No feeds, no public profiles
- No comparison between couples
It’s free with a paid tier of 1 USD for unlimited checks
This is mostly a lifestyle tool we wanted for ourselves, but we’re curious whether others have the same problem
Show HN: Music player for big local collections with mpd support
mpz is a C++/Qt music player focused on UX, with derectory tree and playlists management. Version 2 got experimental https://musicpd.org support.