Inspiration
Our inspiration for the project is to flatten the curve of dementia rates by creating a memory app that offers personalized mini games. Through our research, we discovered that existing solutions to this problem are very expensive and cannot be personalized for the target user. Kioku users can upload their own pictures, increasing the likelihood that loved ones retain memories of family and friends for longer.
What it does
Kioku’s goal is simple, slow memory loss in people suffering from dementia. Kioku accomplishes this mission by inviting users to play simple minigames that challenge basic memory and repetition skills such as flash cards, term matching, and jigsaw puzzle solving. These minigames were based on real products we saw when researching current solutions to slow dementia, but our platform is better for three key reasons: one, it’s free to use, which is comparably significantly less than the $75.00 13 piece puzzles we found online; two, Kioku is online so it is accessible by anyone with an internet connection; three, Kioku is designed to be customized to each person. Patients don’t remember the name of every anime, rather they remember their family and other important things to them.
How we built it
Kioku is built on Typescript with SvelteKit for the frontend and Python with FastAPI for the backend. Kioku is deployed automatically using Google Cloud Build and is automatically deployed to Google Cloud Run which runs our Docker images in an auto scaling environment. For data storage, we utilize Google Cloud Storage for files and Google Cloud SQL for our PostgreSQL database.
Challenges we ran into
One of our biggest challenges was the puzzle minigame. Specifically, the puzzle minigame retrieves an image as a blob from a cloud storage bucket, which it then needs to convert the singular image into puzzle pieces in the browser. At first, we attempted to do this in the DOM, using only CSS to size and crop the image. This method was very unreliable and often distorted the images beyond recognition, prompting us to switch to rendering the puzzle game on the browser’s canvas. This was originally also quite problematic, as drawing the image in pieces, separated, scaled, and centered was very challenging. When we finally got the image to draw in pieces, something else came as it always does, how can we place the pieces? We considered making them draggable as that seemed the most natural, but it turned out to be much more difficult than one would think at first. We settled on a system to click an image and then click the spot where it should move. However, this came with problems too: the canvas and DOM use different coordinate systems, so we had to design an algorithm that translates coordinates between the two systems.
Accomplishments that we're proud of
None of us were especially experienced in SvelteKit, yet we managed to build a beautiful, fully functioning web app in just 36 hours, not only learning the technology but also building an app with real use cases that will make real people’s lives better. This didn’t come for free, though. It was only by persevering th
What we learned
We learned a ton about SvelteKit, but especially about complex routing and interactive pages. We were barely about to make static routes when we first incurred a need for a dynamic route, this led to us using slugs. We then incurred a need for multiple dynamic pieces of one route which allows for our smooth transitions and REST-like architecture. We also had never made UI heavy interactive experiences, so we enjoyed the fun challenge of making flashcards and matching terms load from the database. We also learned a ton about Dementia and biotech. Who knew how prevalent technology is in biology these days, and technology is challenging diseases day after day in this fashion, so we will almost certainly see something pass through the biotech industry in the near future.
What's next for Kioku
For next steps in Kioku, we would love to add more types of content to upload and also just add more minigames in general. Adding more file types means that you could upload a video of your children’s first steps or a voice message of your dog barking in joy. One minigame that would be a great addition to have could be a word game that gets the words from a user-uploaded dictionary (similar to the matching game but in a different application).
Built With
- cloud
- fastapi
- google-cloud
- google-cloud-sql
- svelte


Log in or sign up for Devpost to join the conversation.