October 7th, 2024

Audioscrape: Building in Rust When Everyone Said I Shouldn't

Audioscrape, a podcast exploration platform built in Rust, offers features like transcription browsing and community interaction. The creator manages development solo and plans API development and scaling strategies.

Audioscrape: Building in Rust When Everyone Said I Shouldn't

The creator of Audioscrape, a podcast exploration platform, shares their experience of bootstrapping the project using Rust, diverging from the more common choices like Ruby on Rails, Python, or TypeScript. The decision to use Rust was driven by a desire for technical challenge and cost efficiency, resulting in a performant application that operates on a $7/month virtual machine. Audioscrape aggregates podcast RSS feeds, transcribes episodes, and offers an interactive interface for users to explore and discuss content. The technical stack includes Axum for the backend, SQLite for the database, and OAuth2 for authentication, among others. Key features of the platform include transcription browsing, segment highlighting, community interaction, advanced search, and person profiles. The creator faced challenges such as mastering Rust's ownership model and managing all aspects of the project solo. Future plans involve developing an API for third-party integrations, implementing WebAssembly for client-side processing, and scaling strategies for larger datasets. Currently, the platform has 500 users with a minimal monthly recurring revenue, and the creator seeks feedback from the community on their bootstrapping experience and marketing strategies.

- Audioscrape is built entirely in Rust for cost efficiency and performance.

- The platform offers features like transcription browsing and community interaction.

- The creator is managing all aspects of development and operations solo.

- Future plans include API development and scaling strategies.

- The project currently has 500 users and aims to introduce paid features.

Link Icon 16 comments
By @lyang2821 - 3 months
I bootstrapped Lapdev (https://lap.dev/) all in Rust too. Axum for the backend and Leptos for the frontend. Sharing structs between backend and frontend is quite nice.

Besides the memory safety, type system etc, Rust gives you the confidence that you know it can scale in pretty much all scenarios in terms of performance.

By @bsnnkv - 3 months
I bootstrapped Notado[1][2] and Kullish[3] in Rust. Best tech stack decisions I ever made.

Similar setups (Rocket and Actix instead of Axum, Tera instead of Askama, Diesel instead of SQLx) and overall experience (incredibly cheap, reliable, and since these projects have been running a long time, amazingly easy to return to the codebases after months/years and make changes with a high level of confidence).

I distinctly remember how happy I felt the first time I realized that I had enough paying subscribers to offset the cost of the running the service!

[1]: https://notado.app

[2]: it had a decent amount of HN discussion last week - https://news.ycombinator.com/item?id=41697228

[3]: https://kulli.sh

By @echelon - 3 months
Love your story here! You're not doing it wrong at all.

> Has anyone else bootstrapped using Rust? What were your experiences?

We scaled several websites to 6M+ MAUs on Actix/SQLx and ran that on the lowest tier VMs.

Rust is God Mode for efficient and scalable HTTP services. Moreover, the type safety and robust type system give us incredible confidence that our software is defect free.

By @erazor42 - 3 months
> Has anyone else bootstrapped using Rust? What were your experiences?

Yes, we are building a parsing platform in rust. (~50k loc) Stack: actix + diesel (async) for PG.

Getting the right project structure was not simple (that could deserve a blog post). Performance is super nice if you do heavy IO.

Beware of memory usage handling with actix.

Day to day dev is a joy, once it compile you can be confident it will work as expected.

Never .unwrap / panic !

Use clippy to check your code.

Once you have your project structure done, adding a new web handler is as fast as adding one in Django or Flask.

By @samier-trellis - 3 months
> Learning Investment: Deepening expertise in a language with growing demand, potentially opening future opportunities.

If it's just you, then that reason alone justifies it.

By @aeturnum - 3 months
Neat!

Just fyi I tried to add Criminal[1] and it seems like it was...partially successful[2]? The "Enter RSS URL" page loaded for a while and then stopped.

[1] https://thisiscriminal.com/episodes

[2] https://www.audioscrape.com/podcast/criminal

By @vwkd - 3 months
Nice project. It's useful for listening to a specific speaker, allowing to skip other speakers who don't add useful information. It enables listening to podcasts even with annoying interviewers. Would be great if this were built in the major podcast listening applications.
By @jamil7 - 3 months
Awesome work. Yes, I’ve been interested in Rust for a while and have been hacking on a side project. It’s an API service in Rust, but for the CRUD management part I used Elixir/Phoenix and Phoenix gen auth to have something up quickly that’s not dependent on some third-party service.
By @lispisok - 3 months
How did you get your first 500 users?
By @peterpans01 - 3 months
"Database: SQLite with SQLx for type-safe queries"

I might be ignorance. But is it not safe? How do you back up your data?

By @deadcoder0904 - 3 months
How much did it cost to transcribe so many podcasts? Are you running Whisper on your $7 VM?
By @thesurlydev - 3 months
I'd love to hear how folks are deploying and hosting their Rust projects
By @fHr - 3 months
I actually think Rust is amazing I recently discoevered some rewrites in web developement in rust and they made build times on windows corpo bloat machine way way faster than conventional js/ts implementations so I would say go for it and all power to you, also many are just salty because it's another new thing and new/change = bad
By @bravura - 3 months
How is transcription done?
By @aleksjess - 3 months
4k loc in a single file must be brutal