Skip to main content

Introduction

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.

GraphQL API#

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.