All projects
// qvnt.swift

Qvnt

Designer & iOS EngineerSelf-initiated2026App Store
SwiftSwiftUISwiftData@ObservableiOS 17
QVNT CUVÂNTCARTECOVORCUVNT
// overview.md

The project, in plain words.

Qvnt is a daily word puzzle for iOS, built around the Romanian language. The name is “cuvânt” (Romanian for “word”) with the vowels removed — six guesses, one shared word each day. It's my first native iOS app, designed and shipped solo to the App Store as a free portfolio project.

The whole game runs offline. The daily word is chosen deterministically from a curated list using the calendar date as a seed, so every player sees the same puzzle without any backend. A separate validated dictionary of roughly 10,000 five-letter Romanian words backs the guess checker, and stats and streaks persist locally with SwiftData.

Romanian brings its own quirks — diacritics (ă, â, î, ș, ț) and a letter frequency that differs from English Wordle. The brand idea of 'missing letters' runs through the UI: a dashed terracotta slot marks the active row, and the win moment reveals QVNT → CUVÂNT. It's all SwiftUI with the @Observable model — no UIKit, no third-party state libraries.

// my-role.md

What I actually shipped.

  • Designed and built the entire app solo — gameplay, state model, persistence, theming, and the App Store submission.
  • Implemented a deterministic daily-word system seeded by the calendar date, so every player shares one puzzle with zero backend.
  • Built a Romanian word validator over a curated ~10K-word dictionary, handling diacritics and language-specific letter matching.
  • Architected game state with SwiftUI's @Observable and persisted stats, streaks and history locally using SwiftData.
  • Created the full visual identity — color system, IBM Plex typography, app icon set — plus a daltonist-friendly palette gated behind an accessibility toggle.
// technical-highlights.tsx

Three problems worth talking about.

// the interesting bits
// daily-word

One word, no server

The daily word is derived from the calendar date: a days-since-epoch index into a curated word list. Every player gets the same puzzle, the app works fully offline, and there's no backend to run or pay for.

seed = daysSince(epoch) → words[seed]
// romanian

Romanian, done right

Diacritics make Romanian matching non-trivial — â and î, ș and ț all carry meaning. The validator and the on-screen keyboard respect Romanian orthography instead of forcing an English alphabet onto a Romanian game.

CUVÂNT ≟ CUVANT · diacritic-aware
// state

Pure SwiftUI state

Game logic lives in a single @Observable model — no UIKit, no Combine. SwiftData handles stats, streaks and history. The result is a small, fast, dependency-light codebase that's easy to reason about.

@Observable final class Game
// results.tsx

What it added up to.

Guesses
6one word a day
Dictionary
10K+validated RO words
Backend
0fully offline
Platform
iOSSwiftUI · iOS 17+