This project began as a proof of concept to validate the use of AI for generating dynamic language-learning exercises. While the initial version was built with Swift, I transitioned to React Native to support a wider range of platforms.
In 2024, the project evolved from a personal tool into a formal research initiative. In collaboration with my fiancée, the app was rebuilt for a master’s degree capstone study on the effectiveness of microlearning for adult Spanish learners. This research version is available in the App Store and Play Store.
More recently, we added English lessons to help learners study for the U.S. Naturalization Test and obtain their citizenship. This marks the first step in the app’s next evolution: using AI to create a truly personalized learning journey. The upcoming version generates a curriculum tailored to each learner’s unique goals and interests, continuously assesses fluency, and adapts to their progress.
Key Takeaway
Every application contains a state machine—either an explicit, well-defined one, or an ad hoc, implicit one scattered across the codebase.
My initial choice for state management, Zustand, worked well for managing state but offered no structure for organizing event logic and business rules. Adopting XState allowed me to model all application logic as finite state machines. This approach has completely changed how I build apps.
Tools (16)
AWS Amplify is a comprehensive development platform from Amazon Web Services that enables developers to quickly build, deploy, and manage scalable full-stack web and mobile applications. It provides a set of libraries, UI components and a command-line interface for integrating popular front-end frameworks (React, Angular, Vue, iOS, Android, Flutter) with cloud backends, including authentication, GraphQL and REST APIs, storage, and serverless functions. Amplify Studio offers a visual development environment for designing UI and data models, while built-in hosting, CI/CD and environment management streamline the application lifecycle so teams can focus on features instead of infrastructure.
Azure AI is a suite of cloud-based services and APIs for integrating AI capabilities—such as computer vision, speech processing, natural language understanding and decision-making—into applications. It’s commonly used for image and text analysis, speech-to-text and translation, and building conversational agents, with seamless integration into Azure’s infrastructure for scalable deployment and management.
Docker is an open-source platform for developing, shipping, and running applications. It uses container technology to package applications into isolated, lightweight, and portable containers that can be quickly deployed and moved between different computing environments. Docker also provides a set of tools and services to help developers build, ship, and run applications in a more efficient and secure way.
Amazon Elastic Compute Cloud (EC2) is a web service that provides secure, resizable compute capacity in the cloud. It is designed to make web-scale cloud computing easier for developers. EC2 allows users to launch virtual servers, called “instances”, which can be configured to their specific needs. EC2 also provides users with the ability to scale their computing resources up or down as needed, allowing them to pay only for the resources they use.
Amazon Elastic Container Registry (ECR) is a fully-managed Docker container registry that makes it easy to store, manage, and deploy Docker container images. It is secure, highly available, and scales automatically to meet the needs of your applications. ECR integrates with Amazon Elastic Container Service (ECS) and AWS Fargate, simplifying your development to production workflow. It also provides features such as image scanning, lifecycle policies, and IAM authentication.
Amazon Elastic Container Service (ECS) is a container orchestration service from Amazon Web Services (AWS) that enables users to easily deploy, manage, and scale containerized applications on AWS. It provides a secure and scalable platform for running Docker containers, allowing users to quickly and easily deploy and manage applications in the cloud. ECS also provides features such as automated container scaling, service discovery, and resource management.
Expo is an open-source platform and toolchain built around React Native that lets developers write modern JavaScript or TypeScript to produce fully native iOS, Android and web apps without configuring Xcode or Android Studio. It provides a comprehensive SDK of prebuilt, cross-platform APIs (camera, sensors, notifications, maps, file system, etc.), a command-line interface for project scaffolding and local testing, and cloud services for building binaries, over-the-air updates, push-notification delivery and app store publishing. By abstracting away much of the native configuration—while still allowing “ejecting” to integrate custom native modules—Expo accelerates development, simplifies maintenance and lowers the barrier to entry for mobile-first teams.
Fargate is an Amazon Web Services (AWS) technology that allows users to deploy and manage containers without having to manage the underlying infrastructure. It provides a serverless compute engine for containers that eliminates the need to provision, configure, and scale clusters of virtual machines. Fargate also provides a secure and reliable platform for running containers, allowing users to focus on building and running their applications, rather than managing the underlying infrastructure.
AWS Identity and Access Management (IAM) is a web service that helps you securely control access to AWS resources. With IAM, you can create and manage AWS users and groups, and use permissions to allow and deny their access to AWS resources. IAM also enables you to create and manage security credentials such as access keys, passwords, and multi-factor authentication devices. You can use IAM to manage access to AWS services such as Amazon EC2, Amazon S3, and Amazon RDS.
Node.js is an open-source, cross-platform JavaScript runtime environment that executes JavaScript code outside of a browser. It is used to create server-side and networking applications. Node.js applications are written in JavaScript and can be run within the Node.js runtime on OS X, Microsoft Windows, and Linux. Node.js also provides a rich library of various JavaScript modules which simplifies the development of web applications using Node.js.
OpenAI provides a suite of AI development tools and APIs built on large-scale machine learning models for natural language understanding, generation and reinforcement learning. It’s commonly used to integrate text generation, code completion, summarization, translation and conversational agents into applications.
React Native is an open-source framework developed by Facebook that enables developers to build mobile apps for iOS and Android using JavaScript and React. Instead of rendering web views, React Native translates UI components into native platform widgets, delivering near-native performance and look-and-feel. Its component-based architecture and one-way data flow mirror React for the web, making it easy for JavaScript developers to pick up. Features like hot reloading accelerate the development cycle by instantly reflecting code changes on the device. A rich ecosystem of libraries and a large community contribute reusable modules and plugins, simplifying access to native device features (camera, geolocation, sensors) without writing platform-specific code. By sharing logic and UI components across platforms, React Native significantly reduces development time and maintenance overhead compared to traditional native app development.
Amazon Simple Storage Service (S3) is a cloud storage service offered by Amazon Web Services (AWS). It provides object storage through a web service interface and is designed to store and retrieve any amount of data from anywhere on the web. It is highly scalable, secure, and durable, and provides features such as data versioning, encryption, and access control. S3 is used by many organizations for storing and backing up data, hosting websites, and streaming media.
Amazon Simple Queue Service (SQS) is a fully managed message queuing service that enables applications to quickly and reliably queue messages that one component of an application can later process. SQS eliminates the complexity and overhead associated with managing and operating message-oriented middleware, and provides a simple and cost-effective way to decouple the components of an application. SQS offers a reliable, highly-scalable, hosted queue for storing messages as they travel between computers. It also provides a simple web services interface that can be used to access queues, add, receive, and delete messages.
Amazon Virtual Private Cloud (VPC) is a cloud computing service that provides users with a virtual private cloud, allowing them to provision a logically isolated section of the Amazon Web Services (AWS) cloud. It provides users with complete control over their virtual networking environment, including selection of their own IP address range, creation of subnets, and configuration of route tables and network gateways. It also provides users with the ability to securely connect their VPC to their existing IT infrastructure using industry-standard encrypted IPsec VPN connections.
XState is a JavaScript/TypeScript library for modeling application logic as finite state machines and hierarchical statecharts, enabling developers to define states, transitions, guards, actions, and invoked services declaratively. With built-in support for parallel and history states, runtime interpreters, visualizers, and integrations for React, Vue, Angular, and Node.js, XState delivers predictable, testable, and maintainable state management for complex synchronous and asynchronous workflows.