Ace Citizenship
Una aplicacion iOS gratuita que construi para ayudar a mi esposa a pasar su examen de ciudadania estadounidense.
Resumen
Cuando mi esposa comenzó a prepararse para su examen de naturalización estadounidense, no pude encontrar una aplicación de estudio que cumpliera con mis estándares. La mayoría estaban repletas de anuncios, utilizaban contenido obsoleto o ignoraban técnicas de aprendizaje comprobadas. Entonces construí uno.
Ace Citizenship cubre las 128 preguntas civicas oficiales de USCIS usando repeticion espaciada.
La aplicacion es y seguira siendo completamente gratuita. Sin anuncios, sin suscripciones.
La historia del origen
Construi Ace Citizenship para una audiencia de una persona: mi esposa.
Las aplicaciones existentes en el mercado fueron decepcionantes. Los anuncios intrusivos interrumpieron las sesiones de estudio. Los muros de pago de suscripción bloquearon el acceso a contenido esencial. El diseño parecía una ocurrencia tardía.
Sabía que podía hacerlo mejor. Así que diseñé, puse marca y diseñé toda la aplicación desde cero: un trabajo de amor que combinó mi experiencia en diseño de productos con mi pasión por crear software útil.
La aplicacion
Ace Citizenship ofrece una experiencia premium sin el precio premium. La interfaz es limpia, enfocada y respetuosa con tu tiempo.
Diseno visual
Cree un lenguaje visual 3D cohesivo - sonador, optimista, distintivamente americano.
Cada ilustracion fue generada en Midjourney usando prompts personalizados que he refinado en mas de 100,000 generaciones de imagenes.
Mas de mi arte generado por IA en dreamofelectric.com. dreamofelectric.com.
Repeticion espaciada
En el corazon de Ace Citizenship hay un algoritmo de repeticion espaciada que optimiza las sesiones de estudio.
Este enfoque basado en evidencia reduce dramaticamente el tiempo de estudio mientras mejora la retencion.
La aplicacion rastrea el progreso y se adapta a los patrones de aprendizaje individuales.
Aprendizaje personalizado
Algunas preguntas de USCIS tienen respuestas que dependen de tu situacion especifica.
Esta atencion al detalle significa que los usuarios aprenden la informacion exacta que necesitaran el dia del examen.
Implementacion tecnica
Construido completamente en SwiftUI para iOS, Ace Citizenship aprovecha al máximo los marcos modernos de Apple. La aplicación utiliza SwiftData para la persistencia local, lo que garantiza la sincronización del progreso entre dispositivos a través de iCloud sin necesidad de cuentas de usuario.
La arquitectura es mantenible y eficiente. El banco de preguntas se actualiza sin problemas cuando USCIS revisa su lista oficial y el motor de repetición espaciada se ejecuta completamente en el dispositivo para obtener comentarios instantáneos.
Seguir las Human Interface Guidelines de Apple asegura que la aplicacion se sienta nativa.
Bajo el capo
Algunos patrones interesantes del codigo que hacen la aplicacion efectiva.
Algoritmo de repeticion espaciada
El motor de aprendizaje principal prioriza las preguntas con las que tienes dificultades.
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))
}
Personalizacion especifica del estado
La aplicacion mantiene una base de datos de los 50 estados mas territorios.
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
]
Temas type-safe
El sistema de temas usa la caracteristica KeyPath de Swift para seguridad en tiempo de compilacion.
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)
Ella paso
Mi esposa uso Ace Citizenship para prepararse para su examen de naturalizacion. Paso.
Ese momento hizo que cada hora de desarrollo valiera la pena.
Ayudando a otros
Después del éxito de mi esposa, publiqué Ace Citizenship en la App Store. Obtuvo una calificación de 5 estrellas y los usuarios informan constantemente que la aplicación les ayudó a aprobar su examen de ciudadanía.
Un usuario escribio: "Use esta aplicacion para practicar 30 minutos al dia durante un mes y pase!"
La aplicacion continua ayudando a inmigrantes a alcanzar su meta de convertirse en ciudadanos estadounidenses.
Agradecimientos
Ace Citizenship representa lo que amo de construir software.
Este proyecto me permitio trabajar a traves de todo el ciclo de vida del producto.
La aplicación es y seguirá siendo gratuita. Porque algunas cosas, como ayudar a las personas a convertirse en ciudadanos del país que han elegido llamar hogar, son más importantes que los ingresos.