Currents
Overview
An all‑in‑one social platform for scuba diving enthusiasts, featuring a dive logbook, global dive‑site maps, and community tools to share and discover underwater adventures. Check it out at trycurrents.app.
How I Made It
Currents is an app I built during the summer when I didn’t get accepted into any research or industry internships. Since I was bored, I was like, screw it. Let’s build something cool. I realized that most dive logging apps lacked good UX because they weren’t fun or intuitive to use.
Some Challenges I Had
1.Distribution is very hard, especially when your target demographic is not Gen Z.
One of the main challenges in marketing Currents is the competition: Subsurface. Many older divers are understandably hesitant to try new apps, and I don’t blame them. There have been plenty of attempts before mine, but most of them weren’t serious or well-supported. So I tried a few things: cold DMs on Facebook, Instagram UGC, and basic ASO methods. The results have been great so far, but I came to the conclusion that organic reach doesn’t convert that much. For social apps to work, you need things like viral trends, referrals, and word-of-mouth. For Currents to work, it could have been all three, but I’ve realized I don’t have much time for it. The market size for dive log apps is super small, so I don’t think it’s worth putting too much effort into the app. Regardless, Currents has been my go-to app. It’s what I need when it comes to diving.
Even apps from big manufacturers and agencies like Garmin, Suunto, PADI, and SSI tend to lock user data into their platforms, which adds to the problem. This project has taught me a lot about doing things properly, from design and development to marketing and user experience. Along the way, I partnered with a bunch of great organizations (and hopefully more in the future!) to help make dive logging fun and easy: Suunto, Garmin, DAN, and Dive Assure, to name a few.
2.CoreBluetooth is so painful to develop with.
Another thing I had to do for this app to work was create a new library called libdc-swift. Libdc-swift is basically an open-source Swift framework; the goal of it was to make libdivecomputer easy to use in Swift. So a lot of my work involved reading the Subsurface and libdivecomputer codebases, bridging C and Swift with Objective-C, and figuring out how to deal with BLE packets. I’ve had some roadblocks due to how limited CoreBluetooth documentation is, so back then in 2024, you couldn’t really do much with LLMs. This type of work is something that LLMs are still not good at because documentation regarding CoreBluetooth is so limited. Not to mention there are many dive computer brands supported by libdivecomputer, so there could be edge cases on certain dive computers.
I’d say doing this was the second hardest part after distributing the app itself, although things started to get easier once I understood how dive computer protocols work. Since libdivecomputer has done most of the work (even though they don’t really maintain documentation of how their codebase works), I feel like the people who have been maintaining it are from the ’90s, like the Linus Torvalds era. I’m hoping that through libdc-swift, more people from my generation (Gen Z) will be able to pick it up.
Importing dive logs from Shearwater Peregrine TX
What's Next
I’ll keep maintaining this app for as long as I can, given that I plan to upgrade my diving skills to technical diving :)
Revenue-wise, the app makes around $300/year. That’s with only 30 to 40 new users in the last 28 days according to RevenueCat. The pattern I’ve noticed is that most people go straight for the lifetime purchase, which is what I intended. Yearly and monthly are mostly people who just want to support me, which I appreciate.
$300/year is enough to cover my $99 Apple Developer membership, so the app basically pays for itself. After I graduate, I want to put more serious time into it. People are actually finding it useful, which makes it worth investing in properly.
Worth noting: this was the first project I ever built, and it landed me a full-time SWE job. So for anyone who thinks personal projects don’t matter, I’d push back on that. It probably depends on the role, but for iOS specifically, a lot of job descriptions will straight up ask if you’ve shipped an app before. That makes sense to me. Apple’s app review process is a pain, and a developer who’s been through it already is just more useful to have around.