Rattail Project Overview
So, what exactly is Rattail? This document aims to answer that...
A Brief History
The project began in 2010, with the lofty goal of writing a new point of sale system. However it was quickly realized that a back-end system would need to exist first, and focus ultimately shifted to that sort of system. But even a "complete" back-end system wasn't actually needed in practice; rather the need was more for a "supplemental" back-end system. To that end, various systems and subsystems have been created, based on actual client needs.
The project doesn't have an official mission statement, but if it did, it would surely include something along these lines:
Get things done. The success of the project should reflect its ability to solve real problems in convenient ways.
Structure things with sharing in mind. In a "rising tide floats all boats" sort of way. Most retail problems are common to most retailers. There is plenty of work to go around, let's do this together.
Structure things with simplicity in mind. The project must be flexible to accommodate many use cases, but should ideally remain "well put together" and generally make sense.
What Rattail Can Do
Most likely this is what you really wanted to know. Unfortunately it's a tricky question to answer, because thus far, Rattail development has been very client-centric. On a practical level, this means there is no "pure" Rattail project running out there; rather there are a couple of clients which have custom Rattail-based systems running. Therefore the answer to "What can Rattail do?" is basically "Not much," if you're talking in terms of "out of the box" functionality. But if you're talking in terms of "potential" functionality, what Rattail does provide is a solid foundation for several styles of system integration, data processing, etc.
So the Rattail project is just a set of software tools, frameworks etc., all built with real-world needs in mind. Some of this software is "ready to use" to some extent, and some of it requires some custom application logic to drive the underlying software in whatever way the retailer desires, etc. Here are some of the software features provided by Rattail:
Rattail provides a common retail database schema, with product and customer tables etc. Note that whereas you can pick and choose which parts of Rattail software you want to run, the schema is "all or nothing". Also, the database engine is assumed to be PostgreSQL.
A project is free to "extend" this database schema, by maintaining a separate repository of migration scripts etc. This allows for a common schema upgrade procedure, which works as expected.
From Rattail's perspective, the ability to easily import data from one's POS system, into a Rattail system, is important. For this reason the Rattail "importing framework" was created; however this has expanded to support importing (processing) of data from any one arbitrary system to any other.
Since an import implies (usually) two systems, a given importer can generally only work with those two systems. Therefore only a few importers might be generally useful, and most importers will be custom-built to some extent. Here are a few importers which exist in production and might be useful:
ECRS Catapult -> Rattail
LOC SMS -> Rattail
Rattail -> MailChimp
Rattail -> MailerMailer
For more info see Data Importers.
Whereas "data importing" (above) implies a full import of data between two systems, "data synchronization" (in Rattail-speak) refers to the real-time sync of data between systems.
The original use case for this was to keep a handful of Rattail databases in sync. However this concept has been expanded such that the same technology (datasync daemon) is now used to keep various "loosely-related" systems in sync, e.g. POS <-> Rattail.
This is arguably the most convenient aspect, for users within a retail environment. It also can be one of the areas requiring the most customization, however. The basic idea is to expose a common website (for internal use only, usually) with user accounts and permissions to control access to various features. The features which are possible might require a separate page entirely; some real-world examples include:
- employee time clock
- search / view products, customers etc.
- print shelf tags for products
- manage price changes via batch
- manage customer and/or product data sync between systems
- manage customer (case/special) orders
Often when integrating between systems, it is necessary to move files from one machine to another, etc. Sometimes the POS system may produce files at random times, and you want to "notice" and process the files. For these and other reasons, Rattail provides a filemon which may be configured to watch arbitrary folders and perform arbitrary actions when new files appear. This concept has been implemented as a proper service on Windows, and daemon on Linux.
For more info see File Monitor.