Going viral is fun. But it also comes with a lot of anxiety.
The Accidental Beginning
I was going through my level 3, term 2 finals. The way exams are scheduled at my university, there's one exam per week. As you can imagine, after each exam, we'd relax for a couple of days before diving back into studying. During one of these breaks, I thought I'd build an app. Just for fun.
The idea wasn't groundbreaking or anything. Basically, you sign up, you get a link, you share it with your followers, and they can send you anonymous messages. Wait—not messages. Letters. Yes, that's right! There are plenty of anonymous messaging apps out there (NGL, Kubool, and so on). But my twist was to make the messages look and feel like actual letters. Beautiful, hand-written-looking letters. These anonymous letters would then be replied to on Instagram or Facebook stories. More on that later.
I called the app Chithi.me. "Chithi" means letter or mail in Bengali and some other Indian languages, so it felt like the perfect name. I asked my brother to buy the domain for me since the primary audience would be Bangladeshi people.
Building It Fast
The development part was easy for me. Since I was juggling exams, I needed something I could work with quickly. I went with web technologies, mainly Svelte, which is my go-to framework for most web projects.
The first challenge was making the anonymous messages look pretty—like actual hand-written letters. I have this weird fascination with making things look realistic on the web, so this was the fun part. I gathered some fitting fonts in both English and Bengali, then used some SVG effects (mainly feTurbulence). The things you can do with SVG are incredible.
I ended up creating four different themes, each with its own aesthetic and vibe. Some looked vintage, others modern. Each one had that paper-like quality that made the messages feel special.
The Technical Setup
I actually needed two different fronts. One would be the app that users would install to receive anonymous letters. I created this using svelte-spa-router. (Though if I had to do it again, I'd definitely go with SvelteKit and @sveltejs/adapter-static.) Then I packaged the whole thing into an APK using CapacitorJS. CapacitorJS has its quirks, but it's mostly great and was a perfect fit for my project.
The other front was for the followers to send letters—a public link like chithi.me/sh4jid that I could share for people to send me letters. This part was relatively quick to build.
For the database, authentication, and storage, I went with PocketBase. To this day, PocketBase blows my mind. On the surface, it's incredibly simple and easy to use. But the amount of features and customizability it offers is astounding. I say this despite having tons of experience with Supabase, Appwrite, and Firebase. To host my PocketBase instance, I chose PocketHost. I didn't even have an international payment method back then, and PocketHost was absolutely free, so it was a no-brainer. PocketHost's cheapest plan now is still incredibly generous, so if you want to tinker with PocketBase, definitely give it a try.
Mind you, this was just another fun project for me at the time. I really didn't put a lot of strategic thought into it. I just wanted to build something cool, and that's what I did.
Launch and the Feedback Loop
When everything came together, I submitted the app to the Play Store. It was accepted relatively quickly. I texted a couple of my university seniors and asked them to try it out. I asked them to share their link on Instagram and receive letters from their friends. And... they did! They actually received letters, and they replied to those letters in their Instagram stories.
This is where the magic happened. The replies looked beautiful—the themed letters displayed on colorful story backgrounds, with the user's response underneath. Seeing these themes and replies, more and more people wanted to engage. It created a natural viral loop. But I had absolutely no idea what was coming...
The Explosion
The first day was relatively calm. A few people signed up and started using it. I was definitely happy. Some friends reached out saying it was a great app.
Then, in just a couple of days, my chithi table had grown to 5,000 rows. Another day later? 5,000 more. And then it kept growing. Exponentially.
By the end of the week, the app had delivered around one million letters.
One. Million.
At some point, I realized about a hundred chithis were being sent every second. It was a feeling unlike any other—exhilarating, terrifying, and completely surreal. But it didn't come without serious issues and more than a few sleepless nights.
Crisis Mode: The Infrastructure Struggles
Problem #1: Bandwidth Apocalypse
The first issue hit fast. I blew through Vercel's bandwidth allowance almost immediately. They wanted $20 USD per month, and I really didn't have any way to pay it. I had to ask my brother for help again.
Before that, I moved my front-end to DigitalOcean App Platform. It didn't have a free tier, but it was cheaper at $5 USD per month. But guess what? I exceeded the bandwidth limits there too and had to pay quite a bit more.
Eventually, I settled on Cloudflare Pages. It was perfect for me thanks to its global edge network and really good caching. And at most, I'd have to pay $5 USD per month, no matter how much bandwidth I consumed. Problem solved.
Problem #2: The PocketBase Performance Crisis
Within the second week, I faced an even bigger problem. With thousands of users hammering the database, my PocketBase instance on PocketHost was becoming painfully slow. The app started lagging. And with that came negative reviews on the Play Store and a whole lot of anxiety on my end.
I thought I'd have to migrate to a dedicated server since I was still on the free tier. So I reached out to Ben Allfree, the creator of PocketHost, asking for help moving my instance to a dedicated DigitalOcean droplet.
Here's the thing—my app was the first high-traffic app on his platform, so he really didn't want to see me go! Instead of just helping me migrate, he started investigating the performance issues. And he found two crucial problems:
- I didn't have ANY indexes on my database. Zero. Zilch. And if you know databases, you know what kind of nightmare that causes at scale.
- I was using the real-time functionality incorrectly, which was also slowing down the server significantly.
Ben helped me create the necessary indexes. And using PocketBase's hooks, he turned off the problematic real-time capabilities without me needing to push an update to the Play Store. This is one of the things I absolutely love about PocketBase—it's just so flexible and powerful when you need it to be!
Steady State and Beyond
I haven't had any major hiccups since then. The initial viral wave has calmed down, but the app has reached a steady, healthy user base.
Last September 1st was International Letter Day, and the app saw another usage spike. That day, I realized I needed a few more indexes to reach optimal performance levels. Many, many thanks again to Ben from PocketHost for his continued support.
The Aftermath
So... that's the story of Chithi.me!
The app made me somewhat famous in my country. I had to give interviews—so many interviews—even on TV! It was surreal.
Chithi.me has now become a successful side project of mine. I've introduced some premium features and an advertisement program. I don't make a ton of money from it, but it's passive income, and more importantly, it's something I built that people genuinely love and use. That feeling is priceless. I get beautiful messages from the users almost every day still.
Lessons Learned
If you're building something similar, here's what I learned the hard way:
- Always add database indexes from day one. I cannot stress this enough. Even if you think you won't scale, do it anyway.
- Choose your hosting wisely. Cloudflare Pages saved me thousands in bandwidth costs.
- PocketBase is incredible for indie projects. The flexibility and power-to-simplicity ratio is unmatched.
- Viral growth is unpredictable. You might think you're building "just another fun project," but if it strikes a chord, be ready to scale fast.
- Community matters. Ben from PocketHost going above and beyond to help me debug performance issues instead of just letting me churn? That's the kind of support that makes or breaks a project.
If you've reached this far, I thank you from the bottom of my heart! Building Chithi.me was one of the most stressful, exciting, and rewarding experiences of my life. If you're thinking about building something, just do it. You never know what might happen.
And hey, if you want to send me an anonymous letter about this post, you know where to find me. 😉
