{"id":18683561,"url":"https://github.com/scify/memor-i-studio","last_synced_at":"2025-06-28T09:36:47.398Z","repository":{"id":153219539,"uuid":"77604311","full_name":"scify/Memor-i-Studio","owner":"scify","description":"A Laravel web-application that allows users to insert cards, sounds and images in order to create their own game for the blind!","archived":false,"fork":false,"pushed_at":"2025-06-24T17:24:09.000Z","size":52780,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-24T18:33:40.930Z","etag":null,"topics":["composer","css3","hacktoberfest","html","javascript","laravel","laravel-framework","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/scify.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2016-12-29T10:27:29.000Z","updated_at":"2025-06-24T17:24:10.000Z","dependencies_parsed_at":"2025-04-12T04:31:58.702Z","dependency_job_id":"310b1a2b-d8fd-4dea-a107-957077c04d9f","html_url":"https://github.com/scify/Memor-i-Studio","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scify/Memor-i-Studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scify%2FMemor-i-Studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scify%2FMemor-i-Studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scify%2FMemor-i-Studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scify%2FMemor-i-Studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scify","download_url":"https://codeload.github.com/scify/Memor-i-Studio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scify%2FMemor-i-Studio/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262407059,"owners_count":23306307,"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":["composer","css3","hacktoberfest","html","javascript","laravel","laravel-framework","php"],"created_at":"2024-11-07T10:14:56.917Z","updated_at":"2025-06-28T09:36:47.392Z","avatar_url":"https://github.com/scify.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Memor-i Studio\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/scify/Memor-i/master/src/main/resources/img/memori.png\" width=\"400\" alt=\"game logo\"\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\n[Memor-i](https://www.youtube.com/watch?v=uRpUeqyN1eA) is a Memory card game especially tailored to meet the needs of\nblind people.\n\n[Memor-i Studio](https://memoristudio.scify.org/), is an online games repository that people can use in order to create\ntheir own flavors of Memor-i game!\n\n## Installation Instructions\n\nPlease read thoroughly the following guid/steps, to set up Memor-i Studio.\n\n## Pre-installation requirements\n\nThis project assumes working installations of the following technologies / components:\n\n1. [PHP](https://php.net/) (version \u003e= `8.1`)\n\n2. [MySQL](https://www.mysql.com/)\n\n3. [composer](https://getcomposer.org/) (PHP package manager)\n\n4. [npm](https://www.npmjs.com/get-npm) (Front-end dependencies package manager)\n\n5. [Laravel](https://laravel.com/)\n\n6. [Apache Web Server](https://httpd.apache.org/) (or any other Web Server you are comfortable with)\n\n## First time install (setup database and install dependencies)\n\n## Docker option\n\nYou can use the `docker-compose.yml` file that exists at project roo, to quickly set up a docker container.\n\nJust run\n\n```bash\ndocker compose up\n```\n\nTo fire up the container.\n\nThen, you can enter the container by running\n\n```bash\ndocker exec -it memori_studio_server bash\n```\n\nAnd from there, you can run all the `php artisan`, `composer`, and `npm` commands.\n\n### Environment file, Laravel/backend dependencies\n\nAfter cloning the project, create an `.env` file (should be a copy of `.env.example`), containing the information about\nyour database name and credentials. After that, download all Laravel dependencies\nthrough [Composer](https://laravel.com/docs/7.x/installation), by running\n\n```bash\ncomposer install\n\ncomposer update\n```\n\n### Front-end dependencies\n\nAfter all Laravel dependencies have been downloaded, it's time to download all Javascript libraries and dependencies. We\nachieve that by using nodejs and its package manager, [npm](https://www.npmjs.com/).\n\nA convenient way of installing multiple versions of nodejs and npm on a machine, is by installing and using Node Version\nManager, [nvm](https://github.com/nvm-sh/nvm).\n\nSo, when in project root directory, and after npm has been installed correctly, run\n\nIt is very easy to install multiple versions of NodeJS and npm, by\nusing [Node Version Manager (nvm)](https://github.com/creationix/nvm).\n\nIf you are using [`nvm`](https://github.com/nvm-sh/nvm), run this command in order to sync to the correct NodeJS version\nfor the project:\n\n```bash\nnvm install\n\nnvm use \n\nnpm install\n```\n\nTo download and install all libraries and dependencies.\n\n### Compiling front-end assets\n\nThis project uses [Webpack and Laravel Mix](https://laravel.com/docs/7.x/mix) which is a popular toolkit for automating\npainful or time-consuming tasks, like SASS compiling and js/css concatenation and\nminification.\n\nSince it is built upon webpack, you can use the following commands to compile the front-end assets:\n\n```bash\nnpm run dev #for dev builds\n\nnpm run prod #for production builds\n\nnpm run watch #for dev builds, also enables hot changes on the files \n```\n\n### Database\n\nCreate the database schema:\n\n```bash\nphp artisan config:clear\n\nphp artisan migrate\n```\n\n#### Add seed data to DB\n\nRun ```php artisan db:seed``` in order to insert the starter data to the DB by\nusing [Laravel seeder](https://laravel.com/docs/7.x/seeding)\n\n### Permissions\n\nFix permissions for storage directory:\n\n```bash\nsudo chown -R ${USER}:www-data storage\n\nsudo chmod -R 755 storage bootstrap/cache\n\ncd storage/\n\nsudo find . -type f -exec chmod 664 {} \\;\n\nsudo find . -type d -exec chmod 775 {} \\;\n```\n\nThe commands above are also available with the permissions script, in the root directory of the project.\n\nYou can use it like this:\n\n```bash\nsudo ./set-file-permissions.sh www-data project_memori .\n```\n\n**Note:** `project_memori` should be the name of the server user.\n\n## Apache configuration (optional)\n\n```\ncat /etc/apache2/sites-available/memoristudio.conf\n\n\u003cVirtualHost *:80\u003e\n    ServerName dev.memoristudio\n    DocumentRoot \"/path/to/memoristudio/public\"\n    \u003cDirectory \"/path/to/memoristudio/public\"\u003e\n        AllowOverride all\n    \u003c/Directory\u003e\n\u003c/VirtualHost\u003e\n```\n\nMake the symbolic link:\n\n```bash\ncd /etc/apache2/sites-enabled \u0026\u0026 sudo ln -s ../sites-available/memoristudio.conf\n```\n\nEnable mod_rewrite and restart apache:\n\n```bash\nsudo a2enmod rewrite \u0026\u0026 sudo service apache2 restart\n```\n\n## Without apache custom configuration\n\nNavigate to the root directory of the project and run:\n\n```bash\nphp artisan serve\n```\n\nand navigate to [localhost:8000](http://localhost:8000/).\n\nAnd have write access to ```/home``` directory.\n\n\u003chr\u003e\n\n## Required steps for the server\n\n### 1. Allow the uploading large files\n\nIn order for the app to work as expected, max size of files and timeout time must be set on the appropriate\nconfiguration files for `php-fpm` and `nginx`.\n\n1. For nginx\n\n   edit the `/etc/nginx/sites-enabled/memoristudio.server.org` file and add `fastcgi_read_timeout 300;`\n2. For php-fpm\n\n   edit `/etc/php/8.1/fpm/` (or the corresponding php version) and change:\n\n```text\n max_input_time = 300\n \n post_max_size = 200M\n \n upload_max_filesize = 200M\n```\n\n### 2. Converting audio files to mpr with CBR (constant bit rate)\n\nThis project allows users to upload audio files. In order for the desktop application of Memor-i to operate correctly,\nthese files need to me in .mp3 format and have a CBR (constant bit rate), not a VBR (variable bit rate)\n. [See more](https://www.lifewire.com/difference-between-cbr-and-vbr-encoding-2438423)\nThis project converts uploaded audio files appropriately, on the fly. For this to happen, we\nuse [avconv](https://libav.org/avconv.html) library. To install this library in a Unix-based machine,\ncheck [this post](http://askubuntu.com/questions/391357/how-do-you-install-avconv-on-ubuntu-server-13-04).\n\nYou can see and modify the command we use for coverting the files in ```public/convert_to_mp3.sh```.\n\n### 3. Converting image files to .ico files\n\nThis project includes special functionality to convert a game flavor cover image file into a .ico file, for usage when\nthe game runs. In order to accomplish this, we\nuse [ImageMagick tool](https://github.com/ImageMagick/ImageMagick). ImageMagick can be installed\nlike this:\n```apt-get install imagemagick```\n\n### 4. Building Windows executables\n\nFor building the Windows installer for a game, this project\nuses [Inno Setup-exe-builder](https://github.com/scify/innosetup-exe-builder?tab=readme-ov-file#inno-setup-exe-builder),\nan external service for compiling executables to Windows installers.\n\nSo you will need to setup and have this service running, and then change the `WINDOWS_SETUP_SERVICE_URL` variable in `.env`. \n\n\u003chr\u003e\n\n## Deploying\n\nYou can run either  ```php artisan serve``` or set up a symbolic link to ```/path/to/project/public``` directory and\nnavigate to http://localhost/{yourLinkName}\n\n## Required steps for Production server\n\n### Required steps for uploading large files\n\nIn order for the app to work as expected, max size of files and timeout time must be set on the appropriate\nconfiguration files for `php-fpm` and `nginx`.\n\n1. For nginx\n\n   edit the `/etc/nginx/sites-enabled/memoristudio.scify.org` file and add `fastcgi_read_timeout 300;`\n2. For php-fpm\n\n   edit `/etc/php/VERSION/fpm/` (or the corresponding php version) and change:\n    * max*input*time = 300\n    * post*max*size = 200M\n    * upload_max_filesize = 200M\n\n3. Make sure that the `project_memori` user belongs to group `www-data`\n\n### Mailgun Considerations\n\nMake sure that the production server IP is whitelisted in Mailgun.\n\n## License\n\nThis project is open-sourced software licensed under\nthe [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n\nMemor-i Studio has been created by [Science For You (SciFY)](https://www.scify.org), a Greek not-for-profit\norganization.\n\nThe Memor-i Studio project has been funded\nby [Public Benefit Foundation John S. Latsis](https://www.latsis-foundation.org/eng)\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/scify/memori-online-games-repository/master/public/assets/img/latsis_logo.jpg\" width=\"300\" alt=\"logo\"\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscify%2Fmemor-i-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscify%2Fmemor-i-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscify%2Fmemor-i-studio/lists"}