ChildMindInstitute / crisislogger

CrisisLogger.org website
https://crisislogger.org
Other
0 stars 0 forks source link

Convert site from lamp to a stack closer to the mindlogger.org project #75

Open binarybottle opened 4 years ago

binarybottle commented 4 years ago

Replace the CrisisLogger.org website with a stack that will make it easier to maintain/merge with the MindLogger project (https://github.com/ChildMindInstitute/mindlogger-web or https://github.com/ChildMindInstitute/mindlogger-web-react), with React + mongodb + json-ld dictionary of text content, making sure there is a key value mapping that encodes language string. A MindLogger web compatible app would use the video, audio, text, and questionnaire components in the mindlogger-web project with the reproschema.

Satrajit Ghosh at MIT provided an example of a task using reproschema (https://sig.mit.edu/voice-up/#/activities/0) - switch the language between english/spanish. (you may have to click on the burger icon to expand the activities list).

satra commented 4 years ago

i wouldn't encourage changing frameworks (girder -> django) right now. there is still a lot you can do with the current setup. i would encourage focusing on the exposed api, the functionality, and the structure of the content that travels between services.

qua multilingual - you can take a look at this section and its examples: https://w3c.github.io/json-ld-syntax/#string-internationalization that's what we are using in reproschema.

also in terms of building the interface, consider moving all content to be viewed dynamically. so store content as jsonld and use javascript + templates to display that. in the above example, you can see that some pieces do not change when the language is changed (landing page). but that should be fixed in the next iteration.

binarybottle commented 4 years ago

@satra -- For the CL site, there is no girder -- this is a straight PHP/Laravel LAMP stack that we want to be more ML compatible. That means using json-ld with reproschema as you suggest and the ML video/audio/text/questionnaire components. After that, ReactJS and mongodb makes sense for compatibility with the ML stack. All that's left is to choose an api layer, and it's much easier for a developer to apply a known framework like django than an obscure one like girder, let alone our fork of girder.

satra commented 4 years ago

django does not have an api layer, you create one through the models you put into it. girder actually has an api layer that can be extended.

binarybottle commented 4 years ago

Sounds like an opportunity to tailor make an api layer! Hey, have you seen the object-document mapper mongoengine?:
https://medium.com/@vasjaforutube/django-mongodb-django-rest-framework-mongoengine-ee4eb5857b9a

satra commented 4 years ago

yes - i have used all kinds of backends with django, none are as robust as their SQL ORM. you also want to be a bit careful with a project that's not been maintained. i have not used this specific plugin so can't comment on how robust it is.