Ace Citizenship
Darmowa aplikacja na iOS, którą stworzyłem, aby pomóc mojej żonie zdać test na obywatelstwo USA. Zdała. Teraz pomaga innym spełnić to samo marzenie.
W skrócie
Kiedy moja żona zaczęła przygotowywać się do testu naturalizacyjnego w USA, nie mogłem znaleźć aplikacji do nauki spełniającej moje standardy. Większość była zaśmiecona reklamami, używała przestarzałych treści lub ignorowała sprawdzone techniki uczenia się. Więc zbudowałem własną.
Ace Citizenship obejmuje wszystkie 128 oficjalnych pytań obywatelskich USCIS, wykorzystując powtórzenia rozłożone w czasie — tę samą technikę, która sprawia, że Duolingo jest skuteczne. Moja żona używała jej do nauki, zdała test i została obywatelką amerykańską.
Aplikacja jest i pozostanie całkowicie bezpłatna. Bez reklam, bez subskrypcji, bez haczyka. Niektóre rzeczy są ważniejsze niż przychody.
Historia powstania
Zbudowałem Ace Citizenship dla jednej osoby: mojej żony. Musiała zdać test naturalizacyjny USCIS, a ja chciałem dać jej najlepsze możliwe narzędzie do sukcesu.
Istniejące aplikacje na rynku były rozczarowujące. Natrętne reklamy przerywały sesje nauki. Paywalle subskrypcyjne blokowały dostęp do istotnych treści. Design wyglądał jak dodatek.
Wiedziałem, że mogę zrobić to lepiej. Więc zaprojektowałem, stworzyłem branding i zbudowałem całą aplikację od podstaw — projekt z miłości, który połączył moje doświadczenie w projektowaniu produktów z pasją do tworzenia użytecznego oprogramowania.
Aplikacja
Ace Citizenship zapewnia wysoką jakość bez wygórowanej ceny. Interfejs jest przejrzysty, skoncentrowany i szanuje Twój czas.
Projekt wizualny
Stworzyłem spójny język wizualny 3D - marzycielski, optymistyczny, wyraźnie amerykański - który sprawia, że nauka jest mniej uciążliwa.
Każda ilustracja została wygenerowana w Midjourney przy użyciu niestandardowych promptów, które udoskonalałem przez ponad 100 000 generacji obrazów. Miękka paleta niebiesko-różowa wywołuje spokój, zachowując patriotyczne podteksty. To nie jest typowa estetyka aplikacji rządowej.
Więcej moich prac wygenerowanych przez AI na dreamofelectric.com. dreamofelectric.com.
Powtórki rozłożone w czasie
Sercem Ace Citizenship jest algorytm powtórek rozłożonych w czasie, który optymalizuje sesje nauki. Pytania, z którymi masz trudności, pojawiają się częściej, podczas gdy opanowany materiał przechodzi do dłuższych interwałów powtórek.
To podejście oparte na dowodach naukowych drastycznie skraca czas nauki, jednocześnie poprawiając zapamiętywanie. Zamiast bezmyślnie przeglądać wszystkie 128 pytań, użytkownicy koncentrują energię tam, gdzie to najważniejsze.
Aplikacja śledzi postępy i dostosowuje się do indywidualnych wzorców uczenia się, zapewniając spersonalizowane doświadczenie, które wydaje się inteligentne i responsywne.
Spersonalizowana nauka
Niektóre pytania USCIS mają odpowiedzi zależne od Twojej konkretnej sytuacji - stanu zamieszkania, przedstawicieli w Kongresie. Ace Citizenship personalizuje te pytania, aby odpowiadały Twoim rzeczywistym warunkom egzaminu.
Ta dbałość o szczegóły oznacza, że użytkownicy nie uczą się po prostu ogólnych odpowiedzi; uczą się dokładnych informacji, których będą potrzebować w dniu egzaminu.
Implementacja techniczna
Zbudowana całkowicie w SwiftUI dla iOS, Ace Citizenship w pełni wykorzystuje nowoczesne frameworki Apple. Aplikacja używa SwiftData do lokalnego przechowywania danych, zapewniając synchronizację postępów między urządzeniami przez iCloud bez konieczności zakładania konta.
Architektura jest łatwa w utrzymaniu i wydajna. Baza pytań aktualizuje się płynnie, gdy USCIS zmienia oficjalną listę, a silnik powtórek rozłożonych w czasie działa całkowicie na urządzeniu, zapewniając natychmiastową informację zwrotną.
Przestrzeganie wytycznych Apple Human Interface Guidelines sprawia, że aplikacja wygląda naturalnie i znajomo. Użytkownicy nie muszą uczyć się nowych wzorców interakcji - mogą skupić się wyłącznie na nauce.
Pod maską
Kilka interesujących wzorców z kodu źródłowego, które czynią aplikację skuteczną.
Algorytm powtórek rozłożonych w czasie
Główny silnik nauki priorytetyzuje pytania, z którymi masz trudności. Gdy odpowiesz niepoprawnie, ta karta trafia do osobnej kolejki, która jest mieszana z następną sesją nauki - zapewniając, że trudny materiał widzisz częściej, aż go opanujesz.
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))
}
Personalizacja według stanu
Aplikacja zawiera bazę danych wszystkich 50 stanów oraz terytoriów, zaktualizowaną dla obecnego 119. Kongresu. Gdy wybierzesz swój stan, pytania o senatorów, gubernatorów i stolice są personalizowane, aby odpowiadały Twoim rzeczywistym warunkom egzaminu.
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
]
Bezpieczne typowanie motywów
System motywów wykorzystuje funkcję KeyPath języka Swift dla bezpieczeństwa w czasie kompilacji. Zamiast wyszukiwania kolorów opartego na ciągach znaków, które może zawieść po cichu, każdy dostęp do koloru jest weryfikowany przez kompilator.
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)
Zdała egzamin
Moja żona używała Ace Citizenship do przygotowania się do egzaminu naturalizacyjnego. Zdała. Dziś jest obywatelką amerykańską.
Ta chwila - stojąc razem w biurze USCIS, gdy trzymała certyfikat naturalizacji - sprawiła, że każda godzina pracy nad aplikacją była tego warta. Aplikacja zadziałała dokładnie tak, jak zamierzałem.
Pomaganie innym
Po sukcesie mojej żony opublikowałem Ace Citizenship w App Store. Aplikacja zdobyła ocenę 5 gwiazdek, a użytkownicy konsekwentnie donoszą, że pomogła im zdać egzamin na obywatelstwo.
Jeden użytkownik napisał: „Używałem tej aplikacji do ćwiczeń przez 30 minut dziennie przez miesiąc i zdałem!" Historie takie jak ta przypominają mi, dlaczego tworzę oprogramowanie - aby rozwiązywać prawdziwe problemy prawdziwych ludzi.
Aplikacja nadal pomaga imigrantom osiągnąć cel zostania obywatelami USA, jedna sesja nauki na raz. To najbardziej osobiście znaczący projekt, jaki kiedykolwiek wypuściłem.
Podziękowania
Ace Citizenship reprezentuje to, co kocham w tworzeniu oprogramowania: rozwiązywanie prawdziwego problemu dla kogoś, na kim mi zależy, a następnie dzielenie się tym rozwiązaniem ze światem.
Ten projekt pozwolił mi pracować przez cały cykl życia produktu - od zidentyfikowania potrzeby, przez zaprojektowanie doświadczenia, po napisanie każdej linii kodu. To czysta ekspresja mojego rzemiosła.
Aplikacja jest i pozostanie bezpłatna. Ponieważ niektóre rzeczy - jak pomaganie ludziom w zostaniu obywatelami kraju, który wybrali jako swój dom - są ważniejsze niż przychody.