Learning workflows · 1 min read
Synergy: content progression and scheduled integration
Synergy is a learning application from my Appon client work. Its NestJS backend connects course content, viewing records, tasks, and completion checks.
- My role
- Backend contribution within the Appon client work
- Project scope
- Client-owned application · private source
Result and scope
Backend contribution to connected learning-progress and integration workflows.
The main responsibilities in this workflow.
- External form data
- Mapping and scheduled imports
- Content / views / tasks / checks
- Progression queries
- Application response
Progression is a state problem
The backend models content, views, tasks, and task-check records separately. A processor uses viewing history, dates, and completion information to determine which content is available and which tasks apply. This is more specific than a generic list of lessons.
The useful distinction is between storing an action and interpreting progress. Recording that a learner viewed something does not by itself decide whether the next item should be available. The service combines those inputs according to the application's progression rules.
Mapping external data into application records
The application includes mapping classes, DTOs, repositories, and an external-form service. Imported records are converted into the application's content and task models, including references between them.
This is integration work as well as API work. The application needs to preserve the relationship between an external record and its local representation, rather than treating each incoming field as an unrelated value.
Scheduled refresh and application queries
The processor contains scheduled import work, while service methods retrieve open content, future content, and relevant tasks. NestJS provides the application structure and TypeORM supplies the repository/query layer.
Project notes
Backend contribution to a shared client application. Source is private; current service availability and learner outcomes are not measured here.