Inspiration
Most study tools stop after creating content. They can generate flashcards, quizzes, or summaries, but real classroom learning requires more than content creation. Teachers need to understand which students are struggling, where the shared knowledge gaps are, and what support should happen next.
AIFlashCard began as a WeChat Mini Program that turns learning materials into structured flashcards and review plans for individual learners. Before OpenAI Build Week, the product already supported personal card creation, review workflows, learning plans, progress tracking, and multilingual interfaces.
During Build Week, I asked a larger question:
How can one shared classroom goal produce private, personalized learning paths for every student?
That question led us to build AIFlashCard Classroom Learning: a new classroom domain that enables teachers to organize learners around a common objective while preserving each student’s independent progress, review history, and learning assets.
My guiding principle became:
One class goal. Private student progress. Targeted teacher support.
What it does
AIFlashCard Classroom Learning adds a complete teacher-to-student classroom workflow to the existing AIFlashCard product.
A teacher can:
- create a class and define its learning goal;
- choose how students join;
- generate a WeChat invitation or class code;
- approve and manage classroom members;
- create a learning project from an existing flashcard group;
- publish a versioned project to the class;
- provide every student with a separate assignment and personal review group;
- view classroom-level completion and learning insights; and
- preview and publish targeted interventions to selected learners.
Students can:
- open an invitation and review the class details;
- request access or join directly, depending on the enrollment policy;
- receive their own assignment for a shared class project;
- continue learning through AIFlashCard’s existing Review workflow;
- maintain independent progress, mastery, review history, and personal settings; and
- receive targeted reinforcement tasks when additional support is needed.
Students in the same class may study the same source material, but they never share the same learning-state record. Each learner receives a separate review group owned by that student.
Joining a class also does not overwrite the learner’s personal study mode, exam date, current subject, or existing flashcard groups.
How I built it
AIFlashCard is implemented as a WeChat Mini Program with Tencent Cloud services.
The new classroom functionality was built as an independent subpackage:
miniprogram/pkg_classroom
This keeps the classroom domain separate from the main application package and prevents users who do not use classroom features from paying the full loading cost.
The classroom client is organized around three domain services:
ClassroomActionCenterClassroomQueryCenterClassroomReadModel
Pages do not directly access the database or call classroom cloud operations independently. Requests are routed through the client domain services into one consolidated cloud-function boundary:
cloudfunctions/classroomGateway
The gateway handles:
- server-side authorization;
- action routing;
- input validation;
- idempotent writes;
- classroom membership checks;
- assignment provisioning;
- project publication;
- classroom insight aggregation;
- intervention publication; and
- structured logging.
Classroom data is stored in versioned collections, including classes, members, invitations, projects, artifacts, attempts, and assignments.
Published learning projects use immutable content snapshots. If a teacher later changes the original flashcard group, the already-published student assignment does not silently change. A new project version must be created instead.
When a project is published, the system provisions a separate assignment and personal review group for each student. The cards belong to the student, and previous teacher-side review state—such as mastery, review history, due dates, or starred status—is not copied.
The project reuses AIFlashCard’s existing Review workflow instead of creating a second review engine.
Codex powered by GPT-5.6 Sol was used as the primary engineering agent for the Build Week extension. It helped us:
- analyze the existing architecture and engineering guardrails;
- design the classroom domain and data model;
- create the independent
pkg_classroomsubpackage; - implement the P0-0 through P0-5 workflow;
- consolidate server logic into
classroomGateway; - design authorization and idempotency controls;
- integrate classroom assignments with the existing Review workflow;
- create permission, isolation, schema, and planner tests; and
- run syntax, dependency, package, and regression audits.
The production WeChat Mini Program serves users in mainland China and therefore does not depend on the OpenAI API at runtime. GPT-5.6 Sol was meaningfully used through Codex for architecture, implementation, testing, auditing, and validation.
Primary Codex Build Session:
019f6100-da49-7ca0-8e91-d06fcb69677a
Primary Build Week Implementation Commit:
33ffa1e96573cc25e335c2792a9dd1615ab56320
Challenges I ran into
The biggest challenge was adding a classroom system without creating a second learning product inside AIFlashCard.
The existing application already had mature centers for users, subjects, learning assets, review metrics, cache invalidation, and snapshot consistency. The new classroom domain needed to reuse those capabilities without bypassing them or introducing competing sources of truth.
Another major challenge was protecting personal learning context. Joining a class must not overwrite a student’s existing study goal, subject, exam date, or active card group. I solved this by introducing explicit classroom, project, assignment, and personal-group scopes.
Network retries also created a risk of duplicate members, duplicate assignments, duplicate student groups, or repeated interventions. I addressed this with deterministic identifiers, mutation IDs, operation IDs, and idempotent server-side writes.
Published content required another important decision. If classroom assignments referenced a teacher’s live card group, later edits could unexpectedly change work already assigned to students. I therefore introduced immutable project versions and source-content digests.
Privacy and authorization were also central challenges. Client-supplied roles or user identifiers cannot be trusted. Every protected action is authorized on the server using the authenticated WeChat identity and the stored classroom membership relationship.
Finally, the classroom module had to remain small enough for the WeChat Mini Program package model. I isolated it in pkg_classroom and reused the existing Review flow instead of duplicating large shared functionality.
Accomplishments that we're proud of
I am proud that the Build Week work is not a standalone prototype. It is a substantial extension integrated into an existing, working learning product.
During the submission period, I completed:
- an independent classroom-learning subpackage;
- class creation, invitations, enrollment, and approval;
- classroom membership and permission management;
- versioned learning projects;
- separate assignments and personal review groups for every student;
- integration with the existing Review workflow;
- classroom-level insights;
- targeted teacher interventions;
- a consolidated classroom cloud-function architecture;
- server-side authorization;
- idempotent mutation handling;
- immutable published project versions; and
- strict isolation of student learning assets.
I am especially proud that two students can work on the same classroom project while maintaining completely separate progress, mastery, review history, and learning records.
I also completed dedicated audits and tests for:
- classroom contracts;
- permission boundaries;
- transaction idempotency;
- student asset isolation;
- planner behavior;
- structured AI schemas;
- classroom insights and interventions;
- JavaScript and JSON parsing;
- dependency cycles; and
- full regression coverage.
The full Codex development session and corresponding Git commit are preserved as verifiable Build Week evidence.
What I learned
I learned that extending a mature product is often harder—and more valuable—than building an isolated demo.
The most important lesson was that personalization is not only about generating different content. It also requires protecting independent learning state, preserving ownership boundaries, and preventing one workflow from silently changing another.
I learned that classroom analytics should be designed around useful aggregation rather than unrestricted access to individual records. Teachers need actionable signals, such as completion, shared weak concepts, and students who may need support, without exposing unnecessary private learning details.
I also learned that idempotency is a product-quality requirement, not just a backend optimization. In a mobile environment with uncertain network conditions, every important write operation must be safe to retry.
Immutable project versions proved equally important. Teachers and students need confidence that an assignment will not change unexpectedly after publication.
Finally, Codex with GPT-5.6 Sol was most effective when treated as a long-horizon engineering collaborator rather than a one-shot code generator. The strongest results came from combining explicit architecture constraints, phased implementation goals, automated audits, and repeated regression checks.
What's next for AIFlashCard Classroom Learning
The next stage is to evolve Classroom Learning into a broader institution-ready platform.
Planned directions include:
- institution and school administration;
- multiple teachers and teaching assistants per class;
- richer cohort and longitudinal learning analytics;
- teacher collaboration and shared content libraries;
- larger-scale student import and enrollment tools;
- multilingual classroom projects across Simplified Chinese, Traditional Chinese, and English;
- more detailed intervention effectiveness tracking;
- additional assessment and content integrations;
- safer and more explainable AI-assisted teacher recommendations; and
- pilot deployments with real teachers and learning organizations.
My long-term goal is to help educators move from assigning the same material to every learner toward a model where the class shares one objective, each student follows a private learning path, and teachers receive timely, actionable support signals.
Built With
- cloud
- cloudbase
- codex
- deepseek
- edtech
- functions
- github
- gpt-5.6sol
- javascript
- mini
- node.js
- nosql
- program
- tencent
Log in or sign up for Devpost to join the conversation.