<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Björn Godeck (Posts about geobingo)</title><link>https://bjoern-godeck.de/</link><description></description><atom:link href="https://bjoern-godeck.de/categories/geobingo.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:contact@bjoern-godeck.de"&gt;Björn Godeck&lt;/a&gt; </copyright><lastBuildDate>Mon, 16 Feb 2026 15:56:32 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>SnapHunt Bingo at the MediaNight</title><link>https://bjoern-godeck.de/posts/snaphunt-bingo-at-the-medianight/</link><dc:creator>Björn Godeck</dc:creator><description>&lt;blockquote&gt;
&lt;p&gt;This is the third and final blog post about the game project "SnapHunt Bingo" which im developing with three other university students as part of our obligatory software project. I'm planning to publish and maintain this game so stay tuned for more posts to come!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href="https://hdm-stuttgart.de/medianight"&gt;MediaNight&lt;/a&gt; came closer and closer so we picked up the development pace to get a fully functioning version of our game that we are proud of presenting at the media night.&lt;/p&gt;
&lt;p&gt;But first… there is the Präsentationstag. We created some beautiful slides so everyone wants to play our game:&lt;/p&gt;
&lt;p&gt;&lt;img alt="slide 1" src="https://bjoern-godeck.de/snaphunt-bingo/presentation-1.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="slide 2" src="https://bjoern-godeck.de/snaphunt-bingo/presentation-2.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="slide 3" src="https://bjoern-godeck.de/snaphunt-bingo/presentation-3.png"&gt;&lt;/p&gt;
&lt;p&gt;We also created a poster that we can hang up at the MediaNight to show the visitors what our project is about:&lt;/p&gt;
&lt;p&gt;&lt;img alt="media night poster" src="https://bjoern-godeck.de/snaphunt-bingo/MediaNight-poster.png"&gt;&lt;/p&gt;
&lt;p&gt;Our desk was in the Modulbau (&lt;a href="https://horst.hdm-stuttgart.de/m003"&gt;M003&lt;/a&gt;). We were project 3 in this room plan:&lt;/p&gt;
&lt;p&gt;&lt;img alt="room plan" src="https://bjoern-godeck.de/snaphunt-bingo/room-plan.png"&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately we had two VR projects right next to us (project 8 and 9) so there was often a queue waiting to play these games right in front of our desk. Nevertheless we had many people visiting us and trying out our game.&lt;/p&gt;
&lt;p&gt;We decided to create a list of 9 words that can be found at the HdM - most of them directly at our table - so visitors can test the app with a low barrier:&lt;/p&gt;
&lt;p&gt;&lt;img alt="our table filled with items to be photographed" src="https://bjoern-godeck.de/snaphunt-bingo/our-table.png"&gt;&lt;/p&gt;
&lt;h3&gt;Our impressions of the MediaNight&lt;/h3&gt;
&lt;h4&gt;Björn&lt;/h4&gt;
&lt;p&gt;I’m not a big fan of presenting - especially in front of big crowds. But the only way to keep improving and build confidence is doing these things again and again. And while my part of the presentation at the Präsentationstag might not have been &lt;strong&gt;the&lt;/strong&gt; best project presentation I’m still happy with my performance.&lt;/p&gt;
&lt;p&gt;The MediaNight itself was surprisingly pleasant. From past visits I remembered a loud and crowded environment and while it was loud and somewhat crowded I still liked it. I think our idea of having two lent smartphones and some objects on our table to test the game was great. Most used those to test the game. There was only a handful of people who downloaded the app on their own phone and probably none of them decided to make the walk to the excavator. Most people don’t have the patience to test one app over the whole evening which is totally fine. I didn’t do more than one QR-Code on the &lt;a href="https://hdm-stuttgart.de/medianight/projekte?projekt_ID=4891"&gt;RewardRun project&lt;/a&gt; myself either.&lt;/p&gt;
&lt;p&gt;Another positive aspect was that two students from a journalism/public relations course of study approached us at the beginning of the semester to write an article about our project which was released the weekend before the MediaNight:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.edit-magazin.de/auf-der-jagd-nach-dem-bingo-sieg.html"&gt;Auf der Jagd nach dem Bingo-Sieg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="cover image of the article" src="https://bjoern-godeck.de/snaphunt-bingo/edit-article.webp"&gt;&lt;/p&gt;
&lt;h4&gt;Erzan&lt;/h4&gt;
&lt;p&gt;Like Björn, I am not naturally someone who enjoys presenting in front of large audiences. However, over the past few years, especially through presentations at work and in previous courses, I have had many opportunities to practice speaking in front of groups. Because of that experience, presenting our project on the Präsentationstag felt significantly easier than it would have a few years ago. It felt good to see how much more confident I have become compared to earlier semesters.&lt;/p&gt;
&lt;p&gt;The MediaNight itself was my very first one, and I was honestly impressed. I did not expect the event to be this large, well-organized, and full of different projects. Walking through the building and seeing so many creative ideas being presented was inspiring.&lt;/p&gt;
&lt;p&gt;We were very happy to see that people stopped by, asked questions, and tried out our game.&lt;/p&gt;
&lt;h6&gt;Reflection on the Final Project Phase&lt;/h6&gt;
&lt;p&gt;Looking back at the last weeks before the MediaNight, time management was one of the biggest challenges. As the event approached, it became increasingly important that we had a stable and presentable version of the app.&lt;/p&gt;
&lt;p&gt;About one week before the Media Night, parts of the backend were not functioning as they should. We decided to reprioritize responsibilities to ensure that the project would run reliably during the event. Leon shifted more strongly into backend stabilization and took over parts of my previous implementation to make sure everything worked smoothly for the presentation.&lt;/p&gt;
&lt;p&gt;At the same time, I focused on other deliverables for the Media Night and the Präsentationstag:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Designing and preparing the presentation slides&lt;/li&gt;
&lt;li&gt;Creating the project poster&lt;/li&gt;
&lt;li&gt;Producing the trailer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After the event, I shifted my focus back to the backend and worked on additional backend tests.&lt;/p&gt;
&lt;h4&gt;Leon&lt;/h4&gt;
&lt;p&gt;This was my first MediaNight, and before the event I could not imagine how many people would actually come to see the projects developed throughout the semester. I was surprised by how many people were interested in our project in the end. At first, no one came to look at our project, and we jokingly made bets about how many times we would be asked about it. In the end, we explained our project to many visitors.&lt;/p&gt;
&lt;p&gt;Even though most of them liked the concept and the version of the game there were a few critics. One of them being that the words were fixed and not interchangeable. The biggest flaw was the missing result view. &lt;br&gt;
We had major problems regarding the development of the backend. Even shortly before the MediaNight, the basic game functions had not yet been implemented. I was assured multiple times that they would be finished the following week. As the MediaNight approached fast, I took over the development of the WebSocket-based game logic in the backend while also continuing to work on my frontend tasks. &lt;br&gt;
I was quite happy that we could work out a working version for the MediaNight. Even though we missed the mark with what was planned due to these issues. &lt;/p&gt;
&lt;h4&gt;Abel&lt;/h4&gt;
&lt;p&gt;This actually was my second MediaNight, my first one was the one last year for the “Game-Praktikum” lecture where we developed a video game with around 20 people. I was more detached from the whole planing and presentation aspect of the MediaNight. But due to this being a more intimate project with 4 people, I had to stay for around 7 hours instead of the 1 hour last year. Even though I had to stay longer at the MediaNight, it did not feel annoying in any way. Having people come to us and presenting something you spent so much time and effort to build up from the ground was something special. It felt really rewarding, having people coming up to us and being genuinely interested in our project.  &lt;/p&gt;
&lt;p&gt;My favorite interaction was when someone came up to us and said that they voted for us for the students choice award, which we sadly did not win.&lt;/p&gt;
&lt;p&gt;One thing that left a sour taste was the amount of people who after reaching the vote stage kept pressing the “next word” button being confused why it stopped working. I think as a developer you focus a lot on just getting something to work that you start missing the most important part. A game where you can not see whether you reached the predefined goal probably is not a good game. And in our case the missing scoreboard and the amount of people who criticized it was a bit of a downer.&lt;/p&gt;
&lt;p&gt;But in the end it was a great experience and I am a bit sad to probably not being able to part take in another MediaNight.&lt;/p&gt;
&lt;h3&gt;What’s left to do and what’s still to come&lt;/h3&gt;
&lt;p&gt;Our app is still far from perfect. We still found some bugs and have some features we want to implement. New features would be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join lobby with QR-Code: Instead of typing in the 5 digit lobby code the user should be able to just scan a QR-Code from the host’s screen to join the lobby. That makes playing together easier.&lt;/li&gt;
&lt;li&gt;Summary Screen with download function: We planned to include a summary screen at the end of the game where you can see every player’s bingo board. This way you can see who took which picture and who managed to get a bingo/full line, so extra points (the player already gets extra points on a bingo but they can’t verify it visibly). This view should also have a download button to download one player’s or all players’ pictures on your phone. In the backend development we looked ahead and made decisions so this feature would be easy to include later.&lt;/li&gt;
&lt;li&gt;Custom server address: To make the game self-hostable we want to include a setting on the first screen of the app where you have to type in the server address where the backend is running on.&lt;/li&gt;
&lt;li&gt;Small UX improvements: At the MediaNight we saw some user experience flaws where users tried to do things that are not possible. For example in the evaluation they tried to swipe to the next word instead of using the button on the bottom right. Or they thought that the green box effect after the image was uploaded meant that the AI recognized it as “right”.&lt;/li&gt;
&lt;li&gt;Make it self-hostable: The plan for the project is to not let it die after we got our grades but to keep it alive on a public GitHub page so other people who want to play this game have the ability to do so. For this the backend should be easily deployable, preferably using only one docker-compose file. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So stay tuned for more to come!&lt;/p&gt;
&lt;p&gt;- The SnapHunt Bingo team&lt;/p&gt;</description><category>geobingo</category><category>snaphunt-bingo</category><category>software-development</category><guid>https://bjoern-godeck.de/posts/snaphunt-bingo-at-the-medianight/</guid><pubDate>Mon, 16 Feb 2026 14:52:30 GMT</pubDate></item><item><title>First prototype: SnapHunt Bingo is making progress</title><link>https://bjoern-godeck.de/posts/first-prototype-snaphunt-bingo-is-making-progress/</link><dc:creator>Björn Godeck</dc:creator><description>&lt;blockquote&gt;
&lt;p&gt;This is the second part of a three part blog post about the game project "SnapHunt Bingo" which im developing with three other university students as part of our obligatory software project.     &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The development of our game “SnapHunt Bingo” is making progress. All the important screens of the app - login screen, main menu, lobby, game board and the evaluation screen - are now present and some of them are already fully functional. You are now able to go through the different stages of the game. The backend has also made a lot of progress but the connection between the frontend and the backend hasn't been fully carried out yet.&lt;/p&gt;
&lt;h3&gt;How the game looks and what works&lt;/h3&gt;
&lt;p&gt;To test the game you first have to install the .apk. When you open the app you are greeted with a login screen. On this screen you can choose to login with your Google Account or choose to play as a guest. The login functionality is the first that has a connection to the backend and thus is fully functional.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Login screen" src="https://bjoern-godeck.de/snaphunt-bingo/login-screen.png"&gt;&lt;/p&gt;
&lt;p&gt;After you login you get redirected to the main screen. There you can either create or join a game. The logic for joining a game is not implemented yet, so for now our proof of concept is only a single player experience. When you create a game, you'll get to the lobby screen. On that screen you can make some settings like enabling the AI integration or removing words/players. These are still static data only saved in the frontend so changing them won’t actually change anything.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Main menu and lobby view" src="https://bjoern-godeck.de/snaphunt-bingo/main-lobby.png"&gt;&lt;/p&gt;
&lt;p&gt;Once you start the game you'll see the game board with your bingo field and a timer running down. You can click on the words and get to a camera view where you can snap a picture. For now the picture is only stored on your device and not sent to the server. You can see the picture on your bingo card where once the text was.&lt;br&gt;
In the end you can go the evaluation screen. For now it is filled with random stock footage but it shows how it’ll look like in the finished game.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Game board and evaluation screen" src="https://bjoern-godeck.de/snaphunt-bingo/game-eval.png"&gt;&lt;/p&gt;
&lt;p&gt;Even though there is no multiplayer yet playing the game at the HdM made some fun:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Game Testing at the HdM" src="https://bjoern-godeck.de/snaphunt-bingo/hdm-game-state.png"&gt;&lt;/p&gt;
&lt;h3&gt;Frontend Update&lt;/h3&gt;
&lt;p&gt;We have already made significant progress on the frontend of our project since the last blog post. One of the first things we did was deciding on an architectural pattern. The Flutter documentation recommends the use of the MVVM pattern. As beginners in Flutter we did a lot of mistakes while trying to implement this pattern - just as we expected. For example, we intended to have the view for the guest login and the google login with the same data behind it, so we can use the created user object in the whole application. However, a View Model should have a one-to-one relationship with its corresponding view.  &lt;/p&gt;
&lt;p&gt;At first we ignored this issue, but as similar problems occurred repeatedly, we decided to introduce a dedicated repository layer for data handling. With this change we also completely reworked our folder structure. This is the next big topic in our queue. The next picture shows an example of the architecture of our frontend:&lt;/p&gt;
&lt;p&gt;&lt;img alt="MVVM structure example" src="https://bjoern-godeck.de/snaphunt-bingo/MVVM-structure-example.png"&gt;&lt;/p&gt;
&lt;p&gt;As for the thought process behind the different views: We split the different views evenly between the two frontend developers. At first, we tried implementing the views completely with their respective view models and services. However, since we needed a first demo before Christmas, we decided to build a complete gameplay loop as a client-side application. The login views were the first to be fully completed and are currently the only ones connected to the backend. The other views only contain the basic logic and layout of them.&lt;/p&gt;
&lt;p&gt;To make the demo a bit more realistic we tried to contain some information from the other views for example the selected playtime. We also thought about using the pictures that were taken in the evaluation, but decided not to because this would work completely different to our final version where we will push the pictures to the backend while playing and later fetch everything again. Implementing a purely client-side solution for this did not make sense to us, as it would be discarded once the backend integration is complete.&lt;/p&gt;
&lt;h3&gt;Backend Update&lt;/h3&gt;
&lt;p&gt;Since the last developer blog we have focused on building the foundation of our backend. The Django project is now running and we have integrated the Django REST Framework for API development and prepared Django Channels for real-time communication. Redis is set up as the message broker and the ASGI server Daphne is ready for WebSocket support.&lt;/p&gt;
&lt;p&gt;We implemented the lobby features, allowing players to create a lobby, join, view details, and start a game. In addition we developed the Game model, which stores all essential settings such as duration, word list, grid size and game mode. The main endpoint POST /api/lobby/game/create/ is complete – it validates the input (e.g., exactly 9 words), takes the players from the lobby, and creates a new game.&lt;/p&gt;
&lt;p&gt;A good application  needs secure authentication so we implemented a safe way for users to create a account. User now can login via Google and as a guest. The guest login was important for us as we want to set the game entry barrier as low as possible. The login itself is quite boring as we use the basic Google API. For the guest login we basically create a user with the name the users puts in and we create a random email address. Both authentication versions create a refresh and access token.&lt;/p&gt;
&lt;p&gt;Testing the app was a bit tricky because Google requires a "key" from the .apk file to verify the address where tokens are sent. Since the backend team isn’t familiar with Flutter, we struggled to figure out how to retrieve the token. To make matters worse, only one person on the frontend team had access to the Google Cloud SDK, so we decided not to spend too much time troubleshooting the Google-related issues.&lt;/p&gt;
&lt;p&gt;Another major challenge for the backend team was deploying the app to a server. For the first prototype, we wanted a functional server to handle frontend requests. One team member secured server access, and the backend team developed a Dockerfile to build a production-ready version of the app. The process went smoothly, with only minor issues like routing errors and file-copying mistakes in the code.&lt;/p&gt;
&lt;h4&gt;The AI Problem Part II&lt;/h4&gt;
&lt;p&gt;One thing that we kind of set aside was the AI picture classification. We haven’t had a server to test the AI performance problems we might encounter. We decided to first focus to make a functioning prototype and then to think about the AI feature and how to implement it. One big problem with the testing of different AI Models and Image classifier is the limited hardware availability for the testing. So one thing we need to consider is that local testing can only be made by one person in the backend team.&lt;/p&gt;
&lt;h3&gt;What’s next&lt;/h3&gt;
&lt;p&gt;There are still many things we plan to do to get a production ready game. These things include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully connect frontend with backend to achieve full multiplayer functionality&lt;/li&gt;
&lt;li&gt;Create working websockets, using daphne,  for a smooth multiplayer experience&lt;/li&gt;
&lt;li&gt;Add a screen that shows the bingo fields of each player so you know who took which pictures and who got a bingo (full line)&lt;/li&gt;
&lt;li&gt;Create the game and scoring logic&lt;/li&gt;
&lt;li&gt;Add a score screen that shows the winner and how many points each player got&lt;/li&gt;
&lt;li&gt;Some bug fixes and improvements (for example the timer stops after the app has been idle for some time)&lt;/li&gt;
&lt;li&gt;Create a logo for the app’s main screen and the smartphone’s home screen&lt;/li&gt;
&lt;li&gt;Implement some sort of AI image classification&lt;/li&gt;
&lt;li&gt;Testing, testing and some more testing&lt;/li&gt;
&lt;/ul&gt;</description><category>geobingo</category><category>snaphunt-bingo</category><category>software-development</category><guid>https://bjoern-godeck.de/posts/first-prototype-snaphunt-bingo-is-making-progress/</guid><pubDate>Sun, 21 Dec 2025 14:46:29 GMT</pubDate></item><item><title>SnapHunt Bingo - A real life version of GeoBingo.io</title><link>https://bjoern-godeck.de/posts/snaphunt-bingo-a-real-life-version-of-geobingoio/</link><dc:creator>Björn Godeck</dc:creator><description>&lt;h2&gt;SnapHunt Bingo - The idea and our plans&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the first part of a three part blog post about the game project "SnapHunt Bingo" which im developing with three other university students as part of our obligatory software project.     &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bingo, the old peoples game? Who wants to play that?&lt;/p&gt;
&lt;p&gt;Well, let me introduce you to our new innovative game that isn’t played in a retirement home but outside in the real world. Yes, you have to leave your gaming chair but it will be an adventure you won’t forget for a long time.&lt;/p&gt;
&lt;p&gt;This is a social game, so you need some friends to enjoy it. Theoretically you can play with just two players, but it’s more fun to set off in groups of two - so four or more players is recommended.&lt;/p&gt;
&lt;p&gt;This is also a mobile game: You need a smartphone running the app or the web version.&lt;/p&gt;
&lt;p&gt;But what’s all this about?&lt;/p&gt;
&lt;p&gt;To summarize it: You have to find things from your bingo card in the real life and take a picture of it. These things can be anything you can see or grasp in the real world for example a pink car, a burning candle, a rabbit, a helicopter, yellow road markings, &lt;a href="https://www.youtube.com/shorts/lLLLpSEkRtM"&gt;an olive, a disused fridge or flying frisbee&lt;/a&gt;. You as a group can either come up with your own words or use a list of predefined words (or a mix of both). All players have the same set of words, but they are arranged differently on the bingo boards. Once you took a picture the word is checked off and if you get a whole row you get bonus points. At the end of each game all players get together to discuss the pics they hunted. You might argue if the car is really pink or rather purple or if the &lt;a href="https://www.youtube.com/shorts/jw3jjN8kCyo"&gt;racoon&lt;/a&gt; is in fact a cat. To help with filtering all the pictures we might add an AI integration that analyzes the easily recognizable images.&lt;/p&gt;
&lt;h3&gt;Inspiration&lt;/h3&gt;
&lt;p&gt;To be clear upfront: We didn’t invent this game. The first version of this type of game was &lt;a href="https://github.com/s0er3n/GeoBingo.io"&gt;“GeoBingo”&lt;/a&gt; which became popular through &lt;a href="https://www.youtube.com/watch?v=1hcszIPUkok"&gt;twitch streamers&lt;/a&gt;. It is not played in real life but in Google Street View. You agree on a list of words and search for them in the whole world by skimming through &lt;a href="https://www.google.com/streetview/"&gt;Google Street View&lt;/a&gt; imagery. You can play this game on &lt;a href="https://geobingo.io/"&gt;https://geobingo.io/&lt;/a&gt; but it costs money since Google Street View API costs are rather high. Since this game is &lt;a href="https://github.com/s0er3n/GeoBingo.io"&gt;open source&lt;/a&gt; you can self host it and use your own API key (which is free if you don’t spend every second of your free time playing this game).&lt;/p&gt;
&lt;p&gt;Next up &lt;a href="https://youtu.be/g3UMr-fkHGg?si=3U5WI-l0xHtms22R"&gt;some&lt;/a&gt; &lt;a href="https://youtu.be/BtAvWVZ9mjM?si=plScJSbHqine3FDO"&gt;streamers&lt;/a&gt; came up with the idea to bring this game into real life. It looked like a fun activity for a group of friends so me and some friends tried it out. But it was a hassle to keep track of the words and all the pictures. So we decided we need a proper mobile application for this task. This is how SnapHunt Bingo was born.&lt;/p&gt;
&lt;h3&gt;Design&lt;/h3&gt;
&lt;p&gt;I already had some ideas how the game flow should be like and how the app’s pages should look like so I scribbled some concepts:&lt;/p&gt;
&lt;p&gt;&lt;img alt="concept scribbles" src="https://bjoern-godeck.de/snaphunt-bingo/concept-scribbles.png"&gt;&lt;/p&gt;
&lt;p&gt;After some discussion with the team I created prettier versions of the screens with &lt;a href="https://www.figma.com"&gt;Figma&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Login, Lobby and game settings screens" src="https://bjoern-godeck.de/snaphunt-bingo/figma-1.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Bingo board, image taker and scoring selection screens" src="https://bjoern-godeck.de/snaphunt-bingo/figma-2.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Tinder style scoring screen" src="https://bjoern-godeck.de/snaphunt-bingo/figma-3.png"&gt;&lt;/p&gt;
&lt;p&gt;Those designs are not final but they are a good foundation for discussion about the design and an inspiration for the development process.&lt;br&gt;
They are also great to give an impression on how the game will look like and how it works to our readers.&lt;/p&gt;
&lt;h3&gt;Team structure&lt;/h3&gt;
&lt;p&gt;To make our development process more efficient, we split our team into two parts. Björn and Leon are responsible for the frontend section of SnapHunt Bingo while Abel and Erzan focus on the backend and AI integration of our project.&lt;br&gt;
This separation of responsibilities allows each of us to concentrate on our strengths and ensures a clean and better structured development process.&lt;/p&gt;
&lt;p&gt;If timing issues happen and the backend backlog begins to grow, Leon will also assist with backend tasks. This flexibility helps us keep the workflow steady, even when unexpected issues occur.&lt;/p&gt;
&lt;p&gt;We manage our tasks in GitLab using separate issue tags for the frontend and backend. The team members can select the issues that they want to work on. To ensure that out project makes the desired progress we meet every Monday evening to discuss progress, upcoming tasks, and other open questions.&lt;/p&gt;
&lt;h3&gt;Frontend&lt;/h3&gt;
&lt;p&gt;We considered multiple framework options for our frontend development. After evaluation of our options we chose &lt;a href="https://flutter.dev/"&gt;Flutter&lt;/a&gt;. We also thought about using React Native and after our mentoring professor suggested the Godot Engine, we also looked at that option.&lt;/p&gt;
&lt;p&gt;In the end we decided on Flutter due to several reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cross-platform support: With a single codebase, we can deploy our application on multiple platforms. Our primary platform will be Android, but if there is enough time we want to deploy our application in the web too.&lt;/li&gt;
&lt;li&gt;UI flexibility: Flutter has a very extensive widget library which enables us to easily build consistent and modern app designs without huge effort.&lt;/li&gt;
&lt;li&gt;Strong community: Flutter is still actively developed by Google and therefore has a big and active developer community, which help us to find solutions to issues we might come by.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While our other options also partially had those pros a key factor was that Björn already has some basic knowledge in Flutter, while the other two options would have been completely new to us.&lt;/p&gt;
&lt;p&gt;We use JetBrains &lt;a href="https://developer.android.com/studio"&gt;Android Studio&lt;/a&gt; as our main development environment for the frontend, as it integrates easily with Flutter and provides us with an Android Emulator, which we will use for the first weeks to try our application.&lt;/p&gt;
&lt;h3&gt;Backend&lt;/h3&gt;
&lt;p&gt;The reason we decided to use Python in the backend was because we wanted to learn something new, as no one has any experience using Python as a backend language. The second and bigger reason on why we decided to use python, is because of the AI compatibility of Python. Python is the industry standard for AI development so choosing it was a no-brainer.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; is the biggest Python backend framework and has a lot of built in features and libraries that would spare us a lot of development time. We discussed other options such as FastAPI and Flask due to some performance issues that might occur due to the way Django handles async functions.&lt;br&gt;
In the end we decided for Django as our backend as a potential performance bottleneck should not occur for our use-case. And we will safe some time using the vast libraries.&lt;/p&gt;
&lt;h5&gt;The AI Problem&lt;/h5&gt;
&lt;p&gt;The last decision to be made is how to tackle the image identification.&lt;/p&gt;
&lt;p&gt;We have to balance word-complexity, user-input-flexibility, accuracy, and computing power and that is something that needs more time to test and plan. If we let the users pick their own words and let the uploads be checked by the AI, we can not assure for the reliability of the results if the word is too obscure.&lt;/p&gt;
&lt;p&gt;Talking about complexity, the words we provide can not be too complex but also shouldn’t be too boring. For example: A simple image classifier can identify a car. But there are a lot of cars on the street. So simply using “car” as a word would be a boring experience for the player but easy to reliably implement for us. Most simple image classifiers start to struggle if the complexity increases. If we provide “green car” as a bingo field, the image classifier might detect a non-green car next to a green bush as a false-positive which should be avoided.&lt;/p&gt;
&lt;p&gt;There are two ways to ensure that the image classier returns a correct result:&lt;/p&gt;
&lt;p&gt;A. We use a more powerful image classifier.&lt;br&gt;
B. We train our own image classifier.&lt;/p&gt;
&lt;p&gt;A has the problem that we will reach a computing bottleneck pretty fast as we have only limited hardware available for the MediaNight. A fully fledged LLM has a high reliability, but an answer can take up to 5 minutes depending on the hardware.&lt;/p&gt;
&lt;p&gt;We currently tend to option B which has the problem that we have to carefully pick the words we use because the players should have unique experiences, playing multiple rounds without repeating words. So if we have a 5x5 grid resulting in 25 words, we should have around 250 words that are not prone to  false positives. Which means we will spend a lot of time for training and fine tuning the model which might take a lot of time of the project.&lt;/p&gt;
&lt;p&gt;Our primary goal in terms of AI integration is to provide a 3x3 grid with 9 selected words for the MediaNight that work reliable with an image classifier in the backend.&lt;/p&gt;</description><category>geobingo</category><category>snaphunt-bingo</category><category>software-development</category><guid>https://bjoern-godeck.de/posts/snaphunt-bingo-a-real-life-version-of-geobingoio/</guid><pubDate>Fri, 14 Nov 2025 19:18:00 GMT</pubDate></item></channel></rss>