Skip to main content

Introduction for Developers

Pupilfirst LMS is a Ruby on Rails application. Rails follows a doctrine of convention over configuration, and Pupilfirst LMS sticks to the convention in most cases. However, it does differ from the standard in a few ways:

ReScript & React

ReScript is our language of choice for writing front-end code. ReScript also offers first-class bindings for ReactJS and is used to build front-end components.


Since ReScript is strongly-typed, GraphQL is a great fit. Pupilfirst LMS uses the graphql-ruby library on the server, and graphql_ppx for client-side code, to offer safe & simple API communication.

Service Objects

You'll find most business logic in classes in the app/services directory. Traditional Rails applications tend to have "fat models and skinny controllers". However, the use of service objects allows all parts of the application to stay reasonably lean, and to have one clear purpose.