Ace Citizenship

Une application iOS gratuite que j'ai construite pour aider ma femme a reussir son test de citoyennete americaine.

Ace Citizenship app interface

Resume

Quand ma femme a commence a preparer son test de naturalisation americaine, je n'ai pas trouve d'application d'etude repondant a mes standards.

Ace Citizenship couvre les 128 questions civiques officielles USCIS en utilisant la repetition espacee.

L'application est et restera completement gratuite. Pas de publicites, pas d'abonnements.

L'histoire des origines

J'ai construit Ace Citizenship pour un public d'une seule personne : ma femme.

Les applications existantes sur le marche etaient decevantes.

Je savais que je pouvais faire mieux.

L'application

Ace Citizenship offre une experience premium sans le prix premium. L'interface est propre, concentree et respecte votre temps.

Welcome screen
Quiz interface
Completion screen
Settings screen

Design visuel

J'ai cree un langage visuel 3D coherent - reveur, optimiste, distinctement americain.

Chaque illustration a ete generee dans Midjourney en utilisant des prompts personnalises que j'ai affines sur plus de 100 000 generations d'images.

Plus de mon art genere par IA sur dreamofelectric.com. dreamofelectric.com.

3D flag
3D Capitol
3D States map

Repetition espacee

Au coeur d'Ace Citizenship se trouve un algorithme de repetition espacee qui optimise les sessions d'etude.

Cette approche basee sur les preuves reduit considerablement le temps d'etude tout en ameliorant la retention.

L'application suit les progres et s'adapte aux patterns d'apprentissage individuels.

Apprentissage personnalise

Certaines questions USCIS ont des reponses qui dependent de votre situation specifique.

Cette attention aux details signifie que les utilisateurs apprennent les informations exactes dont ils auront besoin le jour du test.

USCIS questions reference

Implementation technique

Entierement construit en SwiftUI pour iOS, Ace Citizenship tire pleinement parti des frameworks modernes d'Apple.

L'architecture est maintenable et efficace.

Suivre les Human Interface Guidelines d'Apple garantit que l'application se sent native.

Sous le capot

Quelques patterns interessants du codebase qui rendent l'application efficace.

Algorithme de repetition espacee

Le moteur d'apprentissage principal priorise les questions avec lesquelles vous avez des difficultes.

Flashcards.swift
func completeCard(correct: Bool) {
    if !currentSet.isEmpty {
        let card = currentSet.removeFirst()
        remainingCards -= 1

        if correct {
            cards.append(card)  // Back to main deck
        } else {
            incorrectCards.append(card)  // Priority requeue
        }
    }
}

func prepareNextSet() {
    // Prioritize missed questions in next round
    let incorrectCount = min(incorrectCards.count, 10)
    let newCardsCount = 10 - incorrectCount

    currentSet = Array(incorrectCards.prefix(incorrectCount))
    incorrectCards.removeFirst(incorrectCount)
    currentSet += Array(cards.prefix(newCardsCount))
}

Personnalisation specifique a l'etat

L'application maintient une base de donnees de tous les 50 etats plus les territoires.

Questions.swift
struct StateInfo {
    let name: String
    let senators: [String]
    let governor: String
    let capital: String
}

// Updated for 119th Congress (January 2025)
let stateInformation: [String: StateInfo] = [
    "California": StateInfo(
        name: "California",
        senators: ["Adam Schiff", "Alex Padilla"],
        governor: "Gavin Newsom",
        capital: "Sacramento"
    ),
    // ... all 50 states + territories
]

Theming type-safe

Le systeme de theming utilise la fonctionnalite KeyPath de Swift pour la securite a la compilation.

Theme.swift
struct Theme {
    struct ColorSet {
        let background: Color
        let surface: Color
        let onBackground: Color
        let blue: Color
        let green: Color
        let red: Color
    }

    static func color(
        _ keyPath: KeyPath<ColorSet, Color>,
        for colorScheme: ColorScheme
    ) -> Color {
        let colorSet = colorScheme == .dark
            ? darkMode
            : lightMode
        return colorSet[keyPath: keyPath]
    }
}

// Usage: Theme.color(\.blue, for: colorScheme)

Elle a reussi

Ma femme a utilise Ace Citizenship pour preparer son test de naturalisation. Elle a reussi.

Ce moment a rendu chaque heure de developpement utile.

Citizenship ceremony materials
Le serment d'allegeance
Naturalization ceremony
Aujourd'hui, je suis Americaine

Aider les autres

Apres le succes de ma femme, j'ai publie Ace Citizenship sur l'App Store. Il a obtenu une note de 5 etoiles.

Un utilisateur a ecrit : "J'ai utilise cette application pour m'entrainer 30 minutes par jour pendant un mois et j'ai reussi !"

L'application continue d'aider les immigrants a atteindre leur objectif de devenir citoyens americains.

Remerciements

Ace Citizenship represente ce que j'aime dans la creation de logiciels.

Ce projet m'a permis de travailler sur l'ensemble du cycle de vie du produit.

L'application est et restera gratuite.

Telecharger sur l'App Store →