Git Product home page Git Product logo

qilincloud's Introduction

Welcome!

Qilin.Cloud is a global technology platform for composable commerce. We're driven by our mission to enable developers creating fabulous products for every participant of e-commerce around the globe! Let's help them together, using the right tools at the right time!

Qilin.Cloud is uses MACHOP, a re-definition of MACH.

This space is a way for us to collaborate directly with developers like you.

What we’re doing

With Qilin.Cloud we've created a technological platform where all aspects of e-commerce seamlessly converge, ensuring rapid and efficient interchangeability regardless of the who, when, how much, and where. We understand the challenges faced by software developers and decision-makers in businesses, and our platform is designed to empower you to create extraordinary products for your users with an unprecedented time-to-market range, without compromising on stability, quality, or scalability.

Our powerful data orchestration engine allows you to tailor custom processors for your specific scenarios. Additionally, our process engine not only enables you to define, overview, and analyze processes but also automatically identifies inefficiencies, saving you valuable time and money in resolving them.

We are dedicated to continuous improvement, regularly adding new endpoints and methods, refining models, and addressing any bugs that may arise. Ensuring our services are well-documented is crucial to us, as our ultimate goal is to meet the needs of the Qilin.Cloud developer community and make your life easier. This space is intended to foster an open, fast, and uncomplicated exchange of ideas and solutions.

Join us on this journey to transform the e-commerce landscape and unlock the full potential of your business in a dynamic and efficient manner. Together, we'll redefine the possibilities and create extraordinary experiences for your users.

Looking for a new challening opportunity?

We are always looking for creative minds to join us as dev, architect, qc, pm, devop, secop and many more to build the Qilin.Cloud of tomorrow! Join our fascinating crowd: qilin.cloud/career.

Why we’re building in the open

We’ve spent a lot of time poring over data and charts, but we recognize that our users know their needs best. We also have a hunch that many of you share the same needs. By sharing our plans, documentation, and progress we can all work together to build the platform that you need. We strongly believe that building in the open, is more than just a phrase. We are advocats of open commerce, from our point of view it's the future of e-commerce.

Community

We invite you to join our open Slack Tech Talk channel: Join Slack Channel #external-devs. You will also find the latest updates on Qilin.Cloud and topics we'd like to share with you in our blog: qilin.cloud/blog.

Code of Conduct

This code of conduct outlines our expectations for all those who participate in the Qilin.Cloud projects and community programs, as well as the consequences for unacceptable behaviour. Please read carefully here: Code of Conduct

Contributing

It's awesome that you want to contribute to Qilin.Cloud, please read our contributing guidelines and keep the PRs coming! ❤️

Wiki

We recommend reading the wiki, here you will find the overview of how to use the Qlin.Cloud.

You are new to Qilin.Cloud? Check how to get started

Service Status Page

You will find the status of our services (APIs, Engines, Websites, etc.) in our discussions pinned and also here: status.qilin.cloud

Roadmap

Our roadmap is where you can learn about what features we're working on, what stage they're in, and when we expect to bring them to you. You will find roadmap in our discussions pinned and also here: roadmap.qilin.cloud

SDKs

We provide you some SDKs for common used languages here: Show me the SDKs

Code Quality

You will find some code-quality reports in the overview of each repository.

We use a variety of state-of-the-art techniques to ensure that our code meets the highest quality criteria. If you still notice something bad, we are happy to have a strong community to solve the problem together with you: How to provide Feedback

How to provide feedback

Generally, bugs and enhancements for the API or docs should be provided by the issues tab in the repository. Everything else takes place in the general discussions tab.

⚠️ For vulnerabilities please check out the security tab in the repository.

If you become aware of an infringement, please report at our whistleblower platform.

Legal

Note that by submitting your feedback / code, we have the right to use it.1

Footnotes

  1. Legalese-wise, this means it’s considered non-confidential and non-proprietary to you, and you grant Qilin.Cloud a non-exclusive, worldwide, royalty-free, irrevocable, sub-licensable, perpetual license to use and publish those ideas and materials for any purpose, without compensation to you.

qilincloud's People

Contributors

marc-costea avatar qilincloud-robot avatar

Stargazers

 avatar

qilincloud's Issues

Revise existing items

For our new public roadmap it is necessary, that historically since Jan 01 2023, our Azure Devops Items (like Epics, Product Backlog Item, Features, Impediments, Bugs, ...) are revised. 

Please read the acceptance criteria!

It would be also nice, if you can set a SubArea - if you are missing some, please write Marc C on slack which sub area needs to be inserted in Azure Devops.

After revising an item, please switch the Roadmap to true,.

PS: Comments must not be revised, they are not transfered to our public roadmap.

PPS: Images that are copy & pasted into the description could not be seen in the public roadmap (not possible due to legal reasons).

Acceptance Criteria

Each item must have:

  • Remove sensible information (like logins, tokens, etc.) from the item
  • Description so on external developer knows what this item is about
  • Acceptance Criteria
  • Start Date
  • Target Date
  • Effort
  • Area

Parent Item

Public Roadmap

POC Different Roadmap Systems

  1. Check which Roadmap systems exist on the market
  2. check its prices and compare features vs prices

Acceptance Criteria

  • must connect to Azure DevOps or have an API (so we can do the connector by our own)
  • must have a public view for website visitors without any login
  • should be customizable in its design, so we do not have an UI breach.

Parent Item

Public Roadmap

Product project

This feature fixes all problems in the Product project that are scanned and detected by the sonar cloud such as code coverage, duplicated code, code smell, and so on, so that, our code will meet the quality gate:

  • UT code coverage >= 80%
  • Duplication: < 3%
  • Code smell: 0
  • Vulnerability: 0

Parent Item

Code Quality

Sync between Azure DevOps and GitHub

The synchronisation between Azure Devops and GitHub Issues should be full automatically, so no one in the team must do this by hand.

This is a hard criteria, to have the safety that the public roadmap is always up to date with our internal state.

Acceptance Criteria

  • Works completly without any manual help
  • sync at least once per hour (more often = better)

Parent Item

Public Roadmap

Child Item

Order project

This feature fixes all problems in the Order project that are scanned and detected by the sonar cloud such as code coverage, duplicated code, code smell, and so on, so that, our code will meet the quality gate:

  • UT code coverage >= 80%
  • Duplication: < 3%
  • Code smell: 0
  • Vulnerability: 0

Parent Item

Code Quality

Event Processor

The event processor is a component that handles the events which were created after the data is routed by data orchestrator engine to detect the destination channel and create list of events need to be done and push them to queue. The event processor will read events list in queue and decide handle them in order or parallelly

Parent Item

Egression Module

API quota and limitation (rate limit and IOPD)

In this feature we implement a mechanism to limit using rate of subscribers based on their pricing plan. 

For example:

  • Subscriber A can send 100 request/s
  • Subscriber B can send a maximum 5000 requests/month
  • Subscriber C can 100 input/output actions per second

Parent Item

CORE

Event Grid

this is a component of the ingression module, it will listen to blob storage and trigger the workflow when a new JSON file is uploaded

Parent Item

Ingression Module

Cache project

This feature fixes all problems in the Cache project that are scanned and detected by the sonar cloud such as code coverage, duplicated code, code smell, and so on, so that, our code will meet the quality gate:

  • UT code coverage >= 80%
  • Duplication: < 3%
  • Code smell: 0
  • Vulnerability: 0

Parent Item

Code Quality

Data processing mining

this feature will develop a process mining module or integrate with a 3rd party tool to help to analyze data flow and give suggestions to improve the data flow to the end users

Parent Item

Data Orchestrator Engine

Egression Module

  • After being filtered and beautified by NiFi (or done by a 3rd party), objects as jobs need to be processed by Event Processor and sent to a particular Output Connector. The way that the Egression Module (EM) works is similar to a postal station. It looks at the payload of a job and decide that Whose (Subscription), From Where (Source), To Where (Target), When (Scheduled At), and What (Object Type, ObjectIds).
  • However, as a greedy person, Nifi (or 3rd party) wants to send a batch of jobs to save the time and cost and requires the EM to send jobs orderly or parallelly because of the dependencies of them. For ex, Category and Brand need to be processed ahead Product.
  • Therefore, in the postal station, we need to implement multiple conveyor-belts running concurrently and items in each belt will go by its order.

Explanation

https://dev.azure.com/marcossoftware/Qilin/_wiki/wikis/Qilin.wiki/748/Flows-In-Egression-Module?anchor=explanation

  1. NiFi (or 3rd party) will send Http requests to create jobs containing ObjectType and ObjectIds as well as information about SubscriptionId and Action to these jobs(Create, Update, Delete) to an API endpoint in Egression Module.
  2. By calling to the endpoint, jobs are pushed from DB to Event Processor
    3 and 4. EventProcessor will process jobs sequentially or parallel based on their partitionKey and do chain of business action. In every single job, it will check whether the Output Connector is over rate limit. If yes, the job will be delayed. Otherwise, it will send requests to Metadata APIs to get the payload (content) of objects in the job, and the Target Channel to determine correct Connector endpoint as well as the authentication method between Subscription and Target Channel (stored as Channel Authentication in Channel).
  3. After collecting all the information about content of objects and the Output Connector endpoint, it will send a Http Request which contains object bodies with action, as well as authentication information.
  4. Once Output Connector responses the request, the status of that job will be updated, report to Event Processor DB that the job is completely processed with Success or Fail. If the response is a fail, the job will be re-scheduled based on the status code in order to retry automatically.

Child Item

Data flow tracking

As a Qilin supporter,

I would like to have logs where I can see the data flow from input to output

so that, I can trouble shoot and analyze if the data is not transferred as expected

Acceptance Criteria

  • The status of data from input to output is tracked step by step
  • there is an API to get the logs of a specific transaction
  • the log records include meaningful full information such as:
    • transaction ID
    • step name
    • status (passed or failed)
    • error message in case the step failed

Parent Item

CORE

Exporting component

This component has responsibility to send data to output connector based on the events that processed by the event proccesor. It also check the request and response status to output connector to take action accordingly, such as resending request if the output connector is bussy temporarily.

Parent Item

Egression Module

Channel Management

this feature create a list of APIs that will be used to manage channels in Qilin:

  • Create channel
  • Read channel
  • Update channel
  • Delete channel

Channel is a configuration that will be used to connect to ERP or marketplace by Qilin such as an authentication token, user name, password

Parent Item

Channel APIs

Wireframe

as FE dev, I need UI wireframes for all UI functions of Qilin

so that I can based on  them to develop the FE (website)

Acceptance Criteria

  • All UI functions of Qilin have UI wireframe
  • All wireframes are documented and reviewed by Team

Parent Item

Qilin UI

Service bus

the services bus is where we store messages that include object type, action, and object payload to call the API and insert data into the database. There is another component called importing component that will listen to the service bus and take action according to messages

Parent Item

Ingression Module

Offer project

This feature fixes all problems in the Offer project that are scanned and detected by the sonar cloud such as code coverage, duplicated code, code smell, and so on, so that, our code will meet the quality gate:

  • UT code coverage >= 80%
  • Duplication: < 3%
  • Code smell: 0
  • Vulnerability: 0

Parent Item

Code Quality

Comparision component

This component will compare importing data and existing data in the database and decide which object should be updated. It also breaks complex object into smaller tasks and executes them in sequence or parallelly, depend on business logic of the object. For example, categories have to be inserted before products

Parent Item

Ingression Module

Data routing

This feature focuses on routing data functions. it will try to map and navigate the data based on user configuration and figure out the source and destination channel

Parent Item

Data Orchestrator Engine

User Permission Management

As Qilin,

I need to manage users and their permissions

so that, I can be aware of who is using my service and allow them to take the necessary action only.

The mechanism were using to manage user permission is Role Base Access Control (RBAC)

Data filtering

This feature will filter the data before it comes into the Data Orchestrator Engine, so that, we can make sure the incoming data is valid and dont make the flow crash

Parent Item

Data Orchestrator Engine

Transfer status engine

As Qilin, 

I want to know id mapping (mapping between object IDs that are managed by Qilin and IDs that are managed by channels) & Transfer Status of those objects between Qilin & n-Channels

so that, I can know if the objects are transferred to destinations successfully. 

For example:

Product A is managed by Qilin with ID qilin-product-id-a, which is synced to OTTO where product A is managed with ID OTT-product-id-a. Qilin needs to know if qilin-product-id-a and OTT-product-id-a are the same product and if the product data is synchronized between Qilin and OTTO

Thats why we need this engine

Parent Item

CORE

Activity logs for user

as a Qilin user

I want to track activities history of my customerID

so that I can trouble shoot by myself

Example: when some products are unexpectedly deleted, I need to know why it disappears

Acceptance Criteria

This log just contains

  • UserID
  • Timestamp
  • TransactionID (for connecting the activity log to the detail)
  • ObjectId (which object is affected)
  • ActiongroupID(like Product, Offer etc)
  • Actioncode (a numeric value mapped to an action…e.g. 15556 = “changed Price”..this ensures a multilanguage support organization.
  • Payload (additional data)

have API to get the logs from Qilin return in Json or CSV

API should return the last 7    30 days logs

Standard CSV format of Qilin should be used

user can see activities logs from their customerID only

User can see activities logs based on the role/user permission.

Parent Item

CORE

Channel mapping management

This feature creates a list of APIs that will be used to manage and configure channel mapping in Qilin:

  • Create channel mapping
  • Read channel mapping
  • Update channel mapping
  • Delete channel mapping

Channel mapping is a configuration that defines the route for data from a channel to other channels and versa.

For example: products in ERP A will be transferred to marketplace MP1 and MP2, and products in ERP B will be transferred to marketplace MP3. Versa, orders from MP3 will be sent to ERP B, and orders from MP1 and MP2 will be transferred to ERP 1

Parent Item

Channel APIs

Command storage

This feature will implement Cosmos DB as command storage which will replace service bus where contains list of command need to be done when importing data

Parent Item

Ingression Module

UI/UX Designing

Focus on UI/UX of subscription/user management and Data flow management (Drag and drop)

Parent Item

Qilin UI

Public Roadmap

As a external developer, i want to know what projects Qilin.Cloud is currently working on, so I can plan my own development and communicate it to my users.

Therefore I need to see a public roadmap of Qilin.Cloud.

After some POC with Roadmunk, AHA and other systems, we decidet to use GitHub Projects with its new Roadmap view for this purpose.

Acceptance Criteria

  • The connection between internal Azure DevOps and GitHub Roadmap must be full automatically
  • The roadmap must be public viewable without any login
  • Only internall staff should make CRUD operations on the roadmap an its items
  • The roadmap should show items from the past (1 year) and the future (1 year)

Child Item

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.