Blog

Learn more about the studio and what's going on behind the scenes

Blog image

Deploying my very own ChatGPT

Not long ago, I had a dream about an AI chatbot application that was open source, even more powerful than ChatGPT, had support for multi-model deployment, knowledge-bases and customizable assistant roles. Then I woke up. As soon as I had remembered that coffee is keeping me alive, I started lazily browsing some trending GitHub libraries, just to gain enough consciousness to get started for the day. That's when I stumbled upon Lobe-Chat. What's Lobe-Chat? Lobe-chat is the exact application that I had in my definitely-true dream! Or just hear it from themselves: An open-source, modern-design ChatGPT/LLMs UI/Framework. Taken from their repo, they have these awesome features: File Upload/Knowledge Base Multi-Model Service Provider Support Local Large Language Model (LLM) Support Model Visual Recognition TTS & STT Voice Conversation Text to Image Generation Plugin System (Function Calling) Agent Market (GPTs) Support Local / Remote Database Support Multi-User Management Progressive Web App (PWA) Mobile Device Adaptation Custom Themes That's a lot. So, of course I had to give it a try! Setting it up It's possible to deploy Lobe-Chat with one click, and while that is great for getting started, the docs recommend an upstream rebase/merge approach to a patch/fork branch. This is so that you are able to add your own modifications to the code, while still enabling future updates from the original library source. Then it went fast. I simply entered some API keys to an object database (S3), a relational database (Postgres), an auth service (Auth0), and voilà - it just worked. Well, actually I made some small changes to the source code, not because I had to, but because I was curious to learn its fundamentals and also wanting to customize the branding a bit. How to use it Using it is as easy as using ChatGPT - which it is obviously inspired from. Although with Lobe-Chat, the possibilities are many more. As of now, I have already integrated OpenAI's GPT-4, Google's Gemini 1.5 Pro, and Claude 3.5 Sonnet. I also created a knowledge base with all the Next.js docs, which makes the chatbot a sincere master in React SSR development. Although there are lots of more features to try out, as listed above, I am already satisfied and ready to declare it superior over ChatGPT and my $25 monthly premium subscription. And best of all - everything is self-deployed and fully within my own control. Furthermore, there's also the option to self-host AI models and databases, making it the perfect application for enterprise use when privacy and cost are important aspects. The benefits I think this part is pretty self-explanatory, but since there are so many use-cases for self-deploying this software it has to be brought up separately. First of all, is the possibility to make using "ChatGPT" practically free of charge. For those who have seen the bills that go for Copilot, or, like myself, had a running ChatGPT Premium subscription for too long, this is a huge benefit. Secondly, the advanced features are something that is rarely seen with such cost-efficient solutions (usually it is the other way around). Being able to switch models mid-conversation, while having access to basically unlimited knowledge bases, while also enjoying AI's latest advancements in terms of multi-modal support for voice and image recognition, AND customized agents/assistants/roles/whatever-you-want-to-call-them is just fantastic. Then there is the community support. Being open-source, you can imagine the number of versions, pull requests and closed issues this library has already seen. And, I found the documentation to also be sufficient enough for an intermediate-skilled user like myself. There's always a catch The hard but well-known truth is that companies exist to make money. While open-source can sometimes be the result of passionate individuals, this is at least not the exact case with Lobe-Chat and its creator LobeHub. They have a service called Lobe Cloud, which basically deploys the service for you, making the set-up time a short blink and also takes care of all the connections and back-office APIs. Also, if you're releasing your self-deployed application to the public, they charge a fee. This is exactly what I love. The freemium model is great, and in combination with open-source projects that offer completely optional cloud services, this makes for an amazing developer experience. Wrapping it up So, I deployed my own, highly sophisticated, AI chatbot. It did not take more than an afternoon, and could've probably gone quicker than that. Yet, I've already realized the enormous gains of this and hope to be contributing to the library very soon. If you are interested in checking out my deployment, please reach out to me at jakob@messerstudios.dev and I will add you to the allow list. I am not planning on distributing this tool, as I am happy enough using it internally, but if you are thinking of deploying it yourself I would be glad to inspire that.
Author image

Jakob Bjelvér

Sep 25, 20244 min

  • Chatbot
  • AI
Blog image

Launching EventSwipe - The story

