Electronic Data Capture system
Amber is an Electronic Data Capture system with a REST API, an administration interface Amber Studio and a user interface Amber Collect.
Functionalities:
- data collection
- data collection using online questionnaires
- multiple data types: text, numeric, logical, image, video, file etc.
- questionnaire builder
- extensible question types
- questionnaires grouped by study
- questions with skip conditions
- questionnaires with pages
- self-reported data collection
- participants
- walk-in patients
- users
- user roles: administrator, manager, interviewer, guest
- user/group permissions
- user signup
- user management
- multi-lang
- documentation
- themes
Technical features:
- scalable
- offline-first design, with auto sync
- multiple clients: web, mobile, desktop, script
- auth with local credentials
- docker
- mailer
- configurable
This project uses Feathers. An open source web framework for building modern real-time applications.
-
Install your dependencies
cd path/to/amber npm install
-
Start your app
npm start # or rmp run dev
Amber uses dotenv for environment variables discovery from a .env
file.
CLUSTER_COUNT
, node cluster count, defaults to all available CPU coresAPP_NAME
, JWT issuerAPP_SECRET_KEY
, encryption keyAPP_SECRET_IV
, secret string for the encryption's initial vector,APP_URL
, JWT audienceAPP_API_KEYS
, the allowed API keys (comma separated values) for triggering backround tasks execution,CLIENT_URLS
, comma separated client urls, for the CORS policyAMBER_STUDIO_URL
, Amber Studio app url, to be included in the notification emailsAMBER_COLLECT_URL
, Amber Collect app url, to be included in the notification emailsAMBER_VISIT_URL
, Amber Visit app url, to be included in the notification emailsMONGODB_URL
, the MongoDB connection stringENCRYPT_DATA
, whether the patient/participant data should be encrypted in the databaseOTP_TIMEOUT
, is the number of minutes during which the onetime password (OTP) sent by email is valid. Default is 5; when set to 0, the email-based onetime password is deactivated. This does not apply to the time-based onetime password (TOTP) procedure, which can be activated per user.RECAPTCHA_SECRET_KEY
, the reCAPTCHA v3 secret key.SIGNUP_WHITELIST
, the list of email domains that are allowed to signup. Use '*' for wild card. Default is all.SIGNUP_BLACKLIST
, the list of email domains that are NOT allowed to signup. Use '*' for wild card. Default is none.GMAIL
, the Gmail user name for the notification serviceGMAIL_PASSWORD
, the Gmail user password for the notification serviceSENDINBLUE_API_KEY
, the Sendinblue API key for the notification serviceSMTP_HOST
, the SMTP server hostSMTP_PORT
, the SMTP server port (defaults to 587 if is secure is false or 465 if true)SMTP_NAME
, the SMTP server nameSMTP_SECURE
, whether the SMTP connection should use SSL (default is true)SMTP_REQUIRE_TLS
, whether the SMTP connection should use TLS (when secure is false)SMTP_LOGGER
, enable SMTP loggingSMTP_DEBUG
, enable SMTP debug by sending log eventsSMTP_USER
, the SMTP server userSMTP_PASSWORD
, the SMTP server user's passwordFROM_EMAIL
, the automated sender email address,GITHUB_KEY
, OAuth key for GithubGITHUB_SECRET
, OAuth secret for GithubGOOGLE_KEY
, OAuth key for GoogleGOOGLE_SECRET
, OAuth secret for GoogleADMINISTRATOR_EMAIL
, user seeding when there is no administrator in the databaseADMINISTRATOR_PWD
, user seeding when there is no administrator in the databaseLOG_LEVEL
, logger level (error
,warn
,info
,verbose
,debug
,silly
, etc. (see winstonjs)), default isinfo
LOG_FILE
, file logger pathLOG_FILE_LEVEL
, file logger level whenLOG_FILE
is specified, default isLOG_LEVEL
NODE_ENV
, name of the config file to be merged with the default one (e.g.production
)
Simply run npm test
and all your tests in the test/
directory will be run.
Feathers has a powerful command line interface. Here are a few things it can do:
$ npm install -g @feathersjs/cli # Install Feathers CLI
$ feathers generate service # Generate a new Service
$ feathers generate hook # Generate a new Hook
$ feathers help # Show all commands
For more information on all the things you can do with Feathers visit docs.feathersjs.com.