PHPackages                             sterlett/sterlett - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. sterlett/sterlett

ActiveProject[Utility &amp; Helpers](/categories/utility)

sterlett/sterlett
=================

The microservice for retrieving and processing public information about computer hardware prices

0.5.0(5y ago)11GPL-3.0-or-laterPHPPHP &gt;=7.4

Since Sep 22Pushed 5y ago1 watchersCompare

[ Source](https://github.com/sterlett/sterlett)[ Packagist](https://packagist.org/packages/sterlett/sterlett)[ Docs](https://github.com/sterlett/sterlett)[ RSS](/packages/sterlett-sterlett/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (5)Dependencies (27)Versions (9)Used By (0)

Sterlett
========

[](#sterlett)

```
;C0tf;.
LGCGCLCf;.
itii;:itLLfffftLLffLL1;,
 ii:;;::;1tLCCL◖◗LfCCLLf1;,
  ii:;;:;:;;11fLLffLLfLCLff1,
   i;:::;:::ii111ttffffLCLftf1.
   ,..i;:::;1iiiiii1i1tfLfft1ft.
      ,;;;i11    ii1i111t1tf11fiii:.
      .,iftt111111tt111iii;tft1tttft:
   ,itLfi;i1tffftt111111111tGGCLt11tti.
.ifL1:,      .:1fLfffttttft1i1LCCCCfttti
tf;             .;1tfLLLLfft11it;;fLLLfLi
                     .,itLfffttt    ,itft
                     .i11tfft11tt,     ti.
```

[![Build Status](https://camo.githubusercontent.com/9b4c078050cfedc27ed356ef0d0ea4f20f416fe4ca9fd30af97071bc675cafba/68747470733a2f2f7472617669732d63692e636f6d2f737465726c6574742f737465726c6574742e7376673f6272616e63683d6d6173746572)](https://travis-ci.com/sterlett/sterlett)[![CodeFactor](https://camo.githubusercontent.com/9ab0fa86c0152325e48d6af343e78cd96bdc751be3b24688f57f42179648aef0/68747470733a2f2f7777772e636f6465666163746f722e696f2f7265706f7369746f72792f6769746875622f737465726c6574742f737465726c6574742f6261646765)](https://www.codefactor.io/repository/github/sterlett/sterlett)

- [Goals](#goals)
- [Architecture](#architecture)
- [Installation](#installation)
    - [Docker](#docker)
- [Console API](#console-api)
    - [Calculating V/B rating](#calculating-vb-rating)
    - [Downloading a benchmark list](#downloading-a-benchmark-list)
    - [Retrieving hardware prices](#retrieving-hardware-prices)
- [Honeycomb](#honeycomb)
    - [1.0 milestone](#10-milestone)
- [See also](#see-also)
- [Changelog](#changelog)

Goals
-----

[](#goals)

**Sterlett** is a microservice and console API for retrieving and processing public information about computer hardware prices. It may help to buy the most efficient microchips in your region by the lowest available price, using several benchmark providers and taking into account local currency spikes and pricing fraud.

Architecture
------------

[](#architecture)

The microservice represents a set of backend and frontend containers behind a gateway for routing and load balancing ([stack](https://github.com/itnelo/reactphp-foundation#docker-swarm)).

Backend: PHP 7.4+, [ReactPHP](https://github.com/reactphp/reactphp), [Symfony](https://github.com/symfony/symfony) 5 components (async adapters). [MySQL](https://dev.mysql.com/doc/refman/8.0/en) 8 for data persistence.
Frontend: JavaScript (ES5, ES6+), [Svelte](https://github.com/sveltejs/svelte) 3, [Spectre.css](https://github.com/picturepan2/spectre). [Lighttpd](https://lighttpd.net) 1.4 to serve assets.
Gateway: [HAProxy](https://www.haproxy.com) 2.2.

Installation
------------

[](#installation)

### Docker

[](#docker)

> Ensure you have a [Docker daemon](https://docs.docker.com/get-docker) and a [compose](https://docs.docker.com/compose)tool available on your machine.

Clone the repository, then build a `.env` and other configuration files:

```
$ git clone git@github.com:sterlett/sterlett.git sterlett && cd "$_"
$ bin/configure-env dev
$ cp config/parameters.yml.dev.dist config/parameters.yml

```

The microservice scope requires an HTTP/HTTPS proxy for some websites, specify a valid host and port in the `.env` file you have just created:

```
$ sed -i -E "s/(SELENIUM_PROXY_HOST)=_/\1=0.0.0.0/" .env      # replace 0.0.0.0
$ sed -i -E "s/(SELENIUM_PROXY_PORT)=_/\1=80/" .env           # replace 80

```

Build images:

```
$ docker-compose build --no-cache --force-rm --parallel

```

In the `dev` environment you need to manually install back/front dependencies for the project (however, there are also `Dockerfile-standalone` files, which you can use to build isolated and self-sufficient containers):

```
$ docker-compose run --rm --no-deps app composer install
$ docker-compose run --rm --no-deps app npm clean-install --no-optional

```

Apply migrations (note: you may need to wait for a few minutes during the first-time database initialization, before you can actually execute this command):

```
$ docker-compose run --rm app bin/console migrations:migrate --no-interaction -vv latest

```

To compile frontend assets:

```
$ docker-compose run --rm --no-deps app npm run dev

```

Now you can launch a microservice at [http://localhost:6638](http://localhost:6638/stats) (or interact with command-line interface, see below):

```
$ docker-compose up -d

```

Console API
-----------

[](#console-api)

### Calculating V/B rating

[](#calculating-vb-rating)

Value/Benchmark (or *Price/Benchmark*) ratio — is a numerical score, that will be assigned for the hardware item to measure its customer appeal. The more V/B ratio it has, the bigger benefit you can get from buying this item in terms of rough price/performance. You can calculate a V/B rating for the available hardware items manually, with the following command:

```
$ docker-compose run --rm --no-deps app bin/console ratio:calculate

```

Example:

[![console_api_ratio_calculate_asciicast](.github/images/console-api-ratio-calculate.gif)](.github/images/console-api-ratio-calculate.gif)

The source data includes both hardware benchmarks and price lists from the third-party web resources. It is possible to dump contents of related providers by the other API methods.

### Downloading a benchmark list

[](#downloading-a-benchmark-list)

Renders a list with benchmark results from the configured providers, which are used in the algorithm as a source for hardware efficiency measure.

```
$ docker-compose run --rm --no-deps app bin/console benchmark:list

```

Example:

[![console_api_benchmark_list_asciicast](.github/images/console-api-benchmark-list.gif)](.github/images/console-api-benchmark-list.gif)

You can specify a minimum benchmark score for items to be shown in the table using `passmark.cpu.min_value` in `parameters.yml`.

### Retrieving hardware prices

[](#retrieving-hardware-prices)

Renders a table with hardware prices from the different sellers, which are used to suggest deals \*.

> \* — Actually, a [FallbackProvider](src/back/Hardware/Price/Provider/HardPrice/FallbackProvider.php) will be used for price retrieving in the console environment; a normal run could take from 20 minutes to 2.5+ hours, due to some sophisticated scraping techs that are executing asynchronously, in the background, and guarantee a certain level of stability, while the microservice serves HTTP requests. See [BrowsingProvider](src/back/Hardware/Price/Provider/HardPrice/BrowsingProvider.php).

Currently supported regions: RU/CIS.

```
$ docker-compose run --rm --no-deps app bin/console price:list

```

Example:

[![console_api_price_list_asciicast](.github/images/console-api-price-list.gif)](.github/images/console-api-price-list.gif)

Honeycomb
---------

[](#honeycomb)

This one is currently at the development stage 🐝.

🍯 Backend base
🍯 Frontend base
🍯 Routing and load balancing capabilities
🍯 CI ground
🍯 Prices retrieving
🍯 Benchmarks retrieving
🍯 Data persistence
🍯 Console API: CPU list
🍯 Microservice: CPU list
🍯 Microservice: CPU deals

### 1.0 milestone

[](#10-milestone)

🔲 Microservice: GPU list
🔲 Microservice: GPU deals
🔲 1 year of stable work in production

See also
--------

[](#see-also)

- [itnelo/reactphp-foundation](https://github.com/itnelo/reactphp-foundation) — A fresh skeleton for building asynchronous microservices using PHP 7.4+, ReactPHP and Symfony 5 components, with a deployment preset for scaling and load balancing.
- [itnelo/reactphp-webdriver](https://github.com/itnelo/reactphp-webdriver) — **Sterlett** uses the ReactPHP WebDriver, a fast and non-blocking PHP client for [Selenium](https://www.selenium.dev) browser automation engine, to acquire data from some websites.

Changelog
---------

[](#changelog)

All notable changes to this project will be documented in [CHANGELOG.md](CHANGELOG.md).

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~40 days

Recently: every ~27 days

Total

6

Last Release

1863d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9846fb3e0b9baad2f926476f9b5e6a032909ff9d8cbd0b01074a677d64822b4b?d=identicon)[itnelo](/maintainers/itnelo)

---

Top Contributors

[![itnelo](https://avatars.githubusercontent.com/u/2988715?v=4)](https://github.com/itnelo "itnelo (139 commits)")

---

Tags

benchmarkhardwaremicroservicephp74pricescraperMicroservicehardware

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/sterlett-sterlett/health.svg)

```
[![Health](https://phpackages.com/badges/sterlett-sterlett/health.svg)](https://phpackages.com/packages/sterlett-sterlett)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
