This is a collection of frequently asked questions about engineering at ClassDojo that we share with candidates as a way to both cover recurring topics and to encourage questions.
What’s the stack at ClassDojo?
- Web frontend: React / TypeScript
- Backend: A “majestic monolith” JSON/HTTP API server written in Node.js/TypeScript (our framework is mostly homegrown, based on koa). Teams generally have clear ownership of different parts of the API.
- Other services: We use Node.js for services that don’t make sense in the monolith (like cpu-intensive things, or things that need to go behind a queue). We do not default to separate services or micro-services though.
- Platform: AWS (Terraform, Pulumi, EKS (K8s), Vault, NATS)
- Databases: MySQL/Aurora, PlanetScale, Mongo (though we’re migrating away), Redis
- iOS: Swift (iOS 15+, UIKit, SwiftUI, CoreData)
- Android: React Native, which lets more engineers contribute to our Android apps.
- Dojo Islands Game: We have a custom game engine that uses Playcanvas on WebGL as the base. We also have an internal Editor to author content that goes into the game built and use services like AWS Lambda, GameLift and Colyseus for managing game server and multiplayer services.
How are we organized?
- We have around 100 engineers, working in cross-functional teams of ~5-8 people each. Example teams:
- Plus team, which owns the Plus subscription and payments
- Teacher Growth team, which owns teacher signup and retention
- District Solutions team, which owns district and school features
- Communication team, which owns messaging
- Tutor team, which owns Dojo Tutor
- Accounts team, which owns identity and account management
- Cloud Platform team, which owns our underlying cloud infrastructure
- Notifications team, which owns the infrastructure for push notifications, email and SMS
- Our teams do change over time as we grow or move in different directions as a company
- The teams are cross-functional with each team usually having
- Full-stack developers
- Mobile developers
- UX designer
- Product manager
- Data scientist
- For the Dojo Islands Game, we are organized into 2 gameplay teams, an engine team and a platform team, with most engineers taking on generalist roles working across the full stack.
How do we use AI in engineering?
A lot! We encourage the use of local and remote agents, and are continuously exploring and deploying new AI powered tools and practices. Most engineers here work with Claude Code, Codex, or Cursor, and using them is expected rather than optional.
We found that our engineering practices fit agentic workflows very well, and have doubled down on many of the things we’ve been doing for years already such as CI/CD, test automation, and observability.
This is of course a fast moving area, and we try to be balanced and not to forget the values that have made us successful so far as an engineering org as we adopt new ways of working. In practice that means more throughput and more ambitious refactors, which puts more weight on collaborating upfront on design and on finding the next bottleneck.
Do we follow a software development methodology?