
Group View
See what´s going on in your group.
A social betting iOS app for private groups with Firebase and SwiftUI, deep linking, and real-time notifications.
See what´s going on in your group.
Track your bets with clarity and speed.
Join groups and bet with your friends.
Invite friends and start betting in minutes.
See your stats and manage your activity.
See what´s going on in your group.
Track your bets with clarity and speed.
Join group challenges and compete socially.
Bets is a social betting app that lets users create, accept, and resolve friendly bets within private groups. It integrates with Firebase for real-time data, authentication (Apple, Google), and cloud messaging. Users can track their betting history, join groups via codes or deep links, and receive notifications about bet updates or resolution requests. The app features clean navigation, a deep linking system, and automatic bet archiving for long-term history tracking. It's built with SwiftUI, leveraging modern iOS patterns and Firebase's backend services for a seamless social experience.
Problem: Users needed a seamless way to share and access specific bets, groups, or actions (like joining a group or starting a new bet) directly—whether the app was already running or freshly launched.
Solution: Implemented a custom deep linking system using a dedicated `DeepLinkManager` and URL parser. Incoming links are decoded into actionable routes and buffered if the user isn't authenticated. Once the user signs in, the app flushes any buffered links and routes them appropriately. This supports both universal links and custom schemes, enabling dynamic navigation like `/group/:id`, `/bet/:id`, or `/join/:code`.
Problem: There was no structured way for users to resolve bets, propose winners, or handle disputes after a bet was completed.
Solution: Designed a resolution request system using `BetMessage` models and Firestore subcollections. Users can propose a winner with a justification, which notifies the opponent and prompts them to accept or reject. Resolved bets are automatically archived after a cooldown period, keeping active views clean and historical data accessible. This workflow supports accountability and preserves bet integrity across groups.
Problem: Old bets that have already been resolved were still visible in the Group.
Solution: Implemented archiving of older bets into a new subcolletion, to reduce the data traffic when opening a Group.
A tennis string tracking iOS app with AI String Scanner using AVFoundation and Google Gemini.
Quickly find strings and racquet data.
View detailed racquet and tension profiles.
Scan strings using camera and AI model.
Quickly find strings and racquet data.
View detailed racquet and tension profiles.
MyStrings is a modern iOS app designed for tennis players and stringers to effortlessly manage racquets, stringing history, and string inventory. The app features a sleek, Apple-style UI and integrates with Firebase for secure cloud-based storage. A standout feature is the AI Racquet Scanner, which uses Google Gemini to analyse photos of tennis racquets to research data about the model string pattern and release year and brand, to simplify creating new racquet entries. Built with SwiftUI and AVFoundation, MyStrings blends smart automation with elegant design to streamline racquet tracking and equipment insights.
Problem: The AVCaptureVideoPreviewLayer wasn’t rendering correctly inside SwiftUI due to improper layer handling.
Solution: Replaced the default UIView with a custom UIView subclass (PreviewContainerView) that directly uses AVCaptureVideoPreviewLayer as its backing layer. This ensured the camera preview appeared fullscreen and consistently across devices.
Problem: The initial Firebase Firestore security rules didn’t restrict access based on user authentication. This meant that any authenticated user could potentially read or write to any document in the racquets collection.
Solution: Firestore security rules were updated to strictly scope access to each user's own data.
A support platform for elderly users with chat, ticketing, and article-based help. Built with Spring Boot.
Simple, friendly onboarding interface.
Easy communication with support staff.
Find answers quickly with structured content.
Track common issues and user questions.
techbuddy is a web-based support platform designed for elderly users who need guided digital help. Built as part of a university module, it includes real-time chat, support articles, and ticket-based issue resolution. In a team of 3 students, we developed this application using Spring Boot. My contribution in this project included the markdown based article feature, the administrator insights, the chat feature and the translation feature, as well as the security configurations.
Problem: Spring Boot standard custom error handling returns html format. For the REST API there is no json response (just responded with a json of the html error page).
Solution: Implemented a handler, that checks if the api endpoint is pinged before returning the error html file.
Problem: Insights on articles were increasing upon refresh of the page.
Solution: Introduced a new Model ArticleView that will be created using the javascript of the view Article Button. This way when the article is refreshed there is no counter that is increased, and we can track the views back with a timestamp, for the insights.