Ace Citizenship
Une application iOS gratuite que j'ai construite pour aider ma femme a reussir son test de citoyennete americaine.
Resume
Lorsque ma femme a commencé à préparer son test de naturalisation aux États-Unis, je n’ai pas trouvé d’application d’étude répondant à mes critères. La plupart étaient encombrés de publicités, utilisaient du contenu obsolète ou ignoraient des techniques d’apprentissage éprouvées. J'en ai donc construit un.
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 marché étaient décevantes. Des publicités intrusives ont interrompu les séances d'étude. Les paywalls d’abonnement bloquaient l’accès au contenu essentiel. Le design semblait être une réflexion après coup.
Je savais que je pouvais faire mieux. J'ai donc conçu, marqué et développé l'intégralité de l'application à partir de zéro - un travail d'amour qui combinait mon expérience en conception de produits avec ma passion pour la création de logiciels utiles.
L'application
Ace Citizenship offre une experience premium sans le prix premium. L'interface est propre, concentree et respecte votre temps.
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.
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.
Implementation technique
Construit entièrement dans SwiftUI pour iOS, Ace Citizenship tire pleinement parti des frameworks modernes d'Apple. L'application utilise SwiftData pour la persistance locale, garantissant la synchronisation des progrès sur tous les appareils via iCloud sans nécessiter de comptes d'utilisateurs.
L'architecture est maintenable et efficace. La banque de questions se met à jour de manière transparente lorsque l'USCIS révise sa liste officielle, et le moteur de répétition espacée fonctionne entièrement sur l'appareil pour un retour instantané.
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.
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.
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.
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.
Aider les autres
Après le succès de ma femme, j'ai publié Ace Citizenship sur l'App Store. Elle a obtenu une note de 5 étoiles et les utilisateurs déclarent systématiquement que l'application les a aidés à réussir leur test de citoyenneté.
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. Parce que certaines choses – comme aider les gens à devenir citoyens du pays qu’ils ont choisi de vivre – sont plus importantes que les revenus.