August 12th, 2024

My chatbot builder is over-engineered, and I love it

The article details the development of Fastmind, a scalable chatbot builder, emphasizing user feedback, the importance of familiar technologies, and the need to launch products sooner for iterative improvement.

Read original articleLink Icon
My chatbot builder is over-engineered, and I love it

The article discusses the author's experience in developing Fastmind, a chatbot builder, highlighting the challenges faced and lessons learned throughout the process. The author aimed to create a scalable, automated service while managing issues such as user management, performance bottlenecks, and security against malicious users. The architecture of Fastmind utilizes a combination of React for the frontend, Hono for the backend, and Convex for database management, among other tools. The author emphasizes the importance of choosing familiar technologies and maintaining a clear separation between different applications for easier maintenance. Key takeaways include the realization that perfection is not necessary for launching a product, the importance of focusing on user feedback, and the understanding that the tech stack is secondary to delivering a functional product. The author also reflects on the need to launch sooner to gather user feedback and improve the product iteratively, rather than waiting for a perfect version.

- Fastmind was developed to be a scalable and automated chatbot builder.

- The architecture includes React, Hono, and Convex, emphasizing the use of familiar technologies.

- Key lessons include the importance of user feedback and the realization that perfection is not required for launch.

- The author stresses the need to launch products sooner to gather valuable user insights.

- The tech stack is less important than delivering a functional and valuable product.

Link Icon 8 comments
By @joshstrange - 9 months
> convex

I've been tempted by a number of these types of backends (also like Firebase and Supabase) but every time I can't bring myself to use them. It's not even concerns on cost, it's mostly lock-in. That word(s?), lock-in, means a million things to a million people but my current comfort level is AWS. I use a number of managed services and they are some of the most stable things I've ever used. They also don't change so often that I'm being deprecated or struggling to keep up. Bare metal would have the least lock in but I'm sorry, I really don't want to manage DB servers, worry about the app server(s) tipping over, deal with the queue or cache server running out of memory, or that my disk is full, I'm just too lazy to do that. That's the self-deprecating answer, the truth is I am lazy but also I need the time I save so I can focus on other, more important, things, so I'm happy to make the trade off.

I spent a good 15+ min browsing the Convex docs because I love reading docs and letting my mind imagine the possibilities, it's like a drug, but I just kept thinking "I'd have to change everything about my web/apps around this". I'll try new things, I'm loving Neon.tech, but only if I feel like I have a fallback to something else if I need it (Like RDS or another Postgres-aaS company). Even Lambda is relatively "new" and I had to structure my app around using it but it's been solid and I don't have to worry about AWS being acquired or running out of money. That's my "over-engineering", trying to make sure I don't get caught flat-footed.

By @funfunfunction - 9 months
This is cool! I don’t see many people doing write ups on their tech stack as much any more. It’s nice to see the inside of a production-grade app like this.

I’m curious, why command+r for the model? What benefits does it have over other SOTA models?

By @ffsm8 - 9 months
Oh man, reading this article gives me mixed feelings.

I think they're fundamentally misunderstanding where the over engineered critique generally comes from. I've done my fair share of over engineered software, because it's frickin fun to make them, especially if you're working alone or with 1-2 other people.

The issue from these projects pop up later, after we moved on to the next project or employer and other (usually junior) people need to support this. From the Greenfield developer POV, I love that as well. It's just bad for the business, not for the developer (it's called resume driven development for a reason)

By @efilife - 9 months
What a great read. I love how much info about it is revealed and all of the advice. Makes me feel a bit better about my unreleased software that I think people would find useful
By @stevenicr - 9 months
Love the flowchart graphic in the post - what did you use to make that?
By @yding - 9 months
Looks great! thanks for sharing your architecture choices here.
By @ac130kz - 9 months
React, Shadcn, Vercel, Railway and TailwindCSS are surely not the tools to perform "over-engineering" with, they allow for fast delivery of products and are very commonly used.
By @Ahmed_rza - 9 months
Really appreciate you for going into so much detail