{"id":35253502,"url":"https://github.com/open-cogsci/omm-server","last_synced_at":"2026-03-27T04:09:03.357Z","repository":{"id":39375569,"uuid":"235591695","full_name":"open-cogsci/omm-server","owner":"open-cogsci","description":"Open Monkey Mind server","archived":false,"fork":false,"pushed_at":"2026-03-12T20:36:44.000Z","size":16346,"stargazers_count":1,"open_issues_count":22,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-13T02:32:08.443Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/open-cogsci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-01-22T14:32:30.000Z","updated_at":"2025-05-12T13:56:59.000Z","dependencies_parsed_at":"2024-10-24T18:20:47.152Z","dependency_job_id":"8e4ce6ed-4a0d-442a-8f23-a018df9ffd50","html_url":"https://github.com/open-cogsci/omm-server","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/open-cogsci/omm-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-cogsci%2Fomm-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-cogsci%2Fomm-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-cogsci%2Fomm-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-cogsci%2Fomm-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-cogsci","download_url":"https://codeload.github.com/open-cogsci/omm-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-cogsci%2Fomm-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31018555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T03:51:26.850Z","status":"ssl_error","status_checked_at":"2026-03-27T03:51:09.693Z","response_time":164,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-12-30T07:22:10.295Z","updated_at":"2026-03-27T04:09:03.351Z","avatar_url":"https://github.com/open-cogsci.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenMonkeyMind\n\n*Server software*\n\n## About\n\nOpenMonkeyMind (OMM) allows OpenSesame experiments to be managed on a central server ([omm-server](https://github.com/open-cogsci/omm-server)) and deployed to computers running OpenSesame with the [omm-client](https://github.com/open-cogsci/omm-client) software installed. \n\n\n## Credits\n\n© 2020 - 2025:\n\n- Sebastiaan Mathôt (@smathot), University of Groningen, The Netherlands\n- Kristian Lange (@kristian-lange)\n- Daniel Schreij  (@dschreij)\n- Joel Fagot (@joelfagot), CNRS and Aix-Marseille University, France\n- Nicolas Claidère (@nclaidiere), CNRS and Aix-Marseille University, France\n- Pascal Belin, Aix Marseille University, France\n\nThe development of Open Monkey Mind was supported by ERC Advanced grant COVOPRIM #78824\n\n## Jump to\n\n- [Running using docker](#running-using-docker)\n- [Installing with npm](#installing-with-npm)\n- [API documentation with swagget](#api-documentation-with-swagger)\n- [Built on the shoulders of giants](#built-on-the-shoulders-of-giants)\n- [License](#license)\n\n\n## Running using docker\n\nIf you use Docker, it is really easy to get the server up and running:\n\n### Download the server software\n\nIf you have `git` installed, you can simply clone the repository:\n\n```\ngit clone https://github.com/open-cogsci/omm-server.git\n```\n\n### Install Docker\n\nIf you are using Windows, or MacOS, install docker desktop from https://www.docker.com/products/docker-desktop. In Linux you can use your favourite package manager to pull in the docker packages.\nRefer to https://docs.docker.com/engine/install/ubuntu/ for instructions for this process.\n\nOnce this is done, you should have access to the docker commands from your terminal (Mac/Linux) of Powershell/Command (Windows)\n\n### Start the Docker image\n\nNavigate to the folder in which you placed the contents of omm-server (e.g. `cd /folder/to/omm-server`). First copy `.env.docker` to `.env`. This is a file that sets certain environment variables, such as the port and server url, that determine how the server runs. You generally don't need to edit this file yourself.\n\n```\ncp .env.docker .env\n```\n\nNext, start the docker container:\n\n```\ndocker-compose up -d\n```\n\nIt may fail the first time because the first initialisation of the database takes a bit longer than usual. If so try executing the command again, or press the play/restart button for omm-server in the docker desktop dashboard.\n\nAfter the docker-compose script has run for the first time, the entry for omm-server will stay in your Docker desktop dashboard, and the next time(s) you can simply start the server and database by pressing the button with the play icon behind the omm-server listing.\n\n\n### Access the server\n\nOpen a browser and navigate to http://localhost:3000. You should now be able to play around with the omm-server. You can login with `admin@admin.com` and password `admin`\n\n\n### Access account-verification email\n\nIdeally, omm-server should be connected to a working mail server, so the account creation and management features work as designed. E-mails are for instace sent to a new user after an admin creates an account, or a user wants to reset his or her password. If such a connection to a mail server is not easily possible, the docker-compose setup comes with a built-in mail server which intercepts *all* e-mails that omm-server sends out. You can access the webmail interface of this mail server by going to http://localhost:3001 in your browser, once docker is running (the mail server also gets started when executing `docker-compose up`).\n\nThe mail server is currently configured to discard all emails after it is shut down, so every time you start up the server, you start with a completely empty and pristine mailbox. This is by design, as the built-in mail server is intended for testing purposes only, and not to be used as a real mail service.\n\n\n## Installing with npm\n\nThis option is more suitable if you want to make changes to, or write code for omm-server itself. You will also need to make sure you have a database available and set it up so omm-server can access it. Needless to say, this is the more challenging and elaborate option to get the system running.\n\n### Initial Setup\n\n``` bash\n# install dependencies\n$ npm ci (or `npm install` if that fails)\n\n# Start a dev server and serve with hot reload at localhost:3000\n$ npm run dev\n# Or\n$ adonis serve\n\n# build for production and launch server\n$ npm run build\n$ npm run start\n```\n\nFor detailed explanation on how things work, check out [Nuxt.js docs](https://nuxtjs.org).\n\n### The adonis-cli tool\n\nMany aspects of the server can easily be managed or configured by using the adonis-cli tool.\nTo install it, execute the follwing command in your terminal:\n\n```\nnpm i -g @adonisjs/cli\n```\n\nThis installs the adonis tool in you global namespace (making it available regardless of the current\nworking directory of you terminal). If succesfully installed, you should be presented with a list\nof available commands when entering `adonis` in your terminal.\n\nIf you don't want to install adonis-cli globally, or do not have permission to do so, you can alternatively\naccess it using `npx`, e.g.\n\n```\nnpx adonis \u003ccommand\u003e\n```\n\nor use the alternative cli tool that is included with the framework, but accepts the same parameters.\n\n```\nnode ace \u003ccommand\u003e\n```\n\n### Initializing the database\n\nA snapshot of the development SQLite database is included in the repository. Nevertheless, if you\nwould like to start fresh you can do so easily using the Adonis CLI tool. If you execute\n\n```\nadonis migration:refresh\n```\n\nall database tables are dropped and recreated from scratch. To populate them with some initial data you can\nuse the\n\n```\nadonis seed\n```\n\ncommand. This will insert the data specified in the seed files under `database/seeds`.\n\n\u003e Note: the process may hang after this operation forcing you to quit it with ctrl-c, but it will\n\u003e likely have succeeded.\n\n## Running tests\n\nTests are implemented on the frontend with [Jest](https://jestjs.io/) and for the backend using Adonis.\nTests can be run with the command `npm test`.\n\n## API documentation with swagger\n\nThe API endpoints are documented using [Swagger UI](https://swagger.io/tools/swagger-ui/). This makes the documentation dynamic and interactive.\nOnce the dev server is started with `npm run dev`, the documentation will be available at \u003chttp://localhost:3000/docs\u003e.\n\nSome endpoints are protected and require a logged in user to function correctly.\nThese endpoints are indicated by a lock icon at the right side of their entry. To access\nthese endpoints from swagger, you need to provide it with a JWT token first. This process is a bit\ncumbersome, and needs to be performed after each refresh of Swagger UI (as it is stateless).\n\nTo retrieve the JWT token, first login as usual at \u003chttp://localhost:3000/login\u003e. If you are already logged in,\nyou will be redirected to the dashboard right away. Next, open the Chrome (or your browser's) dev console\n(`ctrl+shift+i` on non Macs, and `option+cmd+J` on Macs) and navigate to the network tab.\nTo filter out irrelevant requests, make sure XHR is selected in the third tab bar from the top.\nIn the left column, select a request which contains the path `/api/v1`. In the panel that opens, go to\n**Request Headers**, and find the entry labelled _Authorization_. This will contain a value starting with\n`Bearer ...`. Copy the whole line, including `Bearer` to your clipboard.\n\n![Finding bearer token](/docs/retrieveToken.png)\n\nNext in Swagger-UI at \u003chttp://localhost:3000/docs\u003e, click on the button authorize at the top-right.\n\n![Click Authorize](/docs/clickAuthorize.png)\n\nFinally, paste your copied `Bearer XXXXX` string into the `Value` field and click *Authorize*.\n\n![Enter token](/docs/enterToken.png)\n\nYou should now be able to access the protected endpoints.\n\n## Build Docker image\n\n1. `cd` to omm-server's root.\n\n1. First change the version in package.json, package-lock.json to the new one.\n\n    Build the image (change x.x.x to the version you used in package.json):\n\n    ```shell\n    docker build -t cogsci/omm-server:x.x.x .\n    ```\n\n1. Try running it with docker compose. Before, you should edit the docker-compose.yml and change the image tag to the version you just pushed (search for `cogsci/omm-server`).\n\n    ```shell\n    docker compose up\n    ```\n\n    Check for errors and fix them. Use Ctrl-C to stop.\n\n1. If you are satisfied push the image to our Docker registry dockerhub:\n\n    ```shell\n    docker push cogsci/omm-server:x.x.x\n    ```\n\n    Check the image arrived in dockerhub: https://hub.docker.com/r/cogsci/omm-server/tags\n\n\n## Built on the shoulders of giants\n\nThis project uses prominent open-source frameworks and libraries:\n\n### Frontend\n\n- [Vue](https://vuejs.org): Progressive JavaScript component framework.\n  - [Vuetify](https://vuetifyjs.com): Material Design Components for Vue.\n- [Vuex](https://vuex.vuejs.org/guide/): State management system.\n  - [Vuex-ORM](https://vuex-orm.org/): ORM system for Vuex.\n- [Nuxt](https://nuxtjs.org/): Frontend framework that makes wiring different Vue components easier.\n  - [Axios for Nuxt](https://axios.nuxtjs.org/): Axios module for Nuxt\n  - [Auth for Nuxt](https://auth.nuxtjs.org/): Authentication module for Nuxt.\n\n### Backend\n\n- [Adonis](https://adonisjs.com/): MVC and REST API framework based on Laravel.\n  - [Bumblebee](https://github.com/rhwilr/adonis-bumblebee): Data serializer for structured json responses.\n  - [Adonis-swagger](https://github.com/ahmadarif/adonis-swagger): Easy swagger documentation with Adonis.\n\n\n## License\n\nOpenMonkeyMind is distributed under the terms of the GNU General Public License 3. The full license should be included in the file COPYING, or can be obtained from:\n\n- \u003chttp://www.gnu.org/licenses/gpl.txt\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-cogsci%2Fomm-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-cogsci%2Fomm-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-cogsci%2Fomm-server/lists"}