Skip to content

Commit 89619e9

Browse files
authored
Merge pull request #23 from case-framework/framework-overview
Framework overview
2 parents 1a4c440 + 91625e2 commit 89619e9

2 files changed

Lines changed: 109 additions & 4 deletions

File tree

102 KB
Loading

content/tech-docs/framework/overview.mdx

Lines changed: 109 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,113 @@
11
---
2-
title: Overview
3-
description: Framework
2+
title: Framework Overview
3+
description: Components of the CASE Framework
44
---
55

6-
## Framework
6+
This page wants to give you an overview of the standard set of components offered by the CASE Framework.
7+
Detailed documentation for each component is available in their respective pages.
8+
9+
## Offered components
10+
11+
### Backend Services
12+
13+
Event-driven APIs to interact with the system.
14+
15+
#### Management API
16+
17+
Bundles the functionality needed to manage the system and its resources. Provides authentication and authorization for the admin UI and other tools.
18+
[More information](/tech-docs/management-api/overview)
19+
20+
#### Participant API
21+
22+
A collection of APIs for implementing participant-facing functionality. Includes built-in multi-factor authentication and user management and study interactions.
23+
[More information](/tech-docs/participant-api/overview)
24+
25+
#### SMTP Bridge
26+
Internal service to bridge the framework's email sending to an external SMTP server. Has a simple API to send emails. In case, the setup is using a different email provider, this service can be replaced with a custom implementation.
27+
[More information](/tech-docs/smtp-bridge/overview)
28+
29+
#### SMTP Bridge Emulator
30+
Identical API to the SMTP Bridge, but instead of sending emails through an SMTP connection, it will write them to disk at a specified location. Useful for testing or development purposes, when no SMTP server is available yet, or to avoid sending related costs/risks in load testing.
31+
32+
---
33+
34+
### Backend Jobs
35+
36+
Scheduled or one-off jobs to be run on the server.
37+
38+
#### Study Timer
39+
40+
This job handles scheduled timer operations for active studies, including updating study statistics, executing timer-based actions, and optionally cleaning up orphaned task results.
41+
42+
#### User Management
43+
44+
This job handles scheduled user management operations including account cleanup, verification reminders, inactivity management, and profile ID lookup generation. It helps maintain data integrity and manages the user lifecycle across studies.
45+
46+
#### Messaging
47+
48+
This job handles various messaging-related tasks including processing outgoing emails, scheduled messages, study messages, and researcher notifications.
49+
50+
#### Study Daily Data Export
51+
52+
This job handles daily data exports for studies, including survey responses and confidential response exports. It also provides cleanup functionality for orphaned task results.
53+
54+
#### DB migration
55+
56+
This job handles various db migration tasks including dropping and creating indexes.
57+
58+
---
59+
60+
### Applications
61+
62+
#### Admin UI
63+
64+
CASE's Admin UI is a web app for setting up and running research studies. It lets you design surveys, manage participants, and send study messages - all in one place.
65+
66+
#### Recruitment List Application
67+
68+
A go backend and Next.js frontend application that can be used to pull participant data and share it with external partners.
69+
70+
---
71+
72+
### Libraries
73+
74+
#### Survey Engine
75+
76+
A Typescript library for handling surveys. It's used for handling dynamic conditions to determine which questions should be shown to the participant, and to map the survey's definition and current state to a renderable survey.
77+
78+
The Admin UI contains a reference implementation of components using the survey engine, to showcase how it can be used with React, and Tailwind CSS to build a survey user interface.
79+
80+
#### Editor tools
81+
82+
A Typescript library with helper functions, types and utilities for coding study rules, actions or surveys.
83+
84+
---
85+
86+
## Basic application architecture
87+
88+
![Basic application architecture](./images/case-typical-setup.png)
89+
90+
91+
The framework can be utilized in a variety of ways depending on the use case.
92+
The standard application setup is as follows:
93+
94+
1. External resources:
95+
- MongoDB database
96+
- Email server with SMTP
97+
- Persistent storage for files
98+
2. Framework components:
99+
- Participant-facing:
100+
- participant-api: backend component to handle participant events and data
101+
- participant-frontend: frontend component to handle participant interactions. In most cases, this was implemented as a Next.js application so far, but it's not a requirement.
102+
- Management-facing:
103+
- management-api: backend component to handle management events and data
104+
- case-admin (Admin/Management UI): a web application to handle management interactions, to configure the application and its studies, or access data in the system.
105+
- smtp-bridge: to bridge the framework's email sending to an external SMTP server
106+
- Jobs run on regular intervals:
107+
- messaging: to handle messaging-related tasks, such as processing message queues or generating scheduled messages
108+
- study-timer: to update study statistics and handle study timer events
109+
- user-management: to handle user management tasks, such as reminding users to verify their email address, or cleaning up unused or unverified user accounts
110+
3. Optional components:
111+
- study-daily-data-export: to prepare daily data exports for researchers
112+
- recruitment-list application (with backend and frontend): pull participants and their data for recruitment purposes and share it with external partners
7113

8-
The Framework is a service that allows you to manage the system and its resources.

0 commit comments

Comments
 (0)