Tixlo is a mobile app made for personal use for me and my friends. I wanted to create an app that addresses frustrations we experienced, like losing tickets, confusing emails, and not being able to keep track of events. I don't plan on releasing it to the public, as I purely see it as an educational experience.
With Tixlo, I aim to streamline ticket management, without the hassle of multiple emails or lost files. I also want to be able to share my event schedule with friends, and share tickets safely without the risk of loss or misuse.
Tixlo uses an OCR system to scan ticket images, combined with an LLM from OpenAI to interpret the information. PDFs are formatted correctly into text, which is then interpreted and structured by the LLM. Users can add and remove tickets from a list, allowing them to keep track of their events.
For the development of Tixlo, I used Tauri combined with Nuxt 3 for both the Android and iOS versions of the app. Additionally, I used Kotlin since Tauri uses it for Android. Tauri is a relatively new technology that allows cross-platform applications to be built with significantly less storage compare to Electron.
Nuxt 3 is my go-to framework due to its modern structure, TypeScript support, and seamless integration with Tailwind CSS for design. I also use Supabase as a backend service for real-time data sync and SQL functionality, and Sanity for content management, making the app's content easily adjustable.
One of the biggest challenges during the development of Tixlo was synchronizing events from multiple sources without resulting in duplicate events or inconsistent data.
The solution came in the form of an algorithm that matches data based on specific characteristics, such as date, location, and title, to minimize duplication. This algorithm analyzes these characteristics to compare events, recognize duplicate entries, and remove them, ensuring data consistency.
Another challenge was integrating machine learning for ticket scanning. It was important that this process was fast and accurate, so that I could add tickets without frustration. By optimizing model through OpenAI's fine-tuning API, I was able to improve the model and increase accuracy.
This project taught me a lot about machine learning integration and asynchronous data synchronization. I learned how to develop new algorithms for merging data from different sources and gained insights into the challenges of building a mobile app with optimal performance.
Looking back on this project, I am satisfied with the technical choises I made, such as using Tauri instead of Electron, which resulted in a better-performing app with lower memory usage. What could have been improved is the level of user involvement during the development process. More structured user testing at an early stage could have ensured that certain features, such as ticket scanning, were improved faster.
I do not plan to continue working on Tixlo, as I see this project primarily as an educational experience. It was valuable for me to learn about mobile development, machine learning, and UX design, and I am satisfied with what I have accomplished thus far for personal use.