Makkelijke Markt is een project van de Gemeente Amsterdam. Meer informatie over dit project is te vinden op de website van het Datalab van de Gemeente Amsterdam
Makkelijke Markt bestaat uit twee repositories: API + Dashboard
Veel van onze software wordt als open source gepubliceerd zodat andere gemeentes, organisaties en burgers de software als basis en inspiratie kunnen gebruiken om zelf vergelijkbare software te ontwikkelen. De Gemeente Amsterdam vindt het belangrijk dat software die met publiek geld wordt ontwikkeld ook publiek beschikbaar is.
De Gemeente Amsterdam heeft deze code gepubliceerd onder de Mozilla Public License v2. Een kopie van de volledige licentie tekst is opgenomen in het bestand LICENSE.
Dit project maakt gebruik van diverse andere Open Source software componenten. O.a. Symfony, Doctrine, Composer, Monolog, Twig, Swiftmailer, PHPExcel, ExcelBundle, Nelmio API Doc, Nelmio Cors Bundle, Flysystem
Om deze software te draaien moet je beschikking hebben over een webserver met PHP (Apache, Nginx of IIS) en een PostgreSQL databaseserver.
Om de SMS functionaliteit te kunnen gebruiken heb je een contract nodig met een SMS service provider. Geïmplementeerd is de provider MessageBird.
Maak een nieuwe PostgreSQL database aan voor dit project. Voer met een superuser onderstaand statement uit om de UUID functies beschikbaar te maken.
CREATE EXTENSION "uuid-ossp";
Maak een clone van de code.
git clone [email protected]:amsterdam/makkelijkemarkt-api.git
cd makkelijkemarkt-api
composer install
Afhankelijk van je systeem en de rechtenstructuur moet je sommige directories beschrijfbaar maken. Zie ook Setting up or Fixing File Permissions in de handleiding van Symfony 2.7. De volgende directories moeten schrijfbaar zijn voor Symfony
- app/cache
- app/logs
- web/media
Installeer composer en voer een composer install uit
curl -sS https://getcomposer.org/installer | php
php composer.phar install
Voer Doctrine Migrations uit om de database te initialiseren
php app/console doctrine:migrations:migrate
Voer ten slotte een cache clear uit voor dev en prod om zeker te weten dat alle cache gereed is.
php app/console cache:clear --env=dev
php app/console cache:clear --env=prod
Configureer ten slotte een vhost van de webserver. Zie ook de specifieke handleiding per webserver in de Symfony 2.7 handleiding
De aanbevolen manier is met Docker compose ( https://docs.docker.com/compose/ )
- Kopieer .env.local uit de Vault ( https://vault01.shared-services.amsterdam.nl:8200/ui/vault/secrets/secret/list/teams/salmagundi/ )
- run
docker-compose down && docker-compose build && docker-compose up
Om gegevens uit Ceniam te importeren zijn de volgende imports beschikbaar, deze kunnen periodieke gedraaid worden
- Markt: php app/console makkelijkemarkt:import:perfectview:markt Markt.csv --env=prod
- Koopman: php app/console makkelijkemarkt:import:perfectview:koopman Koopman.csv --env=prod
- Sollicitatie: php app/console makkelijkemarkt:import:perfectview:sollicitatie Sollicitatie.csv --env=prod
- Fotos: php app/console makkelijkemarkt:import:perfectview:foto Koopman.CSV fotos/ --env=prod
Met het volgende commando worden de docs voor de swagger opnieuw gegenereerd:
./vendor/bin/openapi src --output public/api-doc.json --format json --pattern "*.php"
Documentatie: https://github.com/zircote/swagger-php
Tijdens de build van de container en in een pre-commit hook draaien php-cs-fixer en phpstan, om dit handmatig te doen run je:
vendor/bin/grumphp run