{"id":13744644,"url":"https://github.com/introlab/opentera","last_synced_at":"2025-08-22T06:32:26.480Z","repository":{"id":40546102,"uuid":"168543624","full_name":"introlab/opentera","owner":"introlab","description":"OpenTera - Open TeleRehabilitation Server and Micro-Services","archived":false,"fork":false,"pushed_at":"2024-11-15T18:00:25.000Z","size":22102,"stargazers_count":17,"open_issues_count":26,"forks_count":9,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-11-17T13:50:20.911Z","etag":null,"topics":["flask","healthcare","iot","micro-services","python","redis","rehab","robotics","sensors","server","telehealth","teleoperation","telepresence","telerehabilitation","twisted","videoconference","webrtc"],"latest_commit_sha":null,"homepage":"https://github.com/introlab/opentera","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/introlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/Security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-31T15:01:24.000Z","updated_at":"2024-11-14T16:07:59.000Z","dependencies_parsed_at":"2023-09-26T19:03:13.373Z","dependency_job_id":"e1810218-ed44-4a25-9964-672fff0523f3","html_url":"https://github.com/introlab/opentera","commit_stats":{"total_commits":1691,"total_committers":8,"mean_commits":211.375,"dds":0.5984624482554701,"last_synced_commit":"53fe45929a8bc2f0bf3eadc4da47cb57d4b332be"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/introlab","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230181383,"owners_count":18185930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","healthcare","iot","micro-services","python","redis","rehab","robotics","sensors","server","telehealth","teleoperation","telepresence","telerehabilitation","twisted","videoconference","webrtc"],"created_at":"2024-08-03T05:01:13.216Z","updated_at":"2024-12-20T10:08:10.597Z","avatar_url":"https://github.com/introlab.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# About OpenTera\n\n[![Actions Status](https://github.com/introlab/opentera/actions/workflows/python-package-pypi.yml/badge.svg)](https://github.com/introlab/opentera/actions)\n[![DOI](https://zenodo.org/badge/168543624.svg)](https://zenodo.org/doi/10.5281/zenodo.10078846)\n\n\nOpenTera is a micro-services based backend primarily built to support research projects. Focusing on years in the research field, common features between the different projects emerged:\n\n* Data structure: The need to store data in a structured way to ease data analysis\n* Ecological data capture: The need to collect data not only in a laboratory or controlled environment, but also in the home\n* Project adaptability: The need to develop projects specific dashboards while reusing as much as possible of what was done before to reduce development time\n* Security: The need to store and transfer data in a secure and controlled way\n\nTo address those common features, OpenTera was designed with an architecture based as much as possible on recognized standards and best practices.\n\n## Documentation\n* https://introlab.github.io/opentera/\n\n## What can OpenTera do for you?\n\nIn its essence, OpenTera provides an adaptable data structure on which you can base your developments. With its modular and service-based design, it is possible to tailor specific needs based on the OpenTera framework.\n\nApplications of the OpenTera backend are not limited to research projects, and could also be applied in a clinical environment, where clinicians have to communicate with patients. Such fields include but are not limited to: tele-rehabilibation (physical, social, mental), robotic tele-operation and remote activity monitoring.\n\nThe OpenTera micro-services structure allows:\n\n* Management of several sites, users, projects, participants, groups of participants, connected devices, sessions, data sources, assets in a structured manner.\n  * We developed a Qt management tool called [OpenTeraPlus](https://github.com/introlab/openteraplus), which is also under developement.\n  * A web management interface will be developed in the future.\n* Easy and secure deployment on any cloud, dedicated or embedded platform(such as a Raspberry Pi, AWS, Azure)\n* Easy to use for elderly participants (no configuration, interfaces adapted to clients needs).\n* Better collaboration / dissemination for open code.\n* Support for several current and future research projects:\n  * [INTER](https://regroupementinter.com/) - Tele-Actimetry: connected watches, portable capture devices.\n  * [INTER](https://regroupementinter.com/) - Tele-Rehabilitation: videoconference, management of rehabilitation sessions for participants using tele-rehabilitation.\n  * [INTER](https://regroupementinter.com/) - Active desk: Management of active desks and data visualization in the form of a dashboard.\n  * [INTER](https://regroupementinter.com/) - [OpenIMU](https://github.com/introlab/OpenIMU), [OpenIMU-MiniLogger](https://github.com/introlab/OpenIMU-MiniLogger): Capture, visualization and analysis of data from inertial measurement units.\n  * [AGEWELL](https://agewell-nce.ca/research/research-programs-and-projects) (SMART, [MOvIT+](https://github.com/introlab/MOvITPlus)): Tele-presence and assistance of elderly people at home by a mobile robot, and power wheelchairs instrumentation and usage monitoring.\n\nYou are welcome to participate in this effort. Leave us comments or report [Issues](https://github.com/introlab/opentera/issues).\n\n## Authors\n\n* Dominic Létourneau, ing. M.Sc.A., IntRoLab, Université de Sherbrooke (@doumdi)\n* Simon Brière, ing. M.Sc.A., CDRV, Université de Sherbrooke (@sbriere)\n* François Michaud, ing. Ph.D., IntRoLab, Université de Sherbrooke\n* Michel Tousignant, pht, Ph.D., CDRV, Université de Sherbrooke\n\n\n## Contributors\n\n* Philippe Arsenault\n* Cédric Godin\n* Marc-Antoine Maheux\n* Cynthia Vilanova\n\n## Publication(s)\n\n* [![DOI](https://joss.theoj.org/papers/10.21105/joss.05497/status.svg)](https://doi.org/10.21105/joss.05497) Létourneau, D., Brière , S.,  et al., [OpenTera: A Framework for Telehealth Applications](https://doi.org/10.21105/joss.05497), Journal of Open Source Software, vol. 8, no 91, p. 5497 (2023)\n* Panchea, A.M., Létourneau, D., Brière, S. et al., [OpenTera: A microservice architecture solution for rapid prototyping of robotic solutions to COVID-19 challenges in care facilities](https://rdcu.be/cHzmf),  Health Technol. 12, 583–596 (2022)\n\n## Videos\n\n### OpenTera Telehealth Platform\n\n[![OpenTera Telehealth Platform](https://img.youtube.com/vi/s5XVIDCP8_s/maxresdefault.jpg)](https://youtu.be/s5XVIDCP8_s)\n\n### OpenTera+ Clinical Telehealth Software\n\n[![OpenTera+ Clinical Telehealth Software](https://img.youtube.com/vi/4YMKSUE6xJs/maxresdefault.jpg)](https://youtu.be/4YMKSUE6xJs)\n\n## Documentation and getting started\n\nDetailled information is available in the [docs](https://introlab.github.io/opentera/)\n\n## License\n\nOpenTera is licensed under [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) .\n\n## Related Open Source Projects\n\n### General\n\n* [OpenTeraPlus Desktop Application](https://github.com/introlab/openteraplus)\n* [OpenTera WebPortal Service](https://github.com/introlab/opentera-webportal-service)\n\n### Robots\n\n* [WebRTC Native Libraries](https://github.com/introlab/webrtc-native-build)\n* [OpenTera WebRTC Libraries](https://github.com/introlab/opentera-webrtc)\n* [OpenTera WebRTC ROS Client and Nodes](https://github.com/introlab/opentera-webrtc-ros)\n* [OpenTera Teleoperation Service](https://github.com/introlab/opentera-teleop-service)\n* [OpenTera WebRTC Teleoperation Frontend](https://github.com/introlab/opentera-webrtc-teleop-frontend)\n\n## Dependencies\n\nOpenTera is based or uses the following Open Source technologies :\n\n* [Python 3.8+, PSFL (BSD like)](https://www.python.org)\n* [Flask, BSD](http://flask.pocoo.org)\n* [Redis, BSD](https://redislabs.com/why-redis/)\n* [txredisapi, Apache License 2.0](https://github.com/fiorix/txredisapi)\n* [SQLAlchemy, MIT](https://www.sqlalchemy.org)\n* [Twisted, MIT](https://twistedmatrix.com)\n* [PostgreSQL,  PostgreSQL License(MIT/BSD like)](https://www.postgresql.org)\n* [Node.js, Node license](https://nodejs.org/en/)\n\n## Sponsors\n\n\u003ctable style=\"width:100%\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003cimg src=\"teraserver/python/services/VideoRehabService/static/images/logos/IntRoLab.png\" width=\"200\"\u003e\n        \u003cimg src=\"teraserver/python/services/VideoRehabService/static/images/logos/Estrad.png\" width=\"200\"\u003e\n        \u003cimg src=\"teraserver/python/services/VideoRehabService/static/images/logos/3IT.png\" width=\"200\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003cimg src=\"teraserver/python/services/VideoRehabService/static/images/logos/logo_CDRV.png\" width=\"200\"\u003e\n        \u003cimg src=\"teraserver/python/services/VideoRehabService/static/images/logos/AgeWell.png\" width=\"200\"\u003e\n        \u003cimg src=\"teraserver/python/services/VideoRehabService/static/images/logos/INTER.png\" width=\"200\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintrolab%2Fopentera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintrolab%2Fopentera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintrolab%2Fopentera/lists"}