Inspiration
My gaming history was scattered across physical shelves, digital storefronts, screenshots, notes, and half-remembered playthroughs. I wanted one calm, personal place that treated games as experiences—not just items in a backlog. That idea became Nook: a personal gaming companion for discovering games, organizing a library, and remembering what you played, when you played it, and how it felt.
What it does
Nook lets players explore games, save them to their library, organize them into collections and smart collections, record ratings and notes, and track individual playthroughs—including games they completed or gave up on.
How I built it
I built Nook as a native iOS app using Swift 6 and SwiftUI, with a modern interface designed around Apple’s Liquid Glass principles. Game discovery and metadata come from IGDB through a secure Supabase Edge Function. The app uses SQLiteData for a fast, reactive, local-first database and CloudKit for private cross-device synchronization. Images are loaded and cached with Kingfisher. The data model separates replaceable game metadata from personal information such as status, ratings, collections, notes, and playthrough history. This keeps the experience responsive while protecting the information that matters most to the player.
Challenges I ran into
The hardest challenge was designing reliable synchronization. A game can have many platforms, releases, genres, collections, and playthroughs, so maintaining relationships across devices without duplicates or unnecessary cloud writes required careful schema design. Another challenge was combining remote IGDB results with local library state. Search and discovery needed to update instantly when a game was saved, edited, or removed while still remaining performant.
Accomplishments that I'm proud of
I’m especially proud that Nook already feels like a cohesive product rather than a collection of disconnected features. Discovery, library management, collections, ratings, notes, and playthrough tracking all work together around a reactive, local-first data model. Building a secure IGDB integration, designing reliable playthrough logic and synchronization, and creating a polished native SwiftUI experience within the hackathon timeframe were major accomplishments.
What I learned
Building Nook taught me that a great tracking app is not just a database with a polished interface. The underlying model must reflect how people actually experience their hobby. I learned how to design a local-first architecture, build reactive database-driven interfaces, work with a large third-party game API, and approach cloud synchronization as a core product feature rather than an afterthought. Most importantly, I learned to keep the experience focused: technology should disappear and leave players with a meaningful record of the games they love.
What's next for Nook
Next, I want to bring a social community to Nook: player profiles, activity feeds, reviews, shared collections, and the ability to follow friends and discover games through people with similar tastes. The goal is to make Nook more than a personal gaming journal—it should become a welcoming place where players can share their experiences, celebrate milestones, exchange recommendations, and connect through the games they love.
Built With
- cloudkit
- sqlitedata
- supabase
- swift
- swiftui
Log in or sign up for Devpost to join the conversation.