Git Product home page Git Product logo

backend's Introduction

Egronode logo

Modern Product Information Management Platform

Version Chat Docs License

Ergonode is modern PIM platform based on Symfony and Vue.js frameworks. It has modular structure and gives power of flexibility and easy management thousand of products. More info how to use it for merchants and users: https://userguide.ergonode.com

Installation

Download project repository (ergonode) to your local directory:

git clone [email protected]:ergonode/backend.git

Open your terminal in local project, and execute:

composer install

Add .env.local file and configure database connection

DATABASE_URL=pgsql://db_user:[email protected]:5432/db_name

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.local file

JWT_PASSPHRASE=yourpassword

In terminal execute command which configure application (Available phing commands):

bin/phing build

If you need basic data in terminal execute command:

bin/phing database:fixture

or more complex data:

bin/phing database:fixture:dev

Run build in server

bin/console server:run

For more information check our installation section in the documentation.

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 devs.ergonode.com

Backend Technologies

  • PHP 7.4
  • Symfony 4.4
  • Postgres 10
  • RabbitMQ

Tests

  • Phpunit
  • Behat (API)

Build with us community on Slack

If you have any questions or ideas feel free to join our slack.

Is it production ready?

Yes, We think so.

Roadmap

If you would like to find the current and future milestones for our project go to our Roadmap page.

Build Ergonode with us!

We are looking for Contributors: Back-end Dev, JS Devs, Tech Writers and Designers. Please read our contribution rules before making any pull request. If you have any questions or ideas feel free to join our slack or send us an email: [email protected]

Partners

Ergonode is open-source, and it can be brought to you only by great community and partners supported by our core team. If you want to be on that list please send us an email: [email protected]

The license

Ergonode source code is released under the OSL 3.0 License.

backend's People

Contributors

bastekbielawski avatar bleto avatar daniel-marynicz avatar dankempster avatar gomusss avatar kardi31 avatar lexthink avatar nimah79 avatar piotrkreft avatar rprzedzik avatar wfajczyk avatar wiewiurdp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

backend's Issues

Add roles and privileges

The goal of this task is to add the ability to manage roles and user privileges in the system.

Currently there is no such solution in the system,

Changes

  • Addition privilege object
  • Adding role object
  • Adding endpoint for grid action
  • Adding endpoint for fetch role information
  • Adding endpoint to delete a role
  • Adding endpoint for creating and editing role
  • Adding dictionary of privileges
  • Relating a role to a user

Add all users worklog grid endpoint

The goal

  • As part of the task it is necessary to add a new endpoint witch grid of all users worklogs

Changes

  • Add endpoint with users worklog grid
  • Verify existing user worklog grid

Installationproblems Backend (maybe Bug)

Hi Guys,
unfortunately the installation process of the backend fails. It seems to be problems with the user/authentication creation.

bin/console ergonode:user:create [email protected] Max Muster 123 EN Admin 
User created.
Can't find role Admin

Even with the standard user created during the build ( it can be seen in the db) the authentication fails on the frontend. Any tips what we are doing wrong?

                  id                  | first_name | last_name | avatar_id |      username      |           password           |               role_id         
       |       roles        | language 
--------------------------------------+------------+-----------+-----------+--------------------+------------------------------+-------------------------------
-------+--------------------+----------
 86226855-10e2-43df-8e49-d174bd618dee | Jon        | Dove      |           | [email protected]  | iBt0Q5mZ++oT3LnTkrazXHUkoiE= | 03cd9635-d9db-4073-97e1-9aaec7
2557fa | ["ATTRIBUTE_READ"] | EN
 20e05172-acee-45a0-a2f8-37b2b4166c56 | John       | Snows     |           | [email protected] | iBt0Q5mZ++oT3LnTkrazXHUkoiE= | 03cd9635-d9db-4073-97e1-9aaec7
