Skip to content
This repository has been archived by the owner on Feb 13, 2023. It is now read-only.

Commit

Permalink
Merge pull request #323 from ergonode/release/v0.6.0
Browse files Browse the repository at this point in the history
Release/v0.6.0
  • Loading branch information
rprzedzik authored Jan 16, 2020
2 parents 87ca2a8 + 7e15f93 commit 4795f16
Show file tree
Hide file tree
Showing 1,665 changed files with 55,788 additions and 17,849 deletions.
45 changes: 45 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env contains default values for the environment variables needed by the app
# * .env.local uncommitted file with local overrides
# * .env.$APP_ENV committed environment-specific defaults
# * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration

###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=2l386svw9n673j2uj52mqcxr74qj5jnd
#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
#TRUSTED_HOSTS='^localhost|example\.com$'
###< symfony/framework-bundle ##

###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
DATABASE_URL=pgsql://ergonode:123@postgres:5432/ergonode?serverVersion=9.7&charset=utf8
###< doctrine/doctrine-bundle ###

###> lexik/jwt-authentication-bundle ###
JWT_PRIVATE_KEY_PATH=config/jwt/private.pem
JWT_PUBLIC_KEY_PATH=config/jwt/public.pem
JWT_PASSPHRASE=1234
JWT_TOKEN_TTL=86400
###< lexik/jwt-authentication-bundle ###

###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN=^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$
###< nelmio/cors-bundle ###

###> app settings ###
APP_HOST=localhost
APP_SCHEME=http
APP_URL=http://localhost:8000
###< app settings ###

11 changes: 0 additions & 11 deletions .env.dist

This file was deleted.

6 changes: 6 additions & 0 deletions .env.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# default env variables for the test env here
# To override settings in this file you need to create .env.test.local and change your setting in this new file
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
DATABASE_URL=pgsql://ergonode:123@postgres:5432/ergonode_test?serverVersion=9.7&charset=utf8
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
/.env

###> symfony/framework-bundle ###
/.env.local
/.env.local.php
/.env.*.local
/public/bundles/
/var/
/vendor/
###< symfony/framework-bundle ###
/import
/tmp
.history
Expand All @@ -10,4 +15,6 @@
/build
/phpunit.xml
/behat.yml
/.env.local.php
/.phpcs-cache
/.deptrac.cache
/.*.pid
21 changes: 20 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,30 @@
language: php

php:
- 7.2

install:
- composer install

services:
- postgresql
addons:
postgresql: "10"
apt:
packages:
- postgresql-10
- postgresql-client-10
before_script:
- psql -c "CREATE ROLE ergonode LOGIN PASSWORD '123' CREATEDB" -U postgres
- psql -c 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp";' -U postgres --dbname template1
- psql -c 'CREATE EXTENSION IF NOT EXISTS "ltree";' -U postgres --dbname template1
- psql -c 'CREATE DATABASE ergonode_test OWNER ergonode' -U postgres
- openssl genrsa -aes256 -passout pass:1234 -out "config/jwt/private.pem" 4096
- openssl rsa -pubout -in "config/jwt/private.pem" -passin pass:1234 -out "config/jwt/public.pem"
env:
global:
- APP_ENV=test
- DATABASE_URL="pgsql://ergonode:123@localhost:5432/ergonode_test?serverVersion=10&charset=utf8"
script:
- php bin/phing check:style
- php bin/phing test:unit
- php bin/phing test:behat
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
## CHANGELOG FOR 0.6.0
- feature - Add product history log
- feature - Add core notifications
- feature - Add workflow notifications
- feature - Add comment module
- feature - Add system attribute
- improvement - Grid query optimisation, add advanced filter support
- fix - .env according to Symfony 4.3
- improvement - Behat optimisation and added more tests
- improvement - Upgrade Code Sniffer
- experimental - Add deptrac
- experimental - Remove GfreeauGetJWTBundle
- improvement - Merge attribute to one module
- improvement - Change domain events to work with Symfony Message component

