debba
Show HN: I got tired of writing Pandas scripts just to JOIN two CSV files
Every few weeks I get 2-3 CSV files and need to run a quick JOIN or aggregation. The options are always the same: fire up pandas, import into SQLite by hand, or use some janky web tool.So I built a plugin for Tabularis (my native DB GUI) that treats a folder of CSV files as a database. Drop your files in, every file becomes a table, column types are inferred automatically, and you get a full...
Show HN: Tabularis – DB GUI where drivers are JSON-RPC executables
I built Tabularis, a database GUI for MySQL/PostgreSQL/SQLite/MariaDB. The interesting bit is the plugin architecture: instead of shipping a monolith with built-in drivers, each database driver is a separate executable. The core process spawns it and communicates via JSON-RPC 2.0 over stdin/stdout. No shared libraries, no ABI concerns, process isolation for free. This means you can...
The main thing in this release is a plugin system for database drivers. The short version: plugins are standalone executables that Tabularis spawns as child processes and talks to over JSON-RPC 2.0 on stdin/stdout.
I looked at dynamic libraries first but the cross-language ABI story is painful and would have locked plugin authors into Rust (or at least a C-compatible interface). The stdin/stdout approach means you can write a driver in whatever you want — the only contract is the JSON-RPC protocol. It also gives you process isolation for free, which matters when you're dealing with database drivers that can have their own native dependencies and failure modes.
The tradeoff is some serialization overhead per call, but in practice you're always waiting on network or disk anyway, so it hasn't been an issue.
First plugin out is DuckDB. I kept it out of core because of its binary size, but it's the database I get asked about most, so it felt like the right first target.
One thing I'm still thinking through: whether to pull the built-in drivers (MySQL, PostgreSQL, SQLite, MariaDB) out of core entirely and treat them as first-party plugins. It would make the core much leaner and the architecture more consistent, but it adds friction on first install. Currently leaning toward a setup wizard approach. Curious if anyone has dealt with a similar tradeoff.
The plugin guide and protocol spec are in the repo if you want to build one: https://github.com/debba/tabularis/blob/main/plugins/PLUGIN_...
Show HN: Tabularis – Rust/Tauri Database GUI with a JSON-RPC Plugin System
Show HN: GitHub Tray for GNOME gets a big update: notifications, Actions, issues
What's new n v9: GitHub Notifications panel — a full accordion UI to browse and manage your notifications directly from the tray GitHub Actions workflow runs — see the status of your CI/CD pipelines at a glance Refresh button — manually refresh notifications without waiting for the next poll Mark as read on open — notifications reload automatically when you open them ...
From Git to Spotlight: A Directory for Open-Source Work
I’m working on tabularis, a lightweight desktop database management tool designed for developers. It provides a modern interface for managing MySQL/MariaDB, PostgreSQL, and SQLite databases through a native desktop application. Built using Tauri v2 (Rust backend) and React 19 (TypeScript frontend), it offers native performance while maintaining the flexibility of web technologies.
PostgreSQL introspection is tricky (lessons from building a native client)
I’m building Tabularis, a native database client (Rust + Tauri). MySQL support is in a good place, but PostgreSQL has been much harder to get right — not for performance, but for introspection.Postgres “works”, but once you go beyond basic tables and columns, things get tricky fast.Some gaps I’ve hit so far:- Type system: Arrays, JSON/JSONB, domains, custom types, ranges, geometric types —...
Show HN: I built theme support in Tabularis – lightweight DB tool for developers
https://github.com/debba/tabularis
Hi HN, We’ve just added theme support to Tabularis, our lightweight, developer-focused database management tool.It already lets you: • Browse tables and data • Run SQL queries • Create and edit table DDL • Use experimental AI features (query explain / query generation) • Expose configured DB connections via an MCP server for AI toolingWith the new UI customization features, you can now: •...
The Birth of a Dialogue: Why I'm Building Tabularis
Show HN: Tabularis – A lightweight, developer-focused database management tool
Thoughts on Database Tooling and UX
Database tooling is in a strange place.On one side, there are powerful, commercial tools that try to be everything at once. They support every engine, every workflow, every edge case. The result is often a heavy application with long startup times, dense UIs, and a constant feeling that you’re navigating a system rather than inspecting data.On the other side, there are lightweight or...
Show HN: Debba.sql – A lightweight SQL manager built with Tauri and Rust
https://github.com/debba/debba.sql
Hi HN,I built debba.sql, a lightweight, cross-platform database manager because I wanted a native, fast tool for quick data edits without the heaviness of Electron-based giants or Java IDEs.The interesting part? This project started as an experiment in vibe coding. I utilized an AI agent to handle the entire scaffolding and heavy lifting of the implementation. We went from an empty directory to...
Show HN: FreeMarker Support for Zed Editor
https://github.com/debba/zed-freemarker
I created a Zed extension for Apache FreeMarker templates with tree-sitter-based syntax highlighting. FreeMarker is a Java template engine that's still widely used in enterprise apps, but modern editor support has been lacking. The extension handles both angle bracket and square bracket syntax, mixed HTML content, and all FreeMarker directives through a custom tree-sitter grammar rather than...
Show HN: Storytel-player – unofficial desktop client for Storytel
Hi HN, I’ve been working on a desktop client for Storytel, as there is currently no official app for PC/Mac. I wanted something that felt more "native" than a browser tab and included features like offline listening and system tray integration. The stack: • Frontend: React 18, Tailwind CSS, Vite. • Backend: Fastify (embedded within the app to handle API logic and streaming). • Desktop: Electron...
Show HN: RocketGift: Find the perfect gift in 30 seconds using AI
Show HN: Storytel-Player – A clean, fast, minimal desktop player for audiobooks
Storytel Player – unofficial desktop client for Storytel audiobooks
I often listen to audiobooks on Storytel but missed having a proper desktop client. So I built Storytel Player, a lightweight open-source app that lets you stream your Storytel audiobooks directly on your computer.Repo & downloads here:https://github.com/debba/storytel-playerhttps://github.com/debba/storytel-player/releases/tag/v1.0.7Would love feedback and suggestions from the community.
Storytel Desktop Player for Windows
Since Storytel doesn't have an official desktop application, I developed one using Electron to fill that gap.
The app provides a native desktop experience for listening to audiobooks and reading ebooks from Storytel on your computer.
Key features:
Native desktop application for Windows, macOS, and Linux
Can also be used as a web app
Built with Electron for cross-platform compatibility
If you're a Storytel user who prefers a dedicated desktop app over the browser, feel free to check it out!Storytel Desktop App
Show HN: AuthPress – Advanced WordPress 2FA Plugin
https://wordpress.org/plugins/two-factor-login-telegram/
I've been working on AuthPress, a comprehensive two-factor authentication plugin for WordPress that started as a simple Telegram-based 2FA solution and has evolved into a flexible multi-provider authentication system. What makes AuthPress different: • Multiple Auth Providers: Telegram, Email, TOTP (Google Authenticator, Authy, etc.), Recovery codes, plus extensible support for SMS,...
Show HN: Rewindtty – tiny terminal session recorder
Recording phase: All terminal output including ANSI escape codes, color sequences, and cursor movements are captured exactly as they appear - no processing or stripping occurs.
Replay phase: - Decodes various escape formats (\u001b, \033, \x1b) back to actual escape characters - Filters out problematic terminal query sequences that could cause artifacts - Preserves visual escape sequences (colors, cursor positioning) for faithful reproduction
So yes, escape sequences are recorded verbatim, but the replayer ntelligently processes them to recreate the original terminal experience while avoiding terminal corruption.