Hi, Thanks for this email. It is really nice to read that all these frameworks are used in yet another successful commercial app such as Quuve.
Best, #Luc 2015-04-15 23:30 GMT+02:00 Cameron Sanders via Pharo-users < pharo-users@lists.pharo.org>: > > > ---------- Message transféré ---------- > From: Cameron Sanders <camsand...@aol.com> > To: Any question about pharo is welcome <pharo-users@lists.pharo.org> > Cc: > Date: Wed, 15 Apr 2015 17:30:24 -0400 > Subject: Fwd: Debris' Quuve - Technologies used > Several people inquired as to how Quuve was built. Mariano wrote up a nice > description of the various tools that were used to build Quuve -- see > below. Note also that DebrisPublishing.com website is now up; we are still > working on videos, but the site is very lean at present. > > -Cam > > Quuve Technologies Used > > Quuve has been and still is developed with Pharo. We try to use the most > up to date stable version of Pharo. Quuve is deployed in GemStone. > > Package dependencies are managed via Metacello. Not only do we have many > dependencies but also multiple Smalltalk environments: Pharo and GemStone. > We also use Metacello to correctly load the needed packages and versions > for each of the platforms. > > We use Seaside as our web framework and Twitter Bootstrap for Seaside for > the layout and design of the app. While some parts are still using the > full-request approach, most of the app is done with AJAX and only > refreshing the needed part of the screen. > > We use JQuery a lot and some external JS libraries such a DataTables (for > our table/reports), floatThead, HighCharts (for making charts), TinyMCE (to > edit notes and a few other things), etc. > > We have a full-featured CRUD system based on Magritte. Actually, we have > extended Magritte so much that all our descriptions and components are > actually subclasses of the original Magritte classes. We have our own > descriptions, components, report column classes, mementos, table layouts, > etc. All our framework is Twitter Bootstrap integrated, fully AJAX and with > lots of rich features. We can make a full CRUD report/form out of Magritte > descriptions in no time. > > For persistency we have a library/layer which gives a unified way of > saving and querying objects using a Glorp-like interface; it differs in > that the where clauses are straight Smalltalk blocks. So far, when we work > on Pharo we use Fuel as the "database", while for production we use > GemStone. We have developed some compatibility packages so that same code > would work in both Smalltalks in the way we expect. Quuve briefly used > Oracle’s relational DB for persistence of its securities DB, connecting to > it via the Glorp toolkit; because many mature financial DB’s are delivered > in relational form, we may need to do so more extensively in the future. > Although the need for this may subside as more data becomes available over > REST-server interfaces. > > We use NeoCSV for parsing CSV, XMLParser, Zinc-REST and STON for providing > REST web services, and SIXX for moving data between Pharo and GemStone. > > As to the web server, in Pharo we use Zinc, and in GemStone we use nginx + > FastCGI. Quuve clients could be for example, an individual or a large > advisory firm. In each case, Quuve is deployed as a "site/instance" for > each customer. Each site is a fully isolated and secured instance of Quuve. > > Quuve is hosted in a cloud virtual hosting which allows us to scale as > much as we need and we can have as many nodes as required. The operating > system is CentOS Linux. We correctly perform backups, cleanings and > maintenance of our sites. We have scripts to automatically create new sites > very easily. > > >