This is a collection of frequently asked questions about engineering at ClassDojo that we shared 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 Golang & 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
- 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 currently have ~20 teams of ~5-8 people each. Example teams:
- PayPlus team
- Teacher Growth team
- District Solutions team
- Communication team
- Tutor team
- Accounts team
- 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.
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.
Do we follow a software development methodology?