This document is deprecated. Please see the Theo Docs instead.
Theo Overview
Theo is an app built using Rattail, which is meant to serve as "the order system" for a retail organization. The general idea is to provide a place for users to track and maintain customer orders.
See Theo/Demo for what this actually looks like.
See Theo/ServerSetup for instructions to set this up for yourself.
Standalone vs. POS Integration
The app may be used in "standalone" mode, meaning it does not integrate with any other system. In this case all customers and products must be entered directly into Theo.
But if your POS is supported then Theo can "integrate" with it. In this case Theo can import all customers and products from the POS. Supported POS systems as of this writing include:
At this time, no data will be written back to the POS even if Theo is integrating with it. That may need to be revisited before we're said and done here, but for now it's the rule so as to reduce differences between Theo's "standalone" and "integrated" modes.
Order System Features
Once there are customers and products in Theo, its "real" features come into play.
Or rather, they will. At this point the order system features are not finished. But they will include:
- user can enter new customer order
- user can locate existing / previous orders
- user can update an order to reflect its workflow status etc.
Ancillary Features
It is hoped that simply exposing customers and products in a somewhat easily-searchable format, from a web app with a flexible permissions system (so you decide who can see what), is a useful feature. (Though perhaps less so if your POS system already does this via web app.)
Important tables can allow the user to download their filtered result set as Excel or CSV file, e.g. for further "offline" processing.
Theo is able to "mirror" your POS DB in some cases (only ECRS Catapult at this time), using MySQL or PostgreSQL. It is not a complete replica but can include all data required for the POS -> Theo import, for instance, and more/unrelated data than that is possible. Basically it mirrors only a subset of available tables (and columns/records thereof), but what it does mirror, should match exactly.
Regardless of how you get data for customers and products into Theo (e.g. POS import or manual entry), it will keep track of "versioning" for this data. Meaning, each time a Theo record is updated, an additional "version" record is made. You can then review the version history for a given record to see how/when/where it changed.
Various other things are possible with extra effort, e.g. custom reports and some types of automation. Ultimately since this is built using Rattail, if you find Theo too limiting you can simply generate your own project and the sky is the limit.