Я всё еще работаю над проектом, поэтому некоторые вещи могут оставаться нереализованными.
Этот репозиторий посвящен реализации предметно-ориентированного проектирования (DDD) с использованием Symfony 3, PostgreSQL и Redis для серверной части, а также Vue.js/SASS для фронтенда.
За основу проекта взята довольно простая предметная область — вишлист. Это список желаний, в который можно добавлять свои желания, а также их исполнять. Каждое желание имеет свою стоимость, размер ежедневного денежного вклада и копилку, выраженную набором вкладов в это желание. Чтобы исполнить желание, необходимо вложить в него достаточное количество денег. Ошибочные вклады можно удалять, либо перенаправлять на другие желания. У желаний могут быть излишки вкладов, которые также можно перенаправлять на другие желания.
Склонируйте репозиторий и выполните следующие команды, чтобы установить все зависимости и собрать скрипты со стилями для фронтенда:
cd /path/to/webroot
git clone https://github.com/franzose/symfony-ddd-wishlist.git
cd symfony-ddd-wishlist
composer self-update
composer install
npm install
./node_modules/.bin/encore dev
Для упрощения разворачивания базы данных и кеша в проекте используются образы Docker (так что его тоже придётся установить), указанные в файле docker-compose.yml.dist
. Выполните следующие команды, чтобы запустить PostgreSQL и Redis, а также заполнить базу данных начальными данными:
cp ./app/config/parameters.yml.dist ./app/config/parameters.yml
cp ./app/config/parameters_permanent.yml.dist ./app/config/parameters_permanent.yml
cp ./docker-compose.yml.dist ./docker-compose.yml
docker-compose up -d
php bin/console doctrine:fixtures:load --fixtures=/path/to/src/Infrastructure/Persistence/Doctrine/Fixture/LoadWishesData.php
php bin/console server:start
TODO: написать про структуру проекта
Если у вас возникли какие-либо проблемы в процессе использования данного приложения, пожалуйста напишите об этом в отдельной задаче. То же касается вопросов по реализации функциональности или запросов на добавление новых возможностей.
Любой вклад ценен. Данное приложение служит одним из примеров реализации предметно-ориентированного проектирования. Хорошим или плохим, это уже не мне решать. Поэтому я был бы очень рад распространению информации об этом репозитории в широкие массы (зараспространите среди жильцов вашего ЖЭКа, как вы это любите).
Приложение покрыто юнит- и функциональными тестами. Для функциональных тестов используется база данных SQLite. Перед запуском тестов скопируйте конфигурационный файл-образец PHPUnit:
cp ./phpunit.xml.dist ./phpunit.xml
Затем, чтобы запустить тесты, используйте следующую команду:
./vendor/bin/phpunit