Setting things up

You must have completed the installation setup before doing this.

Now go and visit localhost:18080 in your browser. You should see a foodsharing instance running on your local machine :)

For generating a bit of initial data to play with, execute the seeding script:

./scripts/seed

It will give you some users that you can log in with:

EmailPasswordRole
user1@example.comuserFoodsharer
user2@example.comuserFoodsaver
storemanager1@example.comuserStore manager
storemanager2@example.comuserStore manager
userbot@example.comuserAmbassador
userbot2@example.comuserAmbassador
userbotreg2@example.comuserAmbassador
userorga@example.comuserOrgateam

Users with workgroup functionality in the region

EmailPasswordworkgroup function
userwelcome1@example.comuserWelcome
userwelcome2@example.comuserWelcome
userwelcome3@example.comuserWelcome
userwelcome4@example.comuserWelcome
uservoting1@example.comuserVoting
uservoting2@example.comuserVoting
uservoting3@example.comuserVoting
uservoting4@example.comuserVoting
userfsp1@example.comuserfoodshare point
userfsp2@example.comuserfoodshare point
userstorecoordination1@example.comuserStore coordination
userstorecoordination2@example.comuserStore coordination
userstorecoordination3@example.comuserStore coordination
userreport1@example.comuserReport
userreport2@example.comuserReport
userreport3@example.comuserReport
usermediation1@example.comuserMediation
usermediation2@example.comuserMediation
usermediation3@example.comuserMediation
userarbitration1@example.comuserArbitration
userarbitration2@example.comuserArbitration
userarbitration3@example.comuserArbitration
userarbitration4@example.comuserArbitration
userfsmanagement1@example.comuserFSManagement
userfsmanagement2@example.comuserFSManagement
userfsmanagement3@example.comuserFSManagement
userpr1@example.comuserPR
userpr2@example.comuserPR
userpr3@example.comuserPR
userpr4@example.comuserPR
userpr5@example.comuserPR
usermoderation1@example.comuserModeration
usermoderation2@example.comuserModeration
usermoderation3@example.comuserModeration
usermoderation4@example.comuserModeration

Some users have additional permissions by being admins of global working groups:

EmailPasswordworkgroup function
storemanager2@example.comuserSupport

Please refer to the User Roles and Permissions section for details on the different roles.
Tip: You can use private browser windows to log in with multiple users at the same time!

The script also generates more dummy users and dummy data to fill the page with life (a bit at least). Should you want to modify it, have a look at the file /src/Dev/SeedCommand.php.

Whenever you make changes to non-PHP frontend files (e.g. .vue, .js or .scss files), those are directly reflected in the running docker instance. Changes to PHP files will require a page reload in your browser.

To stop everything again, just run:

./scripts/stop

PHPMyAdmin is also included: localhost:18081. Log in with:

FieldValue
Serverdb
Usernameroot
Passwordroot

There you can directly look at and manipulate the data in the database which can be necessary or very useful for manual testing and troubleshooting.

MailDev is also included: localhost:18084. There you can read all e-mails that you write via the front end.

php Code style

We use php-cs-fixer to format the code style. The aim is to make it use the same style as phpstorm does by default. The fixer is based on the @Symfony ruleset, with a few changes.

To format all files, you can run:

vendor/bin/php-cs-fixer fix --show-progress=estimating --verbose

For convenience, you can and should add the code style fix as a pre-commit hook. So you will never commit/push any PHP code that does not follow the code style rules.

There are two possibilities:

Using local PHP

When PHP >= 7.0 is installed locally and the vendor folder is in place (by having used the automated tests or the dev environment), you can use your computers PHP to check/fix the codestyle, as this is the fastest option:

./scripts/fix-codestyle-local

Adding this to .git/hooks/pre-commit could look like that:

#!/bin/sh
HASH_BEFORE=$(git diff | sha1sum)
./scripts/fix-codestyle-local
# or use
# vendor/bin/php-cs-fixer fix --show-progress=estimating --verbose
# or
# ./scripts/fix
# if the -local script throws an error
HASH_AFTER=$(git diff | sha1sum)

if test "$HASH_AFTER" != "$HASH_BEFORE" ; then
  echo "PHP Codestyle was fixed. Please read the changes and retry commit."
  exit 1;
fi

Using docker PHP

Executing the following script will use the dev environment to run the codestyle check. As it currently always runs a new container using docker-compose, it will take some seconds to execute:

./scripts/fix

Using PHPstorm

If you happen to use PHPstorm you can add php-cs-fixer to those settings as well:

PHPstorm enable php-cs-fixer
PHPstorm inspections

Using VSCode

You can use the php cs fixer Extension. It should work right after a restart. To fix a file right click on it and select

VSCode PHP CS Fixer dialog

You can even configure it to fix your code style after saving a file under: Settings>PHP CS Fixer>Execute PHP CS Fixer on save for not commiting any non-fixed code.

Note: You need PHP installed locally for this.

Editorconfig

Depending on your editor you need to do nothing or install or configure a plugin to use the file .editorconfig. Please refer to the section about Code style.