DEV Community

Cover image for Building in public, week 6: PDF support is live — but I had to sacrifice content for it
Serhii Kalyna
Serhii Kalyna

Posted on

Building in public, week 6: PDF support is live — but I had to sacrifice content for it

TL;DR: I shipped PDF → image conversion this week. The cost? Three days redesigning the converter UI, and falling behind on community content. Solo dev tradeoffs are real.

Convertify is a free image converter I'm building solo: Rust + Axum + libvips on the backend, Next.js SSG on the frontend, PostgreSQL for landing page content. Every week I publish what worked, what didn't, and the numbers behind it.

Here's week 6.

What shipped: PDF support (Wednesday)

The big one. Convertify now converts PDFs to images — JPG, PNG, WebP, and so on. Multi-page PDFs are bundled into a ZIP with one image per page.

What's not shipped yet: the reverse direction (image → PDF). That's the headline feature for week 7.

How I integrated PDF in libvips

libvips itself doesn't speak PDF natively — you need a backend. I'm using a libvips extension that wraps the heavy lifting (I'll dig into the exact crate / build flag in a follow-up post once I'm sure I'm describing it correctly — there are a few moving parts and I don't want to misinform).

The flow is straightforward:

  1. Upload PDF → temp file
  2. Page count via the PDF backend
  3. Loop through pages, render each to a raster at the requested format/quality
  4. If single page → return the image directly
  5. If multi-page → stream a ZIP containing all rendered pages

The ZIP path was the part I spent the most time on. Stream-zipping in Rust without buffering everything in memory took some plumbing — but it pays off the first time someone uploads a 50-page PDF and the server doesn't OOM.

Landing pages

PDF launched with the full set of landing pages already drafted: /pdf-to-jpg, /pdf-to-png, /pdf-to-webp, etc. They're in the same SSG pipeline as the rest of the site (Postgres → static build → Caddy).

The interesting signal: the PDF to PNG page is already the #2 most-visited page on the site after the homepage, three days after launch. No marketing, no posts about it yet. Just organic discovery.

That's the kind of thing that makes you want to ship faster.

What didn't ship: content + image→PDF

Thursday, Friday, and Saturday I spent redesigning the converter UI itself — the format picker, the upload area, the buttons component system (migrating off MUI to a custom CSS-modules-based system to drop bundle size).

That redesign was overdue. But it cost me three days of community content work I'd planned: replies on Reddit, comments on dev.to articles in my space, follow-ups in subreddits I've been growing in. All pushed to week 7.

This is the solo dev squeeze. You can ship features, or you can grow distribution. Doing both well in the same week is hard. I picked features this week. Next week the math has to flip.

Stack Overflow update

Quick note for anyone following the SO experiment from earlier weeks: I got a moderator warning. Not a ban — but a clear signal about the rules. The takeaway: you can use SO for self-promotion in narrow, well-defined cases (genuinely answering a question where your tool is one of several legitimate solutions, with full disclosure), but the bar is high and the risk/reward isn't great for backlinks specifically.

For now I'm not pursuing SO further as a backlink channel. Reddit, dev.to, Hashnode, and Indie Hackers continue to be the better mix.

Numbers, week 6

  • Indexed pages in GSC: 52 (up from 40+ last week)
  • Average position: 40+
  • Clicks from search: still climbing toward meaningful numbers — early indexing, niche keywords, give it time
  • Top traffic sources this week: SourceForge, Reddit, Threads (referral traffic is starting to compound from earlier posts)
  • Top countries: Ukraine, US, China, Germany

The GSC dashboard has been stuck on April 21 for five days, which is annoying — Google's lag is usually 2-3 days, not 5. I'll re-check next week before drawing conclusions.

What I'm noticing

A few things worth writing down so I remember them:

1. Niche landing pages get found. The PDF→PNG page didn't need a single backlink to start pulling traffic. SSG + clean URLs + targeted titles are doing the work. This validates the programmatic SEO bet — keep adding pages.

2. Referral traffic compounds slowly. Reddit comments I made weeks ago are still bringing people in. Threads posts from earlier in the buildinpublic series are now a source. None of this happens fast — but it does add up.

3. Redesigning is never "small". Three days for a converter UI redesign sounds like overkill until you realize that bad UX kills retention faster than missing features. The new format picker handles 15 → 40+ formats gracefully (it'll matter once I add more). The new buttons system dropped a lot of bundle weight.

Honest moment

I'm not going to pretend this week was full of breakthrough energy. I was heads-down and on autopilot for most of it. PDF integration was hard, the redesign ate the rest of the week, and I shipped instead of celebrating.

Sometimes building in public means publishing a week that was just work. No story arc, no aha moment. Just: kept moving, shipped the thing, paid the cost, here's what's next.

Week 7 plan

One goal: ship image → PDF and catch up on content.

That's it. No new initiatives, no shiny experiments. Close the PDF loop in both directions, and re-engage the community channels I dropped this week.

If you're a solo dev reading this — what's your current ratio of build vs grow? I'd love to compare notes.


*Convertify is a free, ad-free image converter built solo. If you've got files to convert, give it a try convertifyapp.net — and if you want to follow the build, I post weekly.

Top comments (0)