{"id":43635215,"url":"https://github.com/saproto/saproto","last_synced_at":"2026-02-04T17:14:40.128Z","repository":{"id":37286450,"uuid":"46813004","full_name":"saproto/saproto","owner":"saproto","description":"This repository holds the ICT environment for Study Association Proto, the study association for Creative Technology and Interaction Technology at the University of Twente.","archived":false,"fork":false,"pushed_at":"2026-02-01T22:34:58.000Z","size":124251,"stargazers_count":18,"open_issues_count":98,"forks_count":11,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-02-01T23:23:51.752Z","etag":null,"topics":["hacktoberfest","laravel","php"],"latest_commit_sha":null,"homepage":"https://www.proto.utwente.nl/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saproto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2015-11-24T19:16:58.000Z","updated_at":"2026-01-27T00:10:05.000Z","dependencies_parsed_at":"2023-09-22T13:23:28.999Z","dependency_job_id":"5f909461-2a75-4010-bb33-e1e57b4356c2","html_url":"https://github.com/saproto/saproto","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/saproto/saproto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saproto%2Fsaproto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saproto%2Fsaproto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saproto%2Fsaproto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saproto%2Fsaproto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saproto","download_url":"https://codeload.github.com/saproto/saproto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saproto%2Fsaproto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29091348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["hacktoberfest","laravel","php"],"created_at":"2026-02-04T17:14:40.073Z","updated_at":"2026-02-04T17:14:40.122Z","avatar_url":"https://github.com/saproto.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003ca href=\"https://proto.utwente.nl\"\u003e\n        \u003cimg alt=\"Proto logo\" src=\"https://raw.githubusercontent.com/saproto/saproto/master/public/images/logo/banner-regular.png\" width=\"100%\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    S.A. Proto\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e \n    \u003cb\u003eThe website of S.A. Proto\u003c/b\u003e.\u003cbr\u003e \n    The study association of BSc. Creative Technology and MSc. Interaction Technology.\u003cbr\u003e\n    \u003ca href=\"https://github.com/saproto/saproto/issues\"\u003e\n        \u003cimg alt=\"issues badge\" src=\"https://img.shields.io/github/issues/saproto/saproto?color=%2503b71a\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/saproto/saproto/graphs/contributors\"\u003e\n        \u003cimg alt=\"contributors badge\" src=\"https://img.shields.io/github/contributors/saproto/saproto?color=%2503b71a\"\u003e\n    \u003c/a\u003e\n    \u003cimg alt=\"open source badge\" src=\"https://badges.frapsoft.com/os/v2/open-source.svg?v=103\"\u003e\n\u003c/p\u003e\n\n## Contributors\n\n[Here](https://github.com/saproto/saproto/graphs/contributors) you can find the people that have contributed to the code\nto this project. But, let's not forget the other members of\nthe [HYTTIOAOAc](https://www.proto.utwente.nl/committee/haveyoutriedturningitoffandonagain)!\n\n## Prerequisites\n\nThis README is tailored to using Docker in WSL2 (Ubuntu) on Windows using Laravel Sail. Laravel Sail also supports MacOS\nand Linux, however you may encounter issues with the installation instruction below when using a different operating\nsystem.\n\nBefore following the installation instructions, you need to have a working installation of WSL2, Docker and Git. You can\ninstall docker using the official instructions at [docs.docker.com](https://docs.docker.com/get-docker).\nJetBrains [PhpStorm IDE](https://www.jetbrains.com/help/phpstorm/installation-guide.html) is strongly recommended for\ndevelopment on this project, especially with the laravel plugin for proper code completion and reverences.\n\n## Setup\n\nThis website can be run locally through Docker by using Laravel Sail. For more information on using Laravel Sail check\nout their [documentation](https://laravel.com/docs/sail).\n\n### Download\n\nFirst you need to clone the repository into a folder in WSL2.\n\n#### If you set an SSH key:\n\n```\ngit clone git@github.com:saproto/saproto.git\n```\n\n#### Otherwise, use HTTPS:\n\n```\ngit clone https://github.com/saproto/saproto.git\n```\n\n### Installation\n\nAfter installing Docker and cloning the repository the following instructions can be run in the terminal in the source\nfolder of the project.\n\n#### Configuration\n\nCopy and rename `.env.dev` to `.env`.\n\n```\ncp .env.dev .env\n```\n\nAfter that, open the new `.env` file and set the `PERSONAL_PROTO_KEY` to your personal Proto key, which can be\nfound/generated on the bottom of [your dashboard](https://www.proto.utwente.nl/user/dashboard) on the ***live*** Proto\nwebsite.\n\n#### Server-side dependencies\n\nWhen first cloning the project you may not have a functional installation of the correct version of PHP or Composer. To\ninstall Laravel sail and its dependencies it is therefore necessary to spin up a temporary container.\n\n```shell\ndocker run --rm \\\n    -u \"$(id -u):$(id -g)\" \\\n    -v $(pwd):/var/www/html \\\n    -w /var/www/html \\\n    laravelsail/php82-composer:latest \\\n    composer install --ignore-platform-reqs --no-scripts\n```\n\n#### Laravel Sail alias\n\nBy default, Laravel Sail commands are invoked using the `vendor/bin/sail` script. That is a lot of characters to type\nevery time you want to execute a command. So, instead you can create an alias. By adding the alias definition\nto `~/.bash_aliases` (WSL2/Linux) or `~/.zshenv` (macOS) the alias will persist between terminal restarts.\n\n*The rest of these instruction will assume that you successfully added the `sail` alias.*\n\nWSL2/Linux/macOS High Sierra or earlier:\n\n```shell\necho \"alias sail='[ -f sail ] \u0026\u0026 bash sail || bash vendor/bin/sail'\" \u003e ~/.bash_aliases\n```\n\nmacOS Catalina or newer:\n\n```shell\necho \"alias sail='[ -f sail ] \u0026\u0026 bash sail || bash vendor/bin/sail'\" \u003e ~/.zshenv\n```\n\n#### Initial application setup\n\n```\nsail up -d\nsail composer install\nsail artisan key:generate\nsail artisan webpush:vapid\nsail artisan migrate --seed\n```\n\n#### Client-side dependencies\n\nTo install the client-side dependencies you'll need to run `sail npm install` to install all client-side dependencies.\n\nTo compile the project assets (JS/CSS) run `sail npm run build` to compile once or `sail npm run dev` to keep checking\nfor changes to scripts or stylesheets.\n\nWhen adding a new library or client-side dependency through npm don't forget to require the scripts in `application.js`\nand the stylesheet in `vendor.scss`.\n\n#### WebPush notifications\nFor WebPush notifications we use the [webpush](https://github.com/laravel-notification-channels/webpush) notification channels.\nTo set it up you need to generate the vapid keys once by running:\n`sail artisan webpush:vapid`\n\n#### Websockets\n\nIn some parts of the website we use websockets to update the page in real-time.\nFor this we use a soketi server. This runs in a docker container in your sail setup.\n\nFor the frontend we use the [Laravel Echo](https://laravel.com/docs/broadcasting) library to connect to the\nwebsocket server.\n\n#### Localhost\n\nWhen you have finished the above setup the following port will be exposed on localhost.\n\n- `8080` = Website\n- `8081` = PhpMyAdmin\n- `8082` = [Mailpit](https://github.com/axllent/mailpit)\n\nYou can sign in with the same Proto username you use on the ***live*** website and the password given to you during the\ndatabase seeding. This user will have full admin rights on the ***local*** website.\n\n#### Known WSL2 + Git issue\n\nDue to the permission changes, Git might detect that all files have been changed. If this is the case,\nrun `git config core.filemode false` to make git ignore the permission changes.\n\n### Useful commands\n\n#### Start server\n\n```\nsail up -d\n```\n\n#### Stop server\n\n```\nsail stop\n```\n\n#### Access to app container\n\n```\nsail shell\n```\n\n#### Nuke your database *(run in container)*\n\n```\nsail artisan migrate:fresh --seed\n```\n\n### Code completion, style and static analysis\n\n##### IDE-helper\n\nWhen writing code it is useful to have tools such as code completion and linting in an integrated development\nenvironment (IDE). As mentioned before [PHPStorm](https://www.jetbrains.com/phpstorm/) is the recommended IDE for this\nproject. To add additional code completion for Laravel you can run `sail composer ide-helper` in the docker container to\nlet [Laravel-IDE-Helper](https://github.com/barryvdh/laravel-ide-helper) generate an `_ide_helper.php` file which tells\nPHPStorm what certain classes and function are, so it can perform proper code completion and show documentation.\n\n##### PHP-CS-Fixer\n\nRun `sail composer fix` in the docker container to fix stylistic errors in your code\nusing [PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer). This will also be done automatically when creating a\npull-request or pushing to a branch with an open pull-request.\n\n##### Laravel Rector\n\nRun `sail composer rector` in the docker container to automatically upgrade your code\nusing [Laravel-Rector](https://getrector.com/documentation) to meet the rules set in rector.php.\nThis will also be done automatically when creating a\npull-request or pushing to a branch with an open pull-request.\n\n##### Larastan\n\nThere is also the option for static analysis of your code. Run `sail composer analyse` in the docker container to\nlet [Larastan](https://github.com/nunomaduro/larastan) find any potential bugs in your code.\n\n## Debugging\n\n### Xdebug\n\nXdebug is activated in Laravel Sail to aid you while debugging the website. Xdebug enables breakpoints and step\ndebugging which can easily be controlled from your IDE. For this to work, you will have to set up your IDE correctly.\n\n#### Xdebug in PhpStorm\n\nPhpStorm for zero-configuration debugging. In case of zero-configuration debugging, you do not need to create any debug\nconfiguration. Instead, you open the starting page of your PHP application in the browser manually, and then activate\nthe debugging engine from the browser, while PhpStorm listens to incoming debugger connections. For full instructions on\nhow to use zero-configuration debugging, check out\nthe [PhpStorm documentation](https://www.jetbrains.com/help/phpstorm/zero-configuration-debugging.html)\n\n### Clockwork\n\n[Clockwork](https://underground.works/clockwork) is a php dev tool in your browser. When running the website in debug\nmode you can access the clockwork debug page at \u003clocalhost:8080/clockwork\u003e. The application has various debugging\nfeatures such as timelines of runtime requests, database queries and client-metrics.\n\n### Testing\n\nFor testing we use Pest for testing.\nThese tests should be run locally, but are also run on every PR in GitHub Actions.\n\nIf tests are failing, and it shows that all the tests using a database fail, you should run\n```sail artisan optimize:clear``` first.\n\n#### Pest\n\nThe Pest tests can be run with the following command:\n```sail test```.\nIf you do not need the output and want it to go faster you can use the ```--parallel``` flag.\n\nTo make a new test you can use the following command:\n```sail artisan make:test {{TestName}}```.\n\nTo make a unit test you can use the following command:\n```sail artisan make:test {{TestName}} --unit```.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaproto%2Fsaproto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaproto%2Fsaproto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaproto%2Fsaproto/lists"}