blog image

How I Learned Tauri by Building Pocketbook

#rust
#software-engineering
#software-development
#tauri
#desktop-apps

11 Aug 2025

You know that moment when you start a project just to learn something new, and then… it somehow becomes a tool you actually use every day? That was me with Pocketbook.

It began as a simple idea:

“What if I could have a lightweight desktop tool to manage my personal projects — but powered by Rust for speed and wrapped in Tauri for cross-platform support?”

A month and a bit later, I had a stable version. Along the way, I learned a ton about Tauri, Rust, and how to get an embedded binary to play nicely inside an app. Here’s the journey.

Sidecaring: When Your App Brings a Friend

One of the first big “aha” moments was learning about sidecaring. Tauri is great for wrapping a front-end in a Rust backend, but what if you want your app to also ship with an entirely separate binary? That’s where sidecaring comes in.

For me, the “sidecar” was PocketBase, a single-binary backend I wanted to bundle with my app. This meant my Tauri app could spin up a database server locally whenever it ran — no manual installs, no fuss.

It felt a bit like packing a Swiss Army knife into your laptop bag: your main tool is still there, but you’ve got extra gadgets tucked inside.

Resources

Next came learning how to bundle configuration files with the app. I wanted Pocketbook to work out of the box, but still allow customization. That meant shipping with:

  • .env files for environment configuration
  • .config files for app settings

Tauri makes this possible by treating these as resources. Once bundled, they’re accessible from your Rust backend — no fragile “copy this file to the right folder” instructions for the user.

Processes & IPC: Teaching Your App to Talk to Itself

Running a sidecar is one thing. Controlling it is another.

I needed my Tauri frontend (React) to talk to the Rust backend, which in turn managed the PocketBase binary. This is where IPC (Inter-Process Communication) came in.

I learned how to:

  • Spawn a process from Rust (launching PocketBase)
  • Send commands to it
  • Receive and parse output in real time

This gave me fine-grained control — start, stop, restart — without ever leaving the app.

Rust: Leveling Up Without Realizing It

When I started, I knew Rust basics. By the end, I’d learned:

  • Process management with std::process
  • Error handling patterns that kept my app from crashing
  • How to structure code for Tauri commands and state management

And yes, I also made peace with the borrow checker. Mostly.

From Personal Tool to SaaS Idea

Pocketbook started as a personal project manager for me. But as I used it, I realized the architecture could work for a lot of other people — especially teams that want a self-contained, local-first project tracker.

So now, I’m planning the next phase: building an API and turning the concept into a SaaS. The desktop app will remain, but it’ll talk to a cloud backend so projects can sync across devices.

What I Took Away

Learning Tauri wasn’t just about shipping an app — it was about discovering how to blend different pieces of tech into one smooth experience.

Here’s the short version:

  • Sidecaring taught me how to bundle external binaries with an app
  • Resources made config painless for users
  • IPC & processes gave me control over background tasks
  • Rust made me think carefully about safety and structure
  • The project gave me something tangible to grow into a future SaaS

If you’ve been on the fence about learning Tauri, my advice is:

Pick a tool you wish existed. Build it. Let the rabbit holes teach you.

That’s exactly what Pocketbook did for me.