2557fa | ["ATTRIBUTE_READ"] | EN
 01290871-1682-432d-abf3-9c7286f77c9b | Max        | Muster    |           | [email protected]  | iBt0Q5mZ++oT3LnTkrazXHUkoiE= | 03cd9635-d9db-4073-97e1-9aaec7
2557fa | ["ATTRIBUTE_READ"] | EN
(3 rows)

And here the roles table

                  id                  | name  |                                 description                                 
--------------------------------------+-------+-----------------------------------------------------------------------------
 03cd9635-d9db-4073-97e1-9aaec72557fa | Admin | Manages Ergonode system, manages access to all permissions for other users.
(1 row)```

Thx.
best Markus

Deepl - Automatic translations

Goals
User have posilbilty to feel atribiuties in many languages automatically
DeepL - module for automatic translations

User Story
As a user, I want to be able to automatically translate attribute values when editing a product, using the automatic translations provided by the deepL solution.

Assumptions
The application should have an optional module that expands available functionalities with the possibility of automating translations of product values on the product edition tab
The administrator should be able to configure the parameters necessary to connect to the deepL service
The automatic translation function should be available only for languages supported by the deepL service
Administrator should be able to check the current status of the use of service limits

User activity flag

Goals
Add to user object activity flag

Todo

  • Active and deactive user event
  • Translation events for event log
  • Events and projections
  • Modify authenticator

Add product collection module

Overview

Currently it is not possible to group many products in collections (cross-sealing up-sealing ) so it is necessary to implement product collection module.

Goal

  • The solution should allow you to view, add, edit and delete collections.
  • Many products could be added to collection.
  • Collection should have visibility flag
  • Each product should have visibility flag

Tasks

  • Adding collection module
  • Adding models of objects representing collections
  • Adding collection endpoints
  • Adding collection system attribute

Event store history

Goals:

Establish delete functionality

Todo:

  • Create event store history tables for every event store (same as event store table + numerator field)
  • Add delete event mechanism for moving events do history table
  • Refactor actual delete mechanism for new one

Template designer - layout improvement

The goal is to modify Template Designer behaviours.

  • At the moment, the template sections are a separate collection, regardless of the template elements, they should be moved to the list of template elements so that they can behave in the same way.
  • added section elements should be marked as new variant: UI Template Element

Changes

  • Create new UITemplateElement Entity
  • Refactor Template domain commands
  • Refactoring Template Entity
  • Update Template Designer API actions
  • Change element list end point
  • Refactor product draft API on product edit card

Date column not filtering

Bug type

Code

Current behavior

Date column filtering not work

Input Code

<?php
    # issue code here

Expected behavior

Possible Solution

Environment


Ergonode version: X.Y.Z

 
Detailed information:
- PHP version: 

Others:

Multiple category trees

As a user I want to have possibility to create more then one category tree in the system.

  • Grid of trees for managing them
  • Add new tree button
  • Setting general option tab
  • Adding translation tab
  • Adding save button
  • Moving category tree edit to separate tab

Create Export Module

Overview

Currently it not possible exported product list to other systems.

Goal

To export product to other system must building a new module.

Tasks

  • Building product information
  • Building category information
  • Building attribute information

Product segment functionality

Goal
The purpose of this task is to add functionality to product segments.

Description
A product segment is configurable object using a variety of conditions.
The conditions are configurable and allow the products to be filtered according to them.
The conditions within a segment are cumulative.
Segment calculation is asynchronous.

  • Creating segment module
  • Modelling segment objects
  • Modelling Condition objects
  • Creating Validation/form services
  • Creating configuration services
  • Create calculation Service
  • Add api endpoints

Attribute Option grid

Goal

As a user I would like to have the endpoint to see the list/grid of all option for selected attribute

Add Workflow Transitions

Goals
As a user I want to see have possibility to configure transitions between statuses, give name to it.

To do

  • Modelling Transition VO
  • Add transition list endpoint
  • Add Create, Delete statuses endpoint

Workflow Transitions

The goal of this issue is add transitions to workflow

  • Transistion grid endpoint
  • Status information and manipulation endpoints

Multimedia grid endpoint

Goal

As a user I would like to have the opportunity to see the list of available photos (multimedia)

Todo

  • Create Multimedia grid object with columns: name, image miniature, extension, mime type, size in bytes
  • Create new grid column type based on number. Format result number as file size B, KB, MB, GB etc
  • Create Multimedia grid endpoint
  • Create API tests

Hotfix - Duplicate projection call

Bug type

Code

Current behavior

Events CategoryTreeCategoryAddedEvent and CategoryTreeCreatedEvent are called twice

Expected behavior

Projection should be called only once

Possible Solution

Remove unnecessary event procesing from
Ergonode\Product\Infrastructure\EventSubscriber\ProductDomainEventSubscriber

Environment

Ergonode version: 0.1.1

Error 500 from Server on Login

Bug type

Symfony complains
Script cache:clear returned with error code 255
!!
!! Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "ErgonodeAuthenticationBundle" from namespace "Ergonode\Authentication".
!! Did you forget a "use" statement for another namespace? in /var/www/src/Kernel.php:46
!! Stack trace:
!! #0 /var/www/vendor/symfony/http-kernel/Kernel.php(424): App\Kernel->registerBundles()
!! #1 /var/www/vendor/symfony/http-kernel/Kernel.php(130): Symfony\Component\HttpKernel\Kernel->initializeBundles()
!! #2 /var/www/vendor/symfony/framework-bundle/Console/Application.php(159): Symfony\Component\HttpKernel\Kernel->boot()
!! #3 /var/www/vendor/symfony/framework-bundle/Console/Application.php(65): Symfony\Bundle\FrameworkBundle\Console\Application->registerCommands()
!! #4 /var/www/vendor/symfony/console/Application.php(148): Symfony\Bundle\FrameworkBundle\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
!! #5 /var/www/bin/console(43): Symfony\Component\Console\Application->run(Object in /var/www/src/Kernel.php on line 46
!!

Current behavior

After working for number of days, backend now throws 500 to client.

Add phpstan

Add phpstan analysis tool to to the application.
Rule level 1

User activity log

#The goal is add grid endpoint with user activity log.

  1. The information presented in the grid should be based on events getting from Event Store.
  2. The content of logs should be translated

the grid should contain fields:

  • Date of event
  • User name or "system" in the case of system events
  • Content of the event

Remove FOSRestBundle (experimental)

Goals

  • If we use FOSRestBundle we cannot switch to ADR solution
  • Another advantage is resignation from Twig, it will be visible performance boost
  • FOSRestBundle is very old solution
  • We don't need to support many response formats like: XML, YAML and HTML
  • We can do everything with this in the future

Todo

  • Create custom error handler for exceptions (would be easier in SF 4.4 with new ErrorHandler component)
  • Create custom response objects based on JsonRespone class (we will force other developers to use standard solutions) like CreatedResponse, SuccessResponse, GridResponse and others
  • Refactor all controllers (we must remove AbstractFOSRestController and change way of building response)
  • Create routes for all actions in controllers (they must be the same as now)
  • Maybe we need to create custom response formatter based on Symfony event
  • Create RequestGridConfiguration param converter (helper for grid actions)
  • Test whole application

Category tree - add api endpoints

The goal is to add new Category Tree api endpoints.

  • Currently, actions for the category tree allow you to add and remove individual categories, after modifications, there should be separate actions for receiving and updating the entire category tree

Changes

  • Category Tree GET Action
  • Category Tree PUT Action

Separating grids rendering mechanism

The purpose of this task is to divide the grid rendering mechanism into separate classes.

The actual rendering mechanism is entirely inside the AbstractGrid class, it needs to be separated into new classes. Each rendering area (configuration, information, data list, etc.) is to be separated into independent renderers based on the same interface.

Csv File import from Magento 1/2

###Overview

Possibility to Import product form magento 1 and magento 2 csv export file

###Tasks

  • Add core functionality
  • Add Source class
  • Add Transformer generator interface
  • Add Magento 1 csv compatible import

Module Version Functionality

The goal of this task is to replacement or extension actual migration bundle with functionality that help control module version update and care about module dependencies.

  • Proposal functionality solutions
  • Implement Prof of concept
  • Create functionality

Update PHP to 7.4

Overview

In this time we update php core to 7.4.

Goal

Update typed properties in all application to standard php 7.4

Tasks

  • account
  • api
  • attribute
  • authentication
  • category
  • category-tree
  • comment
  • completeness
  • condition
  • core
  • designer
  • editor
  • event-sourcing
  • fixture
  • grid
  • importer
  • migration
  • multimedia
  • notification
  • product
  • product-simple
  • reader
  • segment
  • transformer
  • translation-deepl
  • value
  • workflow

Add channel module

Overview

Currently, it is not possible to select and configure export channels, so it is necessary to implement the Channels feature.

Goal

  • The solution should allow you to view, add, edit and delete channels.
  • The channels should be able to handle products from the selected Segment.
  • The channel model should be an abstract from which specific implementations will be created.

Tasks

  • Adding channel module
  • Adding models of objects representing channels
  • Adding channel processing service

Extend condition set - add new conditions

Overview

Segmentation of the product must be more flexible and allow it to be limited by more conditions

Goal

Add three new condition for product segmentation.

Tasks

  • Product belong to category
  • Product by SKU
  • Product template is

Refactoring user authentication

The goal is change the way of user authentication

  • Use Symfony Authenticators
  • Use domain User entity

Changes

  • Replace current authentication with Symfony Authenticators
  • Add Email value object
  • Change the way of User ID generation (build it from email)
  • Create domain User provider
  • Refactoring actual user change login method

Missing DefaultTemplateGenerator class

Bug type

Code

Current behavior

There is no class for default template generator

Expected behavior

The DefaultTemplateGenerator class should be available.

Bugfix - missing key exists checking

Bug type

Code

Current behavior

ProductAttributeExtension generates an error when key "value" is missing in the Record object

Expected behavior

Processing the value of this key should only be doing when it exists

Environment

Ergonode version: 0.1.1

ADR solution

Goal

Migrate to ADR (Action Domain Responder) solution

Delete functionality

Goal

Add delete functionality to all modules

Todo

  • Delete attribute
  • Delete category
  • Delete reader
  • Delete transformer
  • Delete user

JMS interface handler

Goals
Create universal solution for handling interfaces with JMS Serializer

To do

  • Create universal handler
  • Ergonode\Designer\Domain\ValueObject\TemplateElement\AbstractTemplateElementProperty
  • Ergonode\Attribute\Domain\ValueObject\OptionValue\AbstractOption
  • Ergonode\Transformer\Infrastructure\Converter\AbstractConverter
  • Ergonode\Reader\Domain\Formatter\AbstractFormater

Language configuration

Motivation

As a user I want to activate and dis-activate translation languages so that I can translate system objects, attributes or categories into chosen languages.

Solution
It is needed to add new api endpoints

  • Adding 'create language' grid endpoint
  • Adding 'update language' endpoint
  • Adding 'get language' endpoint

Improvements in roles and privileges

The goal is stabilize roles and privileges

  • Stabilize roles
  • Stabilize privileges
  • Improve roles and privileges in application

Changes

  • Add default roles to fixtures
  • Add default privileges to fixtures
  • Fill up README with fixtures setup instructions
  • Setup privileges for actions
  • Create custom role voter
  • Change privilege dictionary response
  • Add role column to users grid
  • Create privilege relations validator (read must be active if someone choose create, edit or/and delete)

Add product status

Goals
.As a user I want to see statuses of the products in order to learn on wich stage on workflow product is placed.

To do

  • Modeling status object
  • Adding Value Object - Color
  • Status grid - api endpoint
  • Get status api endpoint
  • Delete status api endpoint
  • Update status endpoint
  • Add default statuses
  • Connect statuses with product

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.