Helping kids to practice math with a new coding language to reach Web, iOS, Android and other platforms
The game that I'm contributing to this "AWS Game Builder Challenge" in early 2025 is inspired by my family, especially by wife, who is a teacher in primary school in Germany. Finally I was able to also resolve an outstanding item from my bucket list that I've had since 2019! Wanna know which one? Keep reading!
What's the game about?
This small game will help primary school kids (aged 6-10) to practice their mathematics skills in a funny and simple way! The game encourages kids to solve math challenges in many different languages and helps them get faster at solving them. Right now it allows and supports simple questions of 2-3 operands - but this can and will be expanded! Let me know what other maths challenges you would like to have asked!
Where and how can I play the game?
This game is currently available on the web - https://flying-maths.lockhead.cloud.
There is also an Android and an iOS version available for testing - right now beta - as I work on app store acceptance - please reach out to me with your eMail adress that you are using for your desired platform and I will make it available for you :-)
How can I submit feedback, ideas, comments?
You can of course directly start commenting in the comments BELOW!
Or, you raise an issue in the GitHub repository. Or, you reach out to me on socials or email ;)
Which AWS services have been used?
This game currently uses:
- Amazon Q Developer (Visual Studio), especially
/dev:-) - AWS AppSync
- AWS Lambda
- Cognito
- S3
- CloudFront
- AWS Amplify Flutter
- and obviously IAM, CloudWatch and the other building blocks you need... but NO VPC ;)
Was a GenAI agent or assistant harmed as part of this project?
No! But over 90% of the code base is generated by Amazon Q Developer!
Proof it?

To be fair, I think I did harm Q Developer "just a bit" - I've forced the agent to regularly "re-iterate" on a proposal it made and - to be honest - that's took a LOT of effort and nearly with every usage of /dev I maxed out on the maximum of "three" re-iterations.
Can we please up this limit to 10 or more? :-)
Note to self: I need to work on my prompt engineering skills :-)
My approach - technology, prompts, personal challenges
My approach for this challenge was simple: I needed a good idea!
Thankfully, my family was there for the rescue ;-)
The idea was born by my wife (she's a teacher in primary school) and improved by my kids. As my wife is also responsible for a bunch of IT things in her school, she manages the iPads and thus what I build needed to support at least iOS.
I also wanted to go with Serverless technologies to avoid big costs...and I wanted to use...Amplify Flutter.
It all starts with a prompt!
I started with an empty Github repository! My first prompt was, following some ideas from Christian Bonzelet and PROMPTZ:
/dev Please read the information in README.md and create the source code for the described game.
It failed completely! Bad prompt engineering! ;)
Second try:
Please read the README.md again, this is completely wrong - you generated python, I asked for Flutter in the frontend and typescript for all infrastructure as code and backend services.
For your reference, here's the README I used:
# genai-game-flying-maths
This repository contains the source code for a Web-Game that allows players to solve simple maths problems for students/kids from the age of 6 up to 10.
It is available in English and German. The language is configurable on demand and can be stored in the user account.
The user account is handled through AWS Cognito and users are able to sign up if they wish.
No other information are collected but the signup email, a user name, the password, the user language and the grade of the users.
The user profile information are also stored in a DynamoDB in the backend.
## Game mechanichs
The game works in a way that the user can start a game on demand. In that case, a series of 10 simple math problems will be generated (e.g. 25+5+10, 5*24, 5*4, ...).
After these have been generated, the user will be presented one of the challenges one after another. When the challenge is presented, on the lower part of the screen a few possible "results" are presented. The move automatically from the left side of the screen to the right one. They are clickable items and the user needs to click or tab on the correct result.
If the selection is correct, the item becomes green and the next challenge is shown.
if the selection is wrong, the item becomes red, the correct result is displayed and the next challenge is shown.
At the end of the 10 challenges, the user will be able to see a result of his challenges.
## Languages & Coding
The backend of the code is written in Typescript and uses AWS CDKv2 for infrastructure as code. It is stored in the "backend" directory.
It also includes a GraphQL endpoint and schema that can be used by the client application. The authentication for the API is handled through Cognito.
The API allows to change user settings, but it also stores events of the user, like "game started" and "solved math challenges" and all information related to a math challenge.
The frontend of the application is hosted on CloudFront and S3 and is written in Flutter. It uses Amplify Flutter as a library to access the backend services (like GraphQL and Cognito). Potentially you can get some help from this example for the animations: https://github.com/flutter/games/tree/main/templates/endless_runner
The Flutter application supports the platforms iOS, Android and Web.
Both backend and frontend contain everything that they need to work - so both include infrastructure as code.
## CI/CD
The game is deployed using Github Actions. It has dependabot activated for both backend and frontend.
It has two different pipelines, one that builds & deploys the Frontend and is only triggered on commits for the frontend directory. The other pipeline builds and deploys the Backend application.
This worked out pretty well and after a few usages of Amazon Q developer, the manual set up of the permissions to the AWS Account using OIDC and ... some iterations on wrong code, always using Amazon Q developer to triage & solve the issues, the first version of the game was up and running.
In total it took me less than 5 hours to get the initial version up and running.
Architecture diagrams
As already mentioned we use only serverless AWS services as part of this game right now:

Route53 is used for DNS managemnt, Amplify is only used in the code - using Amplify Flutter.
Additional personal challenges
I've been trying to get something into the App Stores (Play Store, iOS) since 2022 and with this challenge I really wanted to make this work this time.
For that, I wanted to use Flutter and especially Amplify Flutter. And yes, I did it! ;)
I also wanted to cover multiple languages - especially languages that I can't speak - so I used Amazon Q Developer to generate the translations!
Used technologies and tools
As already mentioned I used Flutter (so Dart) as programming languages.
And of course some yaml for the Github Actions :-)
I am using Github Actions for the CI/CD process for the complete application including the "Web" hosting.
The iOS and Android applications are build and pushed to the app stores using Codemagic (which by the way also runs on AWS).
Gameplay!
The gameplay is pretty simple!
The user signs in using Cognito (or creates an account), then he selects the difficulty...

Afterwards, he gets the math challenge to solve and three different options:

These options move from the left to the right so the user needs to select the right item :-)
At the end, the user is presented with the results of his play:

and he has the optionto now start again or change the difficulty.
At any time the user has the option to change the language of the game:

Why is this a great submission for this challenge?
This is an amazing submission, of course, because:
- it solves a problem someone in my family had ("What should kids do that finished their assignments in school early?")
- it forced me to build and learn Flutter - something I had on my bucket list for a while
- it forced me to look at how to set up iOS App Store Connect and Google Play Store adminitration
- I learned a lot :-)
Not yet good enough for being used in schools :-)
I need to acknowledge that this is not yet "good enough" to be used at schools :-)
There's a few things that I have in my head that I want to add:
- a leaderboard
- the option to play without an account
- better graphics
- availability in the app stores for real and not only through testing channels
And when all of that is done, I will need to add business functionalities like:
- groups of players
- teacher log in
...and a lot of other things :-)
I'd love to hear your thoughts and feedback - is this work investing further?
Built With
- amazon-web-services
- appsync
- flutter
- graphql
Log in or sign up for Devpost to join the conversation.