This is a great overview, thanks for sharing.

On Mon, Oct 17, 2016 at 3:05 PM, Masashi UMEZAWA <>

> Hi all,
> From Torsten, I've received a request to post about some technical
> details of ALLSTOCKER ( .
> I hope these notes will be interesting to Pharo web developers.
> - Seaside / Teapot
> We are using Seaside as a main framework for ALLSTOCKER marketplace.
> Seaside's component architecture is great for extending application in
> an organized way.
> ALLSTOCKER prototype was originally composed of only 3 class
> categories. Now these were gradually grown to 70 categories. But we
> still feel that they are manageable.
> We also use Teapot for building Web-based API in a quick way. Recently
> we've built webhook handlers for integration with other services.
> - Templating with Mustaside
> We need a lot of responsive-design web pages for supporting various
> mobile devices. (It is important especially for Southeast Asian
> countries, where tablets are popular than PCs).
> We would like to adopt existing Twitter Bootstrap templates for saving
> time. So, Mustaside was our choice.
> Before Mustaside, there were a lot of noisy #div: sends in our code.
> Now they are gone.
> - Localization
> Our business target is world-wide. So localization is very important
> topic. Currently ALLSTOCKER supports 4 languages and we will add
> Chinese languages soon.
> Translation strings are not only in Smalltalk code, but also in
> Mustache templates. So we selected Soup for extracting translatable
> strings in those templates.
> For managing translations, we use Gettext package.
> - Databases
> For transactional data, we chose Glorp. Although there are mapping
> costs, we prefer RDB (Postgres). It is reliable for handling precious
> order-related data.
> However, for supporting complex search of machines, we use Neo4j - a
> graph database. It supports very powerful query language called
> Cypher.
> We can avoid complex table joins and get aggregated results faster.
> - Keyword search
> ALLSTOCKER supports free keyword search. We selected Elasticsearch for
> search-engine. Elasticsearch has elaborated searching facilities and
> those are easily accessible via REST API.
> We have extended the existing Elasticsearch client for Pharo 5.
> - Deployment
> We are using AWS Elastic Load Balancer and running Nginx as a
> front-end web server. Two back-end Pharo images are running and
> load-balanced with sticky sessions.
> It was sort of difficult to find the appropriate simultaneous number
> of database connections and Pharo processes. We feel ALLSTOCKER is
> pretty stable for now, but we need to adjust more for expanding our
> services.
> Best regards,
> --
> [:masashi | ^umezawa]

Reply via email to