Skip to content

With our portal, we want to support local authorities and merchants. We want to connect merchants with closed stores to their customers. And we want to keep in mind, that not every merchant has a sophisticated digital strategy - or even a homepage.

Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

About this project

This is a non-profit project. The portal is an open-source project that was created in collaboration with the Shopware community to help local retailers in this trying time.

It allows local governments, cities, or similar authorities to give local merchants an easy way of keeping in touch with their customers and selling goods and services online.

After installing the project on a web server, local authorities can register within the portal.

After registration and activation by the portal owner, a sub-portal will be automatically created for each local authority. After this step, local retailers can register within their local authority's sub-portal. Next, customers can register and interact with retailers in their area.



At the time this project is created, the COVID-19 pandemic has a serious impact on the economy. Since retail stores are forced to close, they now need new solutions to generate an income.

The portal project is trying to help. It is created to serve the project, but since it is open source anyone is able to set up a a web server and provide the same service as downtowns to their local community.

How it works

A picture is worth a thousand words, so here are some example screen designs of the portal. The text is in german, since the portal was initially developed for the german market.

The registration page

After the registration, the organisation has to be activated by the portal owner. Then these steps follow:

  • An organisation (e.g. a city) registers within the portal
  • Organisations are created as a sales channel
  • Retail stores register within the organisation, internally they are handled as categories
  • Retail stores can use an App to upload products
  • Users (buyers) can browse retail stores and see what’s in stock

This is how the landing page for an organisation or local authority looks:

Landing page for a local authority

And here is an example of a retailer's landing page:

Landing page for a retailer


How to install

The Portal

Prerequisites: docker, docker-compose, node/npm

⚠️ The docker setup currently only works if your user ID is 1000.
Execute id -u on your terminal to check.

Clone the project:

git clone

Change into the project directory, then start the docker containers, add the cache directory and change into the app container:

cd downtown
docker-compose up -d
docker-compose exec cli bash

When inside the app container, do a basic install, generate a JWT secret and an App Secret, then exit the container:

composer install
bin/console system:setup

Change the default credentials as listed and confirm those at the end:

Database user [app]: downtown
Database password: uptown
Database host [localhost]: mysql
Database port [3306]: 3306
Database name [shopware]: downtown
bin/console system:install --create-database --basic-setup --force

Check if your URL to /public folder [http://shopware.local] is set in /etc/hosts

Please note:

  • Administration is available at http://localhost/admin with user admin and password shopware
  • Each sales channel represents an organisation/local authority
  • Merchants show up in categories after registration and activation
  • Merchants register through the separate Angular Merchant Administration described below

You can shut down the portal with this command:

docker-compose down --remove-orphans

The Angular Merchant Administration

Currently there is no docker container available, so you need to start the project using npm.

Change into the directory src/MerchantFrontend. Then install dependencies and run the project:

cd src/MerchantFrontend
npm install && npm run start

After the promt Compiled successfully, the merchant portal is available at http://localhost:4200/.

Please be aware: The registration for organisations is currently not wired up to the portal, it's just a hubspot form, for production use replace it with your own. For new organisations please create a sales channel manually in the portal.

Merchants are able to register and choose a category. To activate a merchant either click on the link in the registration request e-mail or, in case you haven't set up e-mail sending in the portal, do it directly in the database:

docker-compose exec mysql mysql -p # password is root
USE downtown;
UPDATE merchant SET active=1, activation_code = null WHERE email='merchant@email.example';

Using the UI

Explaining how to use a UI is easier done via video, so here is a tutorial video on how to configure organisations and merchants:

Youtube: Portal tutorial video


Mollie Plugin

Mollie is the selected payment provider for downtown. If you want to enable these payment methods, please install and activate the Mollie plugin. Then activate required payment methods and assign it to your sales channel.

Please note, you have to change the APP_URL to be something else then localhost to comply with Mollie API guidelines. Use the /etc/hosts entry for local development.

Enable Payment Methods for Merchants

If you sign is as merchant you'll have access to a new payments tab in your account data. Here you can set your molli API keys and test modes.

In addition to this, you can select what payments of your assigned sales channel should be enabled for your merchant. Only payment methods that are valid for the sales channel and are enabled in here will be shown during the checkout.


You have an idea or you found an issue? Please open an issue here: shopwareDowntown/portal/issues Help retailers by contributing to this project.


shyim arnoldstoba PaddyS FloBWer JanPietrzyk PascalThesing Kevin Mattutat Andreas Wolf and-wolf oterhaar MalteJanz seggewiss maike93 Maike Sestendrup marcelbrode swDennis Oliver Terhaar xPand4B Carlos Jansen Carlosjan Draykee jakob-kruse lukasrump SebastianFranze Christian-Rades florianklockenkemper niklas-rudde dnoegel Jakob Kruse Luke Wenkers


With our portal, we want to support local authorities and merchants. We want to connect merchants with closed stores to their customers. And we want to keep in mind, that not every merchant has a sophisticated digital strategy - or even a homepage.





No releases published


No packages published