Show HN: My OSS P2P file transfer tool for learning Next.js (as a C++ dev)
Show HN (score: 8)Description
I'm a C++ algorithms engineer, and today I'd like to share my first full-stack web project: PrivyDrop.
This project was born from two ideas:
First, I wanted to solve a daily annoyance of mine: I needed a simple, AirDrop-like way to send text, links, or screenshots between my phone and PC. I tried many tools, but they either required me to sign up, had various limitations, or uploaded my data to their servers, which I was never comfortable with.
Second, this was a personal experiment. Last year, with all the talk about "AI replacing programmers," I got curious. As a developer with no web background, I wanted to see how long it would take to learn full-stack development from scratch (an area I'm really interested in) and build a complete application, using AI as my primary coding partner and mentor.
PrivyDrop is the result of that learning and experiment.
It's a peer-to-peer (P2P) file-sharing tool based on WebRTC. Its core principle is that *your data belongs only to you*: all files and text are transferred directly between your browser and the recipient's, fully end-to-end encrypted, without ever passing through an intermediate server.
*Here are some of its key features:*
* Completely free and open-source, with no ads. * No sign-up or installation required—just open your browser. * Direct P2P connection for privacy, security, and speed. * No limits on file size or type. * Support for entire folder transfers. * Built-in resumable transfers.
The whole process has been a fantastic learning journey. I'm sharing it now in the hope that it can solve the same pain point for others. I'm really eager to hear any feedback, ideas, or even harsh criticism from the HN community!
* *Live Demo:* https://www.privydrop.app * *GitHub Repo:* https://github.com/david-bai00/PrivyDrop
Thanks, everyone!
More from Show
Show HN: Regolith – Regex library that prevents ReDoS CVEs in TypeScript
Show HN: Regolith – Regex library that prevents ReDoS CVEs in TypeScript I wanted a safer alternative to RegExp for TypeScript that uses a linear-time engine, so I built Regolith.<p>Why: Many CVEs happen because TypeScript libraries are vulnerable to Regular Expression Denial of Service attacks. I learned about this problem while doing undergraduate research and found that languages like Rust have built-in protection but languages like JavaScript, TypeScript, and Python do not. This library attempts to mitigate these vulnerabilities for TypeScript and JavaScript.<p>How: Regolith uses Rust's Regex library under the hood to prevent ReDoS attacks. The Rust Regex library implements a linear-time Regex engine that guarantees linear complexity for execution. A ReDoS attack occurs when a malicious input is provided that causes a normal Regex engine to check for a matching string in too many overlapping configurations. This causes the engine to take an extremely long time to compute the Regex, which could cause latency or downtime for a service. By designing the engine to take at most a linear amount of time, we can prevent these attacks at the library level and have software inherit these safety properties.<p>I'm really fascinated by making programming languages safer and I would love to hear any feedback on how to improve this project. I'll try to answer all questions posted in the comments.<p>Thanks! - Jake Roggenbuck
Show HN: First background agents in Jetbrains IDEs [video]
Show HN: First background agents in Jetbrains IDEs [video] TLDR: made the first background coding agent that has an isolated workspace and runs locally<p>Howdy - I’m Kevin, co-founder of Firebender, and we built the first background coding agent in android studio / Jetbrains!<p>Why not just use Cursor background agents or OpenAI Codex?<p>Both of these require setting up a cloud container and cloning your existing developer environment, and maintaining it. Then when you want to iterate on changes as AI inevitably makes a mistake, you either throw away the work, or have to pull down the branch and clean it up. This feels really clunky. With Firebender, background agents run locally in a lightweight git worktree/IDE tab. This means when the agent is done, you can easily clean up the changes and run code with a few clicks.<p>Under the hood, the agent behaves similarly to claude code (didn’t want to reinvent the wheel), but also leverages all of the hooks into IntelliJ sdk like go-to-definition, find usages, auto-imports for accuracy, and it gives a cleaner visual UI for reviewing changes and merging them. You can use any frontier model like gpt-5/sonnet-4 as the base.<p>We’ve had to do quite a bit of reverse engineering of the IntelliJ codebase to cleanly set up and manage the isolated environment, and I think you’ll appreciate the simple UX of hitting cmd+enter to run a background agent anywhere.<p>get started docs: <a href="https://docs.firebender.com/get-started/background-agents">https://docs.firebender.com/get-started/background-agents</a><p>download the plugin: <a href="https://firebender.com">https://firebender.com</a><p>Would love to get your feedback to help us improve the tool for you! Thanks!
Show HN: Built a memory layer that stops AI agents from forgetting everything
Show HN: Built a memory layer that stops AI agents from forgetting everything Tired of AI coding tools that forget everything between sessions? Every time I open a new chat with Claude or fire up Copilot, I'm back to square one explaining my codebase structure.<p>So I built something to fix this. It's called In Memoria. Its an MCP server that gives AI tools persistent memory. Instead of starting fresh every conversation, the AI remembers your coding patterns, architectural decisions, and all the context you've built up.<p>The setup is dead simple: `npx in-memoria server` then connect your AI tool. No accounts, no data leaves your machine.<p>Under the hood it's TypeScript + Rust with tree-sitter for parsing and vector storage for semantic search. Supports JavaScript/TypeScript, Python, and Rust so far.<p>It originally started as a documentation tool but had a realization - AI doesn't need better docs, it needs to remember stuff. Spent the last few months rebuilding it from scratch as this memory layer.<p>It's working pretty well for me but curious what others think, especially about the pattern learning part. What languages would you want supported next?<p>Code: <a href="https://github.com/pi22by7/In-Memoria" rel="nofollow">https://github.com/pi22by7/In-Memoria</a>
Show HN: Chroma Cloud – serverless search database for AI
Show HN: Chroma Cloud – serverless search database for AI Hey HN - I’m Jeff, co-founder of Chroma.<p>In December of 2022, I was scrolling Twitter in the wee-hours of the morning holding my then-newborn daughter. ChatGPT had launched, and we were all figuring out what this technology was and how to make it useful. Developers were using retrieval to bring their data to the models - and so I DM’d every person who had tweeted about “embeddings” in the entire month of December. (it was only 120 people!) I saw then how AI was going to need to search to all the world’s information to build useful and reliable applications.<p>Anton Troynikov and I started Chroma with the beliefs that:<p>1. AI-based systems were way too difficult to productionize<p>2. Latent space was incredibly important to improving AI-based systems (no one understood this at the time)<p>On Valentines Day 2023, we launched first version of Chroma and it immediately took off. Chroma made retrieval just work. Chroma is now a large open-source project with 21k+ stars and 5M monthly downloads, used at companies like Apple, Amazon, Salesforce, and Microsoft.<p>Today we’re excited to launch Chroma Cloud - our fully-managed offering backed by an Apache 2.0 serverless database called Chroma Distributed. Chroma Distributed is written in Rust and uses object-storage for extreme scalability and reliability. Chroma Cloud is fast and cheap. Leading AI companies such as Factory, Weights & Biases, Propel, and Foam already use Chroma Cloud in production to power their agents. It brings the “it just works” developer experience developers have come to know Chroma for - to the Cloud.<p>Try it out and let me know what you think!<p>— Jeff
Show HN: PgHook – Docker image that streams PostgreSQL row changes to webhooks
Show HN: PgHook – Docker image that streams PostgreSQL row changes to webhooks I needed real-time updates in a web UI whenever PostgreSQL table rows change, so I built PgHook. It's a 23 MB Docker image (10.1 MB compressed), .NET9 AOT-compiled, that streams logical replication events and sends them to a configurable webhook.<p>In my setup, the webhook converts events to SignalR messages that push updates to the UI.<p>I know about Debezium but I needed something minimal, and I like playing with csharp.
Show HN: Vaultrice – A real-time key-value store with a localStorage API
Show HN: Vaultrice – A real-time key-value store with a localStorage API Hi HN,<p>I'm Adriano, one of the makers of Vaultrice. I'm excited (and a little nervous!) to share what we've been building.<p>For years, we found ourselves in a frustrating loop: whenever we needed a simple real-time feature—like a "who's online" list, a collaborative app, or just sharing state between a marketing site and our main app — we'd end up spending days setting up the same stack or discarded to do it. Setting it up, it always involved wiring together a database, a WebSocket server, an API, and managing the connection state. It felt like massive overkill for what we were trying to achieve.<p>We wanted a tool that felt as simple to use as the browser's `localStorage` API but worked across domains and devices, with real-time sync and security built-in.<p>So, we built Vaultrice.<p>It’s a key-value data store built on top of Cloudflare's Durable Objects, which gives you a strongly consistent backend for each data object. You interact with it through our TS/JS SDK, which comes in two flavors:<p>1. `NonLocalStorage`: A low-level client with a `localStorage`-like API (`setItem`, `getItem`, etc.) plus real-time events and presence (`.on()`, `.join()`).<p>2. `SyncObject`: A higher-level, reactive JavaScript Proxy. You just change a property on an object (`doc.title = 'New Title'`), and it automatically syncs to all other connected clients.<p>The goal is to let you build the real-time features you want in minutes, not days. We've also put a lot of thought into a layered security model, allowing you to go from simple API key restrictions all the way to server-signed object IDs and client-side E2EE.<p>We’ve just launched and would be grateful for any feedback from the HN community. What do you think of the API design? Are there use cases we haven't considered? Any thoughts on the security model?<p>We'll be here (or via email (support@vaultrice.com)) to answer any questions. Thanks for checking it out!
Show HN: Tambo – build generative UX web apps
Show HN: Tambo – build generative UX web apps
Show HN: Voltpeek – Vim-inspired oscilloscope software
Show HN: Voltpeek – Vim-inspired oscilloscope software This is software for my headless, PC based oscilloscope, which is controlled entirely via commands similar to the Vim text editor. I built this because I liked the idea of headless oscilloscopes; I always have my laptop around when I’m working on electronics anyway, and it’s very convenient to save images of captured waveforms. However, I found the software for off the shelf models to be annoying and cumbersome to work with. In my experience, this holds true both when opening the software and connecting to an attached oscilloscope, and when adjusting the scope settings using menus and buttons. I have also built my own oscilloscope hardware for use with Voltpeek. The specs are nothing to write home about (7.5MHz BW, 62.5MS/s), but they should be adequate for some basic debugging and measurement tasks.
Show HN: KubeForge – A GUI for Kubernetes YAMLs
Show HN: KubeForge – A GUI for Kubernetes YAMLs Hey HN,<p>I'm Brandon, a solo dev, and I built KubeForge - a visual editor for Kubernetes deployments that helps you build and validate YAML configs.<p>Origin Story: Over the past couple weeks, I got fed up manually writing Kubernetes YAMLs, especially when working with nested structures like containers, env, and volumeMounts. Even small typos or misaligned fields added lost time to broken deploys.<p>So I started hacking together a tool to visualize the structure of Kubernetes objects based on the OpenAPI schema. That prototype quickly turned into a full manifest builder.<p>What KubeForge does:<p>- Pulls the latest Kubernetes OpenAPI schema (auto-updated daily)<p>- Generates field-level forms with type safety, required fields, and smart defaults<p>- Lets you visually build manifests like a flow editor<p>- Outputs clean, deploy-ready YAML, with multi-object exports<p>Personally, I wanted a tool that:<p>- Validates fields as I build, not after deployment<p>- Surfaces nested fields, tooltips, and types without switching tabs<p>- Lets me export or share real YAMLs easily<p>Try it out:<p>GitHub: <a href="https://github.com/kubenote/KubeForge">https://github.com/kubenote/KubeForge</a><p>Live demo: <a href="https://demo.kubefor.ge" rel="nofollow">https://demo.kubefor.ge</a><p>Website: <a href="https://kubefor.ge" rel="nofollow">https://kubefor.ge</a><p>It’s free and open source. I’d love feedback, bug reports, or ideas. Contributions welcome too .<p>Thanks, Brandon
Show HN: Claude Code in the Browser – Webcode.sh
Show HN: Claude Code in the Browser – Webcode.sh I wanted to be able to code with Claude anytime, anywhere — walking, commuting, or at a café. So I built a browser-based terminal for Claude Code!<p>- Zero-config, instant REPL<p>- Works on mobile and tablets (Chrome, Safari)<p>- WASM-powered performance<p>Let me know what you think.
Show HN: Easy alternative to giflib – header-only decoder in C
Show HN: Easy alternative to giflib – header-only decoder in C Hi HN, I made a lightweight, header-only GIF decoder in C, inspired by stb-style libraries. No dynamic allocation, portable, and optimized for embedded devices.<p>GitHub: <a href="https://github.com/Ferki-git-creator/TurboStitchGIF-HeaderOnly-Fast-ZeroAllocation-PlatformIndependent-Embedded-C-GIF-Decoder">https://github.com/Ferki-git-creator/TurboStitchGIF-HeaderOn...</a><p>Would love feedback or suggestions.
Show HN: OrioleDB Beta12 Features and Benchmarks
Show HN: OrioleDB Beta12 Features and Benchmarks Hey HN, I'm the creator of OrioleDB, an extension for PostgreSQL that serves as a drop-in replacement for the default Heap storage engine. It is designed to address scalability bottlenecks in PostgreSQL's buffer manager and reduce the WAL, enabling better utilization of modern multi-core CPUs and high‑performance storage systems.<p>We are getting closer to GA. This release includes:<p>- An index bridge to support all indexes that Heap supports<p>- Support for rewinding recent changes in the database.<p>- Tablespaces support<p>- Fillfactor support<p>- An orioledb_tree_stat() function for space utilization statistics<p>- Support for tables with more than 32 columns.<p>We also show several performance improvements using the TPC-C benchmarks. Overall, OrioleDB is much faster than Heap, also outperforming other Postgres providers.<p>We would love more people testing OrioleDB. The fastest way to do that is to use the docker image provided:<p><pre><code> docker run -d --name orioledb -p 5432:5432 orioledb/orioledb </code></pre> Read the full release here:<p><a href="https://www.orioledb.com/blog/orioledb-beta12-benchmarks" rel="nofollow">https://www.orioledb.com/blog/orioledb-beta12-benchmarks</a>
Show HN: BloomSearch – Keyword search with hierarchical bloom filters
Show HN: BloomSearch – Keyword search with hierarchical bloom filters Hey HN! I got nerd-sniped by Bloom Filters this weekend, specifically for searching datasets with high "cardinality" (number of unique items).<p>They're an _amazing_ data structure that, at a fixed size, tracks potential set membership. That means unlike normal b-tree indexes, they don't grow with the number of unique items in the dataset.<p>This makes them great for "needle in a haystack" search (logs, document) as implementations like VictoriaMetrics and Bing's BitFunnel show. I've used them in the past, but they've never been center-stage in my projects.<p>I wanted high cardinality keyword search for ANOTHER project... and, well, down the yak-shaving rabbit hole we go!<p>BloomSearch brings this into an extensible Go package:<p>- Very memory efficient via bloom filters and streaming row scans<p>- DataStore and MetaStore interfaces for any backend (can be same or separate)<p>- Hierarchical pruning via partitions, minmax indexes, and of course bloom filters<p>- Search by field, token, or field:token with complex combinators<p>- Disaggregated storage and compute for unbound ingest and query throughput<p>And of course, you know I had to make a custom file format ^-^ (FILE_FORMAT.MD)<p>BloomSearch is optimized for massive concurrency, arbitrary cardinality and dataset size, and super low memory usage. There's still a lot on the table too in terms of size and performance optimizations, but I'm already super pleased with it. With distributed query processing I'm targeting >100B rows/s over large datasets.<p>I'm also excited to replace our big logging bill ~$0.003/GB for log storage with infinite retention and guilt-free querying :P
Show HN: HNping 'remind me later' for HN via web push
Show HN: HNping 'remind me later' for HN via web push HNping lets you set a reminder for a HN post. You get a web push browser notification when it's time, and clicking it takes you back to the post. That's it.<p>I built HNping because I kept stumbling on HN posts where the discussion still had to get going. Wanted to revisit, but didn't want to create even more bookmarks/etc I'll just forget about. So I created a 'remind me later' tool (like the reddit bot) to fix this for myself.<p>To use it: go to hnping.com, enable notifications, and drag the bookmarklet to your bookmarks bar. Then click it on any HN post to set a reminder (5 minutes to 1 week). No personal info needed - you just get a UUID that serves as your account.<p>I tried to make it as simple as possible.<p>It's built on a Cloudflare Worker with D1 for data storage and uses Firebase Cloud Messaging for push notifications.
Show HN: Kuvasz – an open-source uptime and SSL monitoring service
Show HN: Kuvasz – an open-source uptime and SSL monitoring service A few months ago I took out my side project - an uptime & SSL monitoring service - from the drawer. I've decided to give it a new life and completely overhauled it, added a lot of new feature, and most importantly, a UI.<p>Highlights<p>- configurable uptime & SSL monitoring<p>- Telegram, Slack, PagerDuty & E-mail notifications (more to come!)<p>- fully-fledged REST API<p>- a responsive, modern & fast UI<p>- monitors are optionally configurable via a single YAML file, or you can choose to use either the UI or the API to maintain them<p>- Cloud-native, distributed as amd64 and arm64 images<p>- Only one dependency: a PostgreSQL database to connect to<p>- Extensive examples in the docs<p>- stable memory usage (max ~360MB) & great performance<p>It's written in Kotlin, under the hood it uses Micronaut with Netty, jOOQ, and PostgreSQL, and the server-side-rendered UI is built with kotlinx.html, Alpine.js, and htmx.<p>It's called Kuvasz (pronounce as [ˈkuvɒs]), and you can find the repository here: <a href="https://github.com/kuvasz-uptime/kuvasz">https://github.com/kuvasz-uptime/kuvasz</a><p>And the website with the extensive documentation here: <a href="https://kuvasz-uptime.dev" rel="nofollow">https://kuvasz-uptime.dev</a>
No other tools from this source yet.