Wiring an ed-tech platform into Canvas LMS with Edlink
Full Stack Developer · JAKAPA · Remote · May 2023 - Jun 2025
JAKAPA is a social-emotional learning platform. To live inside teachers' existing workflows, it needed to connect to Canvas LMS so students could sign in once and reach JAKAPA without leaving the tools they already use. I built that integration end to end.
- Students sign in once from Canvas; no second account or password.
- Accounts are created automatically on first login.
- Rosters mirror into PostgreSQL on every login.
- Idempotent upserts: a re-sync never duplicates a student.
The problem
Before the integration, JAKAPA and Canvas were two separate worlds. Students had to manage a second login, teachers had no automated roster sync, and assigned activities weren't reachable from the LMS they lived in every day.
Keeping rostering and assignment data consistent between the two systems by hand wasn't viable. As usage grew, it needed to be automatic and reliable.
What I built
- 1
One login, no second password
I built a full-stack Edlink API integration linking JAKAPA's Angular platform to Canvas, so a student signs in once through Edlink and lands in JAKAPA straight from Canvas with no second account or password.
- 2
Automated enrollment
The integration automatically enrolls students based on Canvas rostering, removing the manual setup teachers previously had to do for every class.
- 3
Mirror rosters into Postgres
On each Edlink login I pull the user's enrollments and classes and mirror them into PostgreSQL as groups and memberships, with idempotent upserts (ON CONFLICT DO NOTHING) so a re-sync never duplicates a student, and teachers are promoted to leaders automatically.