Mobile application · 2025
Bauernschnapsen
A Flutter adaptation of the Austrian four-player card game, designed around single-player matches with AI opponents and offline-first game state.
- Role
- Product design and development
- Year
- 2025
- Tools
- Flutter, Dart, Drift, Supabase
Context
Bauernschnapsen, also known as Viererschnapsen, is a team-based Austrian trick-taking game played by four people with a 20-card deck. Each player receives five cards, and a team works towards 24 game points across a series of hands.
This project brings that strategic trick-taking fun straight to your device. The app was designed for single-player matches with AI opponents while retaining recognisable rules, calls and visual character.
The challenge
The difficulty was not simply displaying cards on a smaller screen. Bauernschnapsen combines team play, turn order, legal moves, scoring and special calls, creating a large number of state transitions that the interface and underlying logic both need to communicate clearly.
This being my first Flutter project, I also needed to learn the framework while building a reliable rules engine. I deliberately separated the game logic from the polished interface at the beginning so I could understand and test the rules before adding visual complexity. I designed and developed the project from its initial research and wireframes through the playable prototype. My work covered the game rules, state management, mobile interface, AI-controlled opponents, local persistence, remote synchronisation, login flow, sound and visual refinement.
01 — Research and wireframes
I began by documenting the gameplay and its variations, then comparing existing apps based on the two-player form of Schnapsen. This helped identify common interaction patterns and highlighted where a four-player, team-based version would require different information on screen.
The first hand-drawn wireframe established a landscape table with the player’s hand along the lower edge, partner and opponents arranged around the table, a central play area and persistent score information.

02 — Building the rules engine
I started development with a terminal-based version. That removed interface concerns and let me concentrate on turn progression, card rules, scoring, and the behaviour required for a complete round.
Once the normal game mode was working, I created an early Flutter interface guided by the wireframe. Two of the more involved areas were handling 20/40 pair calls and keeping the game state consistent as cards moved between each player’s hand, the table, and completed tricks.

03 — Offline-first persistence
The app used a local Drift database to preserve game state and player data when the device was offline. With a connection available, the same data could be synchronised to a remote Supabase database.
This local-first approach kept the core game playable without relying on network availability, while the login flow provided an entry point for remote player data.

04 — Refinement
Later iterations added a more distinctive visual treatment, music, and sound effects. The final prototype retained the compact landscape table while improving the card presentation and giving the app a character that felt appropriate to the traditional game.


Outcome and lessons
The result was a playable Flutter prototype that brought together the normal game mode with AI opponents, local persistence, remote synchronisation, login, music and sound.
The project reinforced the value of separating rule-heavy domain logic from interface work. Beginning in the terminal made it easier to reason about gameplay before managing animation and presentation, while the local-first data model kept network availability from becoming a condition for play. A next iteration should validate the interface with players and add a German language option, before opting for an official release.