There's an app for that From now on, there absolutely is an app for everything. EventSwipe is the app to go to if you want to find and decide on what events to attend with friends. It features an intuitive swiping interface that matches your likes with your friends'. It's free to use and as easy as ever to get started—no account is needed, just a profile for your friends to recognize you. Now available for iOS and Android: EventSwipe Download Inspiration and Journey Enough about the sales pitch. After all, I am a developer, not a salesperson. Instead, let me tell you about my inspiration and journey for this project. Mobile devices have recently been evolving in fascinating ways. While the design and basic functionality of smartphones have remained practically the same for years, they are more important than ever before. More people are using these little pocket computers for everyday tasks previously only possible from a PC, and on-device AI offers exciting opportunities for new functionalities that have recently only been available in the cloud. A while ago, I explored the use of PWAs (Progressive Web Apps), a promising technology that allows web apps to be installed on smartphones to move out of the browser and provide a more native-like experience. Although it's an efficient way to get an existing web app to the home screen of mobile devices, it's still web-based and limited by those boundaries. In comparison, native app development offers a much closer connection between the app and the mobile device hardware and OS, leading to various improvements in terms of performance and functionality. The Idea Now it was time for me to come up with an idea. I wanted something unique and fun, something that I would want to use myself. While the Tinder-like swiping interface is not unique, there are no existing apps that let you swipe on events. And what about the events? As I did not find any sufficient APIs for this, I turned to perfectly legal client-side web scraping of public events. This leads to a great variety and sufficiency of data while also eliminating the risk of poor first-party user-generated data. But "matching" with public events has no point, so I introduced the functionality to create and join groups. It allows members of the same group to match on events they like in common. Ultimately, this allows the user to match their preferences with other users, which makes it easy to decide on what events to attend together. Technical Details As for the technical details, using the React Native + Expo tech stack was not a tough choice to make. While I personally endorse Android's Kotlin language as a respectable Java replacement, learning iOS's Swift was never an option for me as a long-standing critic of iOS in general. Along the way, I have found amazing open-source libraries to complement my tech stack. Compared to the web, limited by its JavaScript dependency (which is actually quite a slow language), native libraries can be written in languages like C, utilizing the full performance of the mobile device. Generally, I find native mobile apps to be much smoother because of this. To see React Native support continuing to evolve, even since Meta dropped the official support for it, is amazing. EventSwipe utilizes many third-party SDKs like Sentry, RevenueCat, Google AdMob, and Firebase for everything from analytics and native advertisements to in-app purchases and so on, and my experience with the documentation and community support has been more than great. All of this while writing in TypeScript—what a time to be alive. Challenges This is not to say that my journey has been a smooth ride all along. Developing complex projects like this while using abstracting wrappers and frameworks can sometimes lead to a lot of detective work. Patching libraries, editing native source code, and getting all the necessary permissions for the ever-evolving privacy regulations on iOS and Android have sometimes led to a lot of headaches. And having been rejected by the App Store 7 times (yes, 7 times) because of Apple's unstable App Review sandbox environment until I was able to prove it to the reviewers was not a dance on roses. Not all bugs are fun to catch, but if you are passionate about your work, it's more like bringing out the magnifying glass and putting on the Sherlock hat rather than it being a daunting task. Design and User Experience While I do not see myself as a UI designer, I do see myself as an all-round developer, which does include messing with colors and shapes every now and then. Anyway, I think I did a pretty good job for being a novice in Figma. And as for the UX, I have some pretty strong opinions. Being able to use the app right away without an account, dark mode functionality, direct client-to-database connections for fast network speeds, app deep links for easy sharing and external routing, and native non-disruptive advertisements (not to mention annoying popups and notifications) are all no-brainers for me. Legal and Administrative Hurdles One thing that I do not believe pertains to a developer is the huge amounts of legal paperwork that the app stores (especially Apple's App Store) require. And I am not counting DevOps in the store consoles. Being a solo developer, you have to learn all this, as there often is no one-size-fits-all solution to copy from the Internet. Mostly it's about tax declarations and privacy regulations, but for someone in the IT industry, a lot of this could be Greek to me for all I know. I know most of this derives from politics protecting consumers, but it seems like a lot of this could be automated. But with some help from a close friend and a lot of research, it all worked out. Finally In the end, I have learned a lot. And by being able to use my existing knowledge in web development, I think I actually managed to accomplish something. So for those of you who are still reading, go ahead, try EventSwipe, and please tell me what you think.
Author image

Jakob Bjelvér

Aug 16, 20245 min

  • Announcement
  • Launch
Blog image

Welcome to this blog!

We're glad you're here and absolutely stoked to share stories about what's going on behind the scenes at Messer Studios. What's this blog about? We'll be covering a variety of topics including: Product updates Company news Industry insights Behind-the-scenes looks at our process Everything that's worth knowing about the studio will be posted here. About us me Messer Studios is an indie developer production run by me, Jakob. While most of the time I refer to the studio as "us" instead of "I" (no, I have not lost my mind chasing a bug), I someday wish to be joined by more people, and therefore I am just trying to save my future self from refactoring a lot of information later. I mostly build apps, but occasionally I create some pretty neat scripts to automate my everyday life. I build apps because it is fun, and my personal projects serve no commercial purpose. Actually, most of the time the business model is to just break even, and other times there are even losses... But what the hell, in the end, I am glad to have a hobby and passion that is capable of making profits at all. Thank you for taking the time to read about the studio, and stay tuned for future posts!
Author image

Jakob Bjelvér

July 5, 20241 min

  • Welcome
  • Website