Our software philosophy & some key features

Easy software deployment:
  • Standalone binairies that work right out of box.
  • No web server or database setup required.
% ./app 8080 &
% curl -s --head http://localhost:8080 | head -n 1
HTTP/1.1 200 OK

Wide platform support:
  • Embedded ARM devices with limited disk/memory (a few MB)
  • x86 MS-Windows workstations or servers
  • Dedicated GNU-Linux servers
All sharing the same code base.
% cat platform.c
void main(void) {
  const struct twuname *p = twuname();
  printf("%s %s\n", p->machine, p->sysname);
}
% machines="arm-device win-pc linux-server macbook"
% for m in `echo $machines`; do
    ssh $m ./platform;
  done
armv4tl Linux
x86 Windows_NT
x86_64 Linux
x86_64 Darwin

Unix-driven design:
  • Modular code base: each module is small, simple, and targeted at a specific feature (KISS principle).
  • Applications sharing similar features use common modules (DRY principle).
  • Shared modules are grouped into the 'framework': a large collection of modules that applications can - but are not forced to - use.
Modules architecture

Advanced data model management:
  • Automatic database creation and conversion.
  • Automatic web UI for data consultation & update.
table todolist {
  field due_date date;
  field name string;
  field note string;
}
Schema definition file

Processed by
an internal tool
Auto-generated code:
  • Tables & fields IDs
  • Schema definition object

Advanced SQL integration:
  • DB engine-agnostic queries.
  • Compile-time schema compliance control.
  • Abstract syntax tree manipulation.
  Portable SQL