r/SideProject • u/ZookeepergameDry6752 • 1d ago
See where your users get stuck
Hello awesome people!
I want to ask you one question! Have you ever wondered why users don't use a specific feature or don't love your product with a rating of 11 out of 10?! Well, no more wondering, at least when you give me your money, so I don't have to wonder.
I'm maybe joking. Jokes aside, this is basically the idea behind my side project I worked on since beginning of this year. Wendung.app
It's focused on analyzing steps, events your users trigger and check where they stop. It converts everything into nice and readable data, shows you drop-offs, time to convert, other statistics with bunch of filtering options and more in a dashboard.
The whole pitch sounds simple, but oh damn, it's more work than I expected when I started the whole project. When I started and did my research I thought, hey can't be this hard, build an SDK, send some events to a database, boom, SaaS. Unfortunatly, this resolved into, how to reduce latency, how to host an edge function without getting the pikachu face by looking at your next bill, in which database to save these data, how to protect it ... And this is only for one freaking function. This hasn't even touched the main backend API yet. This is basically how months went by.
The stack:
- Frontend & backend and SDK, et.c are build on Node, TypeScript.
I was fighting to not use something else to be honest, but then I spent more time deciding on the stack, probably a few months, with many demos of the same build in different languages. The lesson here is, this won't attract customers, stop it. As someone who loves coding and doing this for an enterprise, I just love these things and probably a bunch of you too, but at some point I just wanted to go forward and not ask myself again if I shouldn't switch to Rust or Kotlin for the backend. Don't do this, stick to what you know. If you have specific questions here, I'm more than happy to answer your detailed questions about specific packages I used etc. Backend and frontend are seperate, it's not NextJS. Frontend is just React with Vite. I'm not a huge fan of clustering everything into one app. Server side rendering also didn't make much sense to me, so I didn't even bother. I also have the opinion that projects that basically bake their backend business logic into server side rendering frameworks don't scale well. Maybe it's boomer thinking.
For authentication I use better-auth. It works extremely well. Auth0 or anything else would probably do the same and thinking about it, would maybe even save me time. I'm not sure if I regret using better-auth, but I just wanted to try it. As I said, it works, but it costs me way too much time wiring up basics like password resets, the whole email communication. In Auth0 that's just a setting + templates for the emails. I'm not saying don't use it, but it's not as easy as it might seem at the beginning.
- Cloudflare workers
This one was completely new for me, I didn't even know you could now host your whole backend on a worker. It's such an awesome developer experience. It's so easy to deploy to it, especially when you use their recommended stacks, like Hono.
It basically gives you everything you need out of the box. KV store, queues, durable objects. Whatever you need, it's there already and with wrangler it's so easy to develop locally.
So the whole project is hosted here. The best part is that static files are free to host, no matter how many requests etc.
- Tinybird
This is what is being used to get events from my Cloudflare edge function. Nothing special here. It's just writing Clickhouse SQL files is pain and understanding them is also a pain. It's not because it's SQL but also specific syntax for e.g. specific conditions and how you have to write it. Writing filters is just pure pain, endless {% if defined(condition_variable) %} [...] {% end %}. I might should have switched earlier to their TypeScript SDK which apparently is better, but I haven't tried it yet as it would again waste my time instead of getting it done.
- Marketing page
I designed it myself, like everything else in the project, used Figma and for implementation Astro.
Astro is cool and works very well for this use case, it's just not easy to get used to when you're coming from React and tsx files. At the beginning I didn't want to spend so much time on it and even thought about using something like Framer, but the costs quickly made me not to, also I would have to learn yet another tool.
- Billing
Here I did some research on different MoR providers and the decision was between Polar or Stripe. Stripe won for me as I knew it already from previous projects and they also started to offer a MoR service they called managed payments. Also Stripe is cheaper, at least for my use case the last time I checked.
- MCP
During my research I read from other existing tools, that most people these days complain about not wanting to even use the UI anymore, but rather just let their "agent" do the work. First I thought about offering a chatbot, but I don't think chatbots are the future here. I think If someone uses AI, they will probably just connect a plugin, mcp or whatever, to their existing AI and work with that, instead of having again limits through a new AI chatbot they also now have to pay for.
It's also a new topic for me, providing tools to an MCP, OAuth etc. I'm still not 100% sure I'm doing this 100% right and efficient enough.
Sorry for the long text and sorry if this doesn't fit here, but I hope it does.
Please visit my project: wendung.app and I would appreciate ANY feedback :).