## CHANGELOG FOR 0.5.0
- feature [#115](https://github.com/ergonode/backend/issues/115) Product segment functionality (rprzedzik)
- feature [#118](https://github.com/ergonode/backend/issues/118) Event store history (BastekBielawski)
Expand Down
170 changes: 49 additions & 121 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<p align="center">
<a href="https://ergonode.com" target="_blank">
<img src="https://img.shields.io/badge/version-0.5.0-4c9aff.svg" alt="Version">
<img src="https://img.shields.io/badge/version-0.6.0-4c9aff.svg" alt="Version">
</a>
<a href="https://ergonode.com" target="_blank">
<img src="https://img.shields.io/badge/version%20code-Vegas-00bc87.svg" alt="Code Version">
Expand All @@ -22,113 +22,11 @@
<img src="https://img.shields.io/github/license/ergonode/backend.svg" alt="License">
</a>
</p>
<br>

## Welcome to the world of Ergonode :)

Ergonode is an open-source project of a new Product Information Management system (PIM). We have set ourselves the goal of building a completely new system from scratch, which will be able to easily out-of-the box handle 100k+ product references, and in addition will provide maximum user satisfaction with product management.

It is a system that can be easily integrated with many popular e-commerce platforms (Magento, Shopware, PrestaShop, Shopify, Sylius, etc.).

Ergonode will be always full open-source project. Currently, the system is in the phase of product catalog stabilization and import. We invite all developers who want to develop a new quality of shopping experience with us, we are open to contributors and support, because the project is not developed by large team (we are small but extraordinary team of designers, programmers and product managers).

If you are a new developer and need help, feel-free to ask questions our core team on our [slack][slack]:

`@Marcin Piwowarczyk` (product vision and strategy)

`@Rafal Przedzik` (backend architecture)

`@Sebastian Bielawski` (backend integrations)

`@Maciej Kaczorowski` (frontend architecture)

`@Piotr Bletek` (frontend architecture)

`@Mateusz Kolankowski` (documentation and backend support)

`@Marcin Warzynski` (product requirements management)

**We are looking for core team members who willing to support us and help Ergonode awesome software.** Interested? Contact to @Marcin Piwowarczyk on slack.

At the moment we prepare full list contribution rules, to support devs before making any pull request. Pull request that doesn't meet these rules will not be merged and included to core functions.

## Ergonode awesome functions

#### Grid Management

Ergonode is first and foremost an efficient environment for managing products from the list level. The solution enables you to filter and edit hundreds of products at once at any time, thanks to which mass content editing becomes pleasant and convenient. The system is easy to use, yet it has the capabilities of a spreadsheet.

In Ergonode you can edit and translate products information directly from spreadsheet view. Moving around cells is now fast and comfortable by supporting simple keyboard shortcuts.

![](https://ergonode.com/wp-content/uploads/grid-management.jpg)

#### Filtering products

Ergonode lets you to easily manage spreadsheet columns by simple drag and drop actions. The system allows you to adjust the appearance of the products spreadsheet to suit their needs and preferences.

The solution allows you to filter products information at any time by choosing any attributes and preferences you want.

![](https://ergonode.com/wp-content/uploads/filtering-productslters.jpg)

#### Product Template Designer

Ergonode allows you to create any feature describing the product. You can create attributes that are text fields for filling in, single and multi-selection fields, as well as complex features such as price or unit.

All of this, included in a simple and intuitive wizard, allows you to create any structure of the product sheet.

![](https://ergonode.com/wp-content/uploads/template-designer.jpg)

## System Architecture

From the very beginning, Ergonode was designed to provide maximum satisfaction not only for product and conent managers, but especially for developers.

The system architecture was built entirely based on **[Domain Driven Design][ddd]** approach using **[Command Query Responsibility Segregation (CQRS)][cqrs]** and **[Event Sourcing][es]**.

Thanks to this, we have gained unprecedented flexibility in managing every element of the system from the moment of its creation and a trouble-free division/exchange of databases in individual areas of the system.

The system consists of two main independent Backend and Frontend applications, which communicate with each other through the RestAPI interface.

On the front side we've used headless approach with Vue.js application. Thanks to that we have gained an increase in the performance and speed of the application, as well as the readiness to fully adapt the system as a Desktop Progressive Web App.

![](https://ergonode.com/wp-content/uploads/2-1024x788.png)


#### Backend Technologies

- PHP 7.2
- Symfony 4.3
- Postgres 9.6 (uuid-ossp, ltree)
- RabbitMQ (optional)
- Redis (optional)
- Elasticsearch (optional)
- Nginx (possible Apache)
- MongoDB (optional)

#### Front-End Technologies

- Vue.js
- Nuxt.js
- Node.js
- SASS
- Axios
- BEM (CSS)
- ESLint (Airbnb standard)

#### Tests

- Phpunit
- Behat (API)
- JestJS

#### Domain Driven Design Approach

- CQRS
- ES
- SAGA
- EVENT BUS

## Instalation

**1) Manual**

Download project repository (ergonode) to your local directory:
```
git clone [email protected]:ergonode/backend.git
Expand All @@ -137,16 +35,21 @@ Open your terminal in local project, and execute:
```
composer install
```
In .env file you need to configure database connection
Add `.env.local` file and configure database connection
```
DATABASE_URL=pgsql://db_user:[email protected]:5432/db_name
```
Generate keys

Now you need generate jwt keys with command
```
openssl genrsa -out config/jwt/private.pem -aes256 4096
openssl rsa -pubout -in config/jwt/private.pem -out config/jwt/public.pem
```
While executing above commends you would be asked about password. This password needs to be saved then in .env file in line `JWT_PASSPHRASE=yourpassword`

While executing above commends you would be asked about password. This password needs to be saved then in `.env.local` file
```
JWT_PASSPHRASE=yourpassword
```

In terminal execute command which configure application (Available phing commands):
```
Expand All @@ -162,18 +65,46 @@ or more complex data:
bin/phing database:fixture:dev
```

To create user execute console command
```
bin/console ergonode:user:create email name surname password language_code [role]
```
> eg. *bin/console ergonode:user:create [email protected] John Snow 123 EN*
Run build in server
```
bin/console s:r
```

Run frontend application and login with credentials given in above user creating command.
Run [frontend application][frontend] and login with credentials `[email protected]` password `abcd1234`.

**2) Using Docker**

Documentation how to install: [docker repository][docker]

## Documentation

The project is in early stage and we have got a lot of milestones to develop. We do our best to deliver great documentation, but - to be honest - it is the hardest thing in open-source projects :)

**Please find out what we've already prepared on [docs.ergonode.com][docs]**

#### Backend Technologies

- PHP 7.2
- Symfony 4.3
- Postgres 9.6 (uuid-ossp, ltree)
- RabbitMQ (optional)
- Redis (optional)
- Elasticsearch (optional)
- Nginx (possible Apache)
- MongoDB (optional)

#### Tests

- Phpunit
- Behat (API)


#### Domain Driven Design Approach

- CQRS
- ES
- SAGA
- EVENT BUS

## Build with us community on Slack

Expand All @@ -183,11 +114,6 @@ If you have any questions or ideas feel free to join our [slack][slack].

No! At the moment we have only one testing implementation to production environment (with more than 150k+ product indexes and integration with Magento Commerce 2.3), but in our opinion system still needs to be stabilised and we recommend not to use it at the moment in production mode. We still develop the core and there could be a lot of changes in the near future. If you want to know when it will be production ready look at Ergonode Roadmap.

## Documentation

The project is in early stage and we have got a lot of milestones to develop. We do our best to deliver great documentation, but - to be honest - it is the hardest thing in open-source projects :)

**Please find out what we've already prepared on [docs.ergonode.com][docs]**

## Roadmap

Expand All @@ -208,11 +134,13 @@ Ergonode is open-source, and it can be brought to you only by great community an
Ergonode source code is released under the [OSL 3.0 License][license].

[discord]: https://discord.gg/NntXFa4
[slack]: https://join.slack.com/t/ergonode/shared_invite/enQtNzEwMjkwOTQwOTM0LWQ4YWYwMWJmZGExYzQxMGMwZTFjMjg4MjQyNmU3NjY1MWU1OTE1MjA2N2ExMzA1MGQ1ZDJjMzkxMTQzNTBmMGM
[slack]: https://ergonode.slack.com/join/shared_invite/enQtOTA2ODY0ODMxNTI0LThlZGE2YWE0YzY4NzU1ODk3NWRmNTJiMGI2NmM5ZTgxYTk0MWRhMjM1Y2M4MjdjZjAxY2FkOWE1M2FhZmJkMDY
[contribut]: http://docs.ergonode.com/#/contribution
[license]: ./LICENSE.txt
[roadmap]: https://ergonode.com/features/#roadmap
[docs]: https://docs.ergonode.com
[ddd]: https://en.wikipedia.org/wiki/Domain-driven_design
[cqrs]: https://en.wikipedia.org/wiki/Command%E2%80%93query_separation
[es]: https://dev.to/barryosull/event-sourcing-what-it-is-and-why-its-awesome
[frontend]: https://github.com/ergonode/frontend
[docker]: https://github.com/ergonode/docker
6 changes: 3 additions & 3 deletions behat.yml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ default:
kernel: '@kernel'
- AuthenticationContext:
username: '[email protected]'
password: '123'
password: 'abcd1234'
- AttributeContext:

extensions:
App\Tests\Behat\Extension\EnvVarProcessorExtension: ~
Behat\Symfony2Extension:
kernel:
bootstrap: 'features/bootstrap/bootstrap.php'
class: 'App\Kernel'
Imbo\BehatApiExtension:
apiClient:
base_uri: 'http://localhost:8000'
base_uri: '%env(APP_URL)%'
timeout: 5.0
verify: false

Loading

0 comments on commit 4795f16

Please sign in to comment.