Coursedog

Submit a Ticket My Tickets
Welcome
Login  Sign up

Coursedog Application Architecture

Our stack consists of our main Admin Application that is running Express.js server on the backend and a Vue.js-based JavaScript client application in the browser. Additionally we are running two Universal JavaScript applications using Nuxt.js (Node.js backend with client-side Vue.js Application) for our public Catalogs and Events services. Those connect with our main Admin Application through our REST API. We are also employing several functions-as-a-service services to handle very specific processes like schedule optimizations or PDF generation.


The application architecture separates concepts (e.g., user, course, building) from each other, and communication between them relies on a well-defined API to follow the separation of concerns design principle. It is deployed as one service. However, heavy-duty tasks, like PDF generation, optimizations, mailers, etc., have their own environments (e.g., in AWS Lambda) or are computed in a background worker.




Coursedog uses RESTful web services as the data transfer protocol between Coursedog and the SIS. Coursedog uses randomly generated session tokens to identify users, which are sent over HTTPS in every request so we can ensure that data is only accessible by users with the correct privileges. We implement session timeouts consistent with industry best practices. Coursedog endpoints are publicly available to view: https://coursedog.docs.apiary.io/# (scheduling)https://coursedogcurriculum.docs.apiary.io/ (curriculum + catalog). 

 

In addition, Coursedog's product platform is built using the following methodologies and properties based on Web Scale IT and SOA. 

* Our products is a self-contained environment that contains many underlying micro services

* All customer interaction with our product is executed through either a UI interface or HTTPS  REST APIs

* Our backend environment is distributed across multiple servers running simultaneously in an auto-scaling environment 

* Our system is failure tolerant and self healing with distributed recovery protocols that isolates failures to single servers, and hot-replaces affected servers without causing downtime for end users. 

* Embedded analytics provide continuous monitoring and real-time error alerting

* All code deploys are from versioned objects and are executed after the completion of an agile development cycle



Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.