Sobre el proyecto
Amgi (en coreano, "memorización") es un cliente de flashcards de código abierto, compatible con Anki y que prioriza el funcionamiento sin conexión, para iOS, con una aplicación complementaria para watchOS. En lugar de reimplementar la lógica de Anki, envuelve el backend oficial de Rust de ankitects/anki mediante C FFI, de modo que la programación, las plantillas de tarjetas, la búsqueda, la importación/exportación, las estadísticas y la sincronización se ejecutan en el mismo motor que usan Anki Desktop y AnkiDroid.
Capacidades principales descritas en el README:
- Funcionamiento sin conexión como prioridad: la aplicación funciona sin conexión de red y se sincroniza cuando hay una disponible.
- Sincronización con cualquier servidor compatible, incluido AnkiWeb o un servidor de sincronización autoalojado, con una fusión segura cuando las colecciones divergen.
- Programación FSRS, además de un simulador FSRS por mazo.
- Un lector EPUB integrado con búsqueda en diccionario sin conexión compatible con Yomitan, pensado para permitir a los usuarios crear tarjetas a partir de lo que leen.
- Funciones avanzadas como oclusión de imágenes, plantillas de tarjetas, búsqueda de Anki con chips de filtro por mazo y etiqueta, y estadísticas que incluyen rachas y una previsión de tarjetas pendientes futuras.
- Más allá del teléfono: widgets de pantalla de inicio, una aplicación para Apple Watch que ejecuta el motor en el dispositivo y acciones de Shortcuts/Siri.
Arquitectura: los módulos de funciones de SwiftUI se sitúan por encima de clientes de inyección de dependencias, fachadas de servicio, solicitudes protobuf tipadas, un envoltorio Swift alrededor del backend, una costura C FFI de cuatro funciones y, finalmente, el framework dinámico de Rust. Swift es dueño de la interfaz de usuario; Rust es dueño de la base de datos (SQLite), la sincronización, la programación, las plantillas, la búsqueda, la importación/exportación y las estadísticas. La serialización utiliza Protocol Buffers con 25 definiciones de servicios .proto.
Pila tecnológica: Swift 6.2 con concurrencia estricta (modo de lenguaje v6), swift-dependencies para inyección, SPM para módulos de biblioteca y funciones, y xcodegen para los objetivos de la aplicación, el widget y el watch. El soporte EPUB incorpora EPUBKit (MIT) y utiliza hoshidicts para los diccionarios Yomitan.
La compilación requiere Xcode 26, Rust (estable y nightly, este último para la variante de watchOS), protoc y xcodegen. El proyecto se genera en lugar de estar versionado; el README proporciona comandos para compilar el xcframework de Rust, generar los tipos Swift de protobuf y generar el proyecto Xcode. La documentación cubre funciones, compilación, arquitectura, el puente de Rust, flujos de datos y estilo de código.
Licencia: AGPL-3.0, porque incorpora ankitects/anki, que también es AGPL-3.0. El README señala que distribuir el software o ejecutarlo como servicio de red requiere poner a disposición el código fuente completo bajo la misma licencia. Las contribuciones son bienvenidas a través de CONTRIBUTING.md, y el README da crédito al proyecto Anki, a un fork anterior que aportó trabajo de oclusión de imágenes y temas, a AnkiDroid por el patrón de puente móvil de Rust y a Point-Free por swift-dependencies.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.