Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gxjansen/spryker-for-developers


https://github.com/gxjansen/spryker-for-developers

Last synced: 16 days ago
JSON representation

Awesome Lists containing this project

README

        

![Open Code](https://img.shields.io/badge/open-code-blueviolet)
![Static Badge](https://img.shields.io/badge/Join-CommerceQuest-011427?logoColor=011427&color=00AeeF&link=https%3A%2F%2Fcommercequest.space%2F)

![GitHub language count](https://img.shields.io/github/languages/count/spryker/spryker-core)
![GitHub top language](https://img.shields.io/github/languages/top/spryker/spryker-core)
[![Minimum PHP Version](http://img.shields.io/badge/php-%3E%3D%208.0-8892BF.svg)](https://php.net/)

![GitHub contributors](https://img.shields.io/github/contributors-anon/spryker/spryker-core)
![GitHub commit activity](https://img.shields.io/github/commit-activity/y/spryker/spryker-core)
![GitHub issues](https://img.shields.io/github/issues-raw/spryker/spryker-core)

![GitHub Org's stars](https://img.shields.io/github/stars/spryker?style=social)
![GitHub watchers](https://img.shields.io/github/watchers/spryker/spryker-core?style=social)



Spryker logo




Why Spryker is great for developers

![GitHub last commit](https://img.shields.io/github/last-commit/gxjansen/spryker-for-developers?label=latest%20update)

Here we're crafting an overview of why Spryker is a great platform for developers to learn :student:, to enjoy :star_struck: and to make a good career out of :moneybag:. And if you're just like me, you don't want empty claims: you want **proof**.

So here we go. And feel free to send in your PRs!

## Table of contents

- [Reason 1: Basic characteristics of Spryker Development](#reason-1-basic-characteristics-of-spryker-development)
- [Technology](#technology)
- [Reason 2: Programming language: PHP](#reason-2-programming-language-php)
- [Relative ease to find new developers](#relative-ease-to-find-new-developers)
- [Reason 3: No need for a big team to build or run a Spryker project](#reason-3-no-need-for-a-big-team-to-build-or-run-a-spryker-project)
- [No Spaghetti code, but a State Machine](#no-spaghetti-code-but-a-state-machine)
- [Import and Export has been taken care of](#import-and-export-has-been-taken-care-of)
- [Reason 4: Killer SDK](#reason-4-killer-sdk)
- [Reason 5: Long term maintainability](#reason-5-long-term-maintainability)
- [Reason 6: Job security](#reason-6-job-security)
- [Customer satisfaction](#customer-satisfaction)
- [Analyst recognition](#analyst-recognition)
- [Reason 7: Spryker allows you to service different business models](#reason-7-spryker-allows-you-to-service-different-business-models)
- [Our technology stack keeps you flexible](#our-technology-stack-keeps-you-flexible)
- [Reason 8: Everything is in place to to turn you into a Spryker Superstar](#reason-8-everything-is-in-place-to-to-turn-you-into-a-spryker-superstar)
- [Follow courses, get certified](#follow-courses-get-certified)
- [Spryker developer Quotes](#spryker-developer-quotes)
- [Next steps](#next-steps)
- [Where to find Spryker on the web](#where-to-find-spryker-on-the-web)

-----------

## Reason 1: Basic characteristics of Spryker Development
Let's start off with some development principles that Spryker is based on, an why you might like working with it.
* Spryker`s entire architecture is built upon the best practices and well-known design principles [SOLID](https://en.wikipedia.org/wiki/SOLID), [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself), [KISS](https://en.wikipedia.org/wiki/KISS_principle), [YAGNI](https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it), [Facade](https://en.wikipedia.org/wiki/Facade_pattern) & [Factory method](https://en.wikipedia.org/wiki/Factory_method_pattern);
* Spryker has multiple levels of code reviews that are integrated into the development process:
* Developer code review
* Technical lead code review
* Application architect code review
* Besides the above human reviews, Spryker uses various tools for monitoring the quality of the codebase and performance of the product in general: [PHPStan](https://phpstan.org/), [PHPMD](https://phpmd.org/), [Psalm](https://psalm.dev/), [Codeception](https://codeception.com/);
* We like to say that we are positive perfectionists, and work only with clean and high-quality code. But you don't need to take that from us: Check our incredible code quality rating on [Scrutinizer](https://scrutinizer-ci.com/g/spryker/spryker-core/?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/spryker/spryker-core/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/spryker/spryker-core/?branch=master).
* Our code is open and accessible for everyone to see. Our code is **not** released under an open source license, but all code is [available on GitHub](https://github.com/spryker), there are no parts hidden or encoded. Also when using our PaaS version, the individual features remain open code and can be used, modified or removed at will.

### Technology
#### Application
Here's an overview of the technology used in the Spryker core product:
##### Backend
![Apache](https://img.shields.io/badge/apache-%23D42029.svg?style=for-the-badge&logo=apache&logoColor=white)
![Angular.js](https://img.shields.io/badge/angular.js-%23E23237.svg?style=for-the-badge&logo=angularjs&logoColor=white)
![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge&logo=amazon-aws&logoColor=white)
![Bootstrap](https://img.shields.io/badge/bootstrap-%23563D7C.svg?style=for-the-badge&logo=bootstrap&logoColor=white)
![ElasticSearch](https://img.shields.io/badge/-ElasticSearch-005571?style=for-the-badge&logo=elasticsearch)
![MariaDB](https://img.shields.io/badge/MariaDB-003545?style=for-the-badge&logo=mariadb&logoColor=white)
![MySQL](https://img.shields.io/badge/mysql-%2300f.svg?style=for-the-badge&logo=mysql&logoColor=white)
![Nginx](https://img.shields.io/badge/nginx-%23009639.svg?style=for-the-badge&logo=nginx&logoColor=white)
![PHP](https://img.shields.io/badge/php-%23777BB4.svg?style=for-the-badge&logo=php&logoColor=white)
![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white)
![RabbitMQ](https://img.shields.io/badge/Rabbitmq-FF6600?style=for-the-badge&logo=rabbitmq&logoColor=white)
![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge&logo=redis&logoColor=white)
![Symfony](https://img.shields.io/badge/symfony-%23000000.svg?style=for-the-badge&logo=symfony&logoColor=white)
![Vue.js](https://img.shields.io/badge/vuejs-%2335495e.svg?style=for-the-badge&logo=vuedotjs&logoColor=%234FC08D)

*(AWS: S3, EC2, CloudFront, SQS)

###### Other
* [Propel ORM](https://propelorm.org/)

##### Frontend
* Javascript
* Webpack
* NPM

If you want to take a deep dive into the technology, check out the [Architecture Guide](https://docs.spryker.com/docs/scos/dev/architecture/architecture.html) or enroll in the free [Spryker Architecture Overview course](https://academy.spryker.com/learn/course/external/view/elearning/312/spryker-architecture-overview).

##### DevOps
Here's an overview of the main technology used to work with Spryker:

![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)
![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)
![Jenkins](https://img.shields.io/badge/jenkins-%232C5263.svg?style=for-the-badge&logo=jenkins&logoColor=white)

###### Other
* Amazon CloudWatch
* AWS Elastic Load
* AWS CodePipeline
* Buddy
* Codeception
* Composer
* New Relic
* Scrutinizer
* PHPMD
* PHPStan
* Psalm
* Vagrant

Also see the [Spryker page on StackShare.io](https://stackshare.io/spryker/spryker-os) and check out the [Spryker Development Environment Overview](https://.spryker.com/learn/course/external/view/elearning/380/spryker-development-environment-overview) course.

## Reason 2: Programming language: PHP
Nearly 80% of websites use PHP ([source](https://w3techs.com/technologies/details/pl-php)), PHP has been one of the top 5 programming languages since the year 2000 ([source](https://statisticsanddata.org/data/the-most-popular-programming-languages-1965-2022-new-update/)), and it's the foundation of the most popular framework Laravell ([source](https://statisticsanddata.org/data/most-popular-backend-frameworks-2012-2022/)).

PHPs flexibility and low barrier of entry is both a blessing and a curse. The curse being that, for some developers, PHP has gotten a bad reputation because of its perceived inconsistencies, security matters, sloppy syntax and simply because it is everywhere. If something is very popular, it's almost inevitable that there will be a lot of people messing it up.

But this is not inherent to PHP: if you [follow proper design principles like we do at Spryker](#reason-x-basic-characteristics-of-spryker-development),

Highly proficient PHP developers are sought after, so if you can master it, you have the potential to earn lots of money. That popularity means there are plenty of career opportunities out there. Another good reason to learn PHP: it pairs great with other skills and languages.

### Relative ease to find new developers
Finding good developers is never easy, but because of PHPs popularity, it's easy to find developers with PHP experience that can be trained to use Spryker. We also have good experience onboarding Java developers, because of their experience with Object Oriented Programming which is very similar to what Spryker is doing with PHP.

:construction: [TODO]

## Reason 3: No need for a big team to build or run a Spryker project
:construction: [TODO]

## No Spaghetti code, but a State Machine
One of the biggest challenges in e-commerce is the mapping and implementation of business processes in the IT infrastructure. What can still be easily implemented with a simple B2C business model becomes a real challenge with more complex business processes in the B2B area.

As an example of this, we can imagine the processing of an order. The order must be processed separately depending on the products ordered, the desired delivery time, the stock level and the type of payment.

Depending on the complexity of the process, this often leads to complex "if-then-else" constructs (spaghetti code) when implementing with some other platforms, which after a short time seems difficult to understand and after a long time almost unmaintainable.

Spryker provides a solution to this problem with the so-called state machine. Processes can be easily modeled and visualized based on states, transitions and events. This solution gives both the developer and the shop operator a transparent and easy-to-maintain opportunity to implement and expand complex processes.

## Import and Export has been taken care of
Every e-commerce project needs a way to communicate with the outside world: Products and inventories, orders and customer data, etc. must all be able to be exchanged and compared with other systems. Each software product goes its own way and offers the data in a variety of different formats and forms.

Unfortunately, many older systems only offer limited solutions to data, often illustrated by the overwhelming number of third-party modules dedicated to this problem.

Spryker, on the other hand, already provides a framework to be able to implement imports and exports quickly and cleanly. The developer is left with the task of bringing the data into the correct format. The actual process of importing and exporting is then accomplished with the tools provided by Spryker.

## Reason 4: Killer SDK
:construction: [TODO]

## Reason 5: Long term maintainability
:construction: [TODO]

## Reason 6: Job security
Some factors that indicate that Spryker is on the rise:

### Customer satisfaction

* G2: 4.4 out of 5 stars: https://www.g2.com/products/spryker-cloud-commerce-os/reviews
* Gartner: 4.5 out of 5 stars: https://www.gartner.com/reviews/market/digital-commerce/vendor/spryker/product/spryker-cloud-commerce-os

### Analyst recognition
Like it or not, large Enterprises look at analyst firms for advice when they're buying new software. A good (and growing) score in analyst reports is therefore a good indication for upcoming Enterprise projects.

Spryker scored highest for overall growth of any vendor in the 2022 Gartner Magic Quadrant, with both customer and revenue growth nearing 100%. Customer growth was paralleled by an increasing number of larger service provider partnerships being cemented.

See [spryker.com/analyst-recognition-commerce](https://spryker.com/analyst-recognition-commerce/) for more details and recognition by other analyst firms like Forrester, IDC, MCFADYEN and Paradigm B2B.

#### Best product for Composable Commerce
Spryker is a modular cloud native platform conforming to broader definitions of microservices, but most closely to Gartner’s packaged business capability (PBC) paradigm.

Spryker was recognized in all four Gartner®️ Critical Capabilities Use Cases for Digital Commerce, and a Visionary in the Gartner®️ Magic Quadrant™️ for Digital Commerce for the second consecutive year.

![Eighteen-vendors-are-ranked-according-to-how-well-they-meet-the-needs-of-composable-commerce-in-the-digital-commerce-market-as-of-June-2022-target png](https://user-images.githubusercontent.com/487722/198754589-4c6ea209-8499-4cef-a400-1fc8c7f040fc.jpg)

## Reason 7: Spryker allows you to service different business models

Spryker supports a wide range of industries and business models like retail, manufacturing, wholesale, distribution, services and more B2B, B2C and Unified Commerce. All of these capabilities out of just one platform.

### Our technology stack keeps you flexible
Because we use many modern, popular tools in our [Technology stack](#technology), it's relatively easy to transition into Spryker and any learned skills can be very useful at any projects that come after.

#### Background experience
What experience makes for an easy start into the Sprykerverse?
* Experience with PHP development
* Experience with Java development
* Experience as a Solution Architect
* ... :construction: [TODO]

#### Spryker Job profiles
These are the things we see often pop-up in job profiles when companies hire Spryker developers.
* Senior-level expertise in coding with PHP
* Knowledge about professional software engineering e.g. SOLID principles, Clean Code, Separation of Concerns
* Working experience with standard frameworks like Zend, Symfony, Laravel, or others
* E-Commerce experience with shop systems like Magento, Hybris, or similar.
* Experience building and consuming REST APIs
* Proficiency in developing, deploying, and debugging cloud-based applications using AWS, especially working with message queues
* Good understanding of automated testing and experience writing tests
* ... :construction: [TODO]

#### Spryker jobs
[![Upwork](https://img.shields.io/badge/UpWork-6FDA44?style=for-the-badge&logo=Upwork&logoColor=white)](https://www.upwork.com/search/profiles/?q=spryker)

## Reason 8: Everything is in place to to turn you into a Spryker Superstar

### Follow courses, get certified
The [Spryker Academy](https://spryker.com/academy-learning/) offers several learning plans and courses to get your started and improve your skills
* [Getting Started with Spryker](https://academy.spryker.com/learn/course/external/view/elearning/33/getting-started-with-spryker);
* 10+ [Spryker Overview](https://academy.spryker.com/learn/public/catalog/view/19) courses;
* 10+ [Developer e-Learing Courses](https://academy.spryker.com/learn/public/catalog/view/29);
* [Developer Instructor-led Courses and Certification](https://academy.spryker.com/learn/public/catalog/view/4);
* [Spryker Developer Foundations Certification Exam](https://academy.spryker.com/learn/course/external/view/elearning/94/spryker-developer-foundations-certification-exam).

## Spryker developer Quotes

> The ability to customize a decent amount of the codebases's functionality without overwriting it will probably be my favorite aspect of Spryker once it comes time to upgrade major versions. For the day-to-day side of things, the built-in code style, functionality, and structure tests are helpful in maintaining the current standards when adding new code. The built-in code generators are also a significant help, speeding up the overall pace of development. Spryker's technical support reps are also competent and responsive. The customizability and flexibility of the Spryker system (as well as the wealth of additional add-ons) meant that it was easy to pair Spryker with our current systems.

> * 100% customizable processes with the state machine
> * Clean architecture
> * Nothing is impossible
> * With PaaS+, many helpful tools are given, which help reduce project maintenance and keep the code clean.
> * Helpful community!

> We use Spryker as our e-commerce solution and customer frontend. We have very extensive product data (3 million SKUs, 8 million images, 60 million technical attributes, etc.) and a use lot of APIs. What I like best:
> * Code Quality
> * Modularity
> * APIs
> * Customer Success
> * Scalability

---------

## Next steps
Did the above peak your interest? Here are your next steps:
1. Follow our **free** [developer e-learning courses](https://academy.spryker.com/learn/public/catalog/view/29), sign up for the [Developer Instructor-led Courses](https://academy.spryker.com/learn/public/catalog/view/4) and [get certified](https://academy.spryker.com/learn/course/external/view/elearning/94/spryker-developer-foundations-certification-exam);
2. Use our [Quick Installation Guides](https://docs.spryker.com/docs/scos/dev/setup/quick-installation-guides/quick-installation-guides.html) to get familiar with the product;
3. Join our Community: [CommerceQuest](https://commercequest.space/);
4. Sign-up for the [Spryker User Group](https://www.meetup.com/Spryker-User-Group/) and join our monthly meetups!

---------

## Where to find Spryker on the web
* [Spryker.com](https://spryker.com/)
* [Spryker Documentation](https://docs.spryker.com/)
* [Spryker Academy](https://spryker.com/academy-learning/)
* [Spryker Community](https://commercequest.space/)

[![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)](https://github.com/spryker)
[![Stack Overflow](https://img.shields.io/badge/-Stackoverflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white)](https://stackoverflow.com/questions/tagged/spryker)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/spryker)
[![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white)](https://www.instagram.com/gxjansen/)
[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://www.twitter.com/sprysys)
[![YouTube](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge&logo=YouTube&logoColor=white)](https://www.youtube.com/channel/UC6lVOEbqXxUh0W5FMTvlPDQ)
[![Meetup](https://img.shields.io/badge/Meetup-f64363?style=for-the-badge&logo=meetup&logoColor=white)](https://www.meetup.com/Spryker-User-Group/)
[![Reddit](https://img.shields.io/badge/Reddit-FF4500?style=for-the-badge&logo=reddit&logoColor=white)](https://www.reddit.com/r/spryker/)
[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/spryker)
[![Mastodon](https://img.shields.io/badge/Mastodon-5945da.svg?style=for-the-badge&logo=mastodon&logoColor=white)](https://phpc.social/@spryker)

---------

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.