Developer Zone


Welcome! The Developer Zone is the place to learn about extending xTuple with scripted packages, modifying core source code, and interfacing with third party applications.

Note: We're revising our developer documentation for haxTuple2014. There will probably be broken links throughout the Developer Zone during this time. We apologize for any inconvenience and will clean up the mess as quickly as possible. The newer versions of our work-in-process can be found on the qt-client wiki on GitHub and the web client wiki on GitHub.

xTuple has two client application interfaces: a C++ based "rich" client built that is installed locally on the operating system, and a JavaScript based client that runs in a web browser. The code for both clients and associated servers is hosted on GitHub. The C++ client is the result of over 10 years of community driven development and as such it is complete and feature rich. The web based client is newer and includes some, but not all, functionality offered in the C++ client. xTuple has a goal for the web client to reach parity with the C++ client over time, but it is important to note that the clients are inter operable and can run on the same database at the same time.

If you are interested in development on the web client please visit the wiki on GitHub. If you are more interested in the C++ client, continue reading this page.

The xTuple C++ client application is written using Qt development tools, so it is helpful to know something about Qt before you begin. Qt is an application framework used to develop multiplatform applications. With version 3.0 of the xTuple Application we have also added support for JavaScript extensions.  This, in conjunction with a number of other design tools, constitute a toolkit to build xTuple extensions without modifying core source code.

Extending xTuple with scripted packages

The extension method is the right way to change xTuple ERP in the following cases:

  • You are modifying xTuple ERP for a particular industry
  • Your solution applies mostly to your local situation
  • You are a "casual programmer" comfortable with scripting languages but not C++
  • You are a third-party developer who would like to sell your extensions in the xChange

What can you do with extensions?

  1. Change existing core screens
  2. Build new screens from scratch
  3. Customize business logic
  4. Create customized reports
  5. Create customized menus
  6. Bundle extensions into a loadable package.

Learn more...

Modifying core xTuple source code

Altering core source code is the right way to change xTuple in the following cases:

  • You want your code to be documented as part of the main software and supported in future upgrades
  • You want to give back to the PostBooks user community
  • The feature you are adding would useful to the general user base
  • You are an accomplished programmer comfortable with coding in C++

What might be candidates for changes to the core?

  1. Fundamental changes to business logic, such as a new costing method
  2. Changes that affect general application behavior, look or feel.
  3. General accounting features that automate transaction flow
  4. Improving extension capabilities
  5. Low-level integration with widely used products or services such as office documents or online banking

Learn more...

Or, go straight to instructions for compiling xTuple source code.

Interfacing with third party applications We are also developing additional documentaion on the many ways you can integrate xTuple with external applications.  Our primary tool for this type of work is the xTuple Connect add-on, which supports a wide variety of import and export mechanisms, and the automation of the handling and transport of the data being exchanged.


JoeChee's picture
Joined: 04/23/2010
Changing existing core screens

Currently I am interested in modifying the core screen of xTuple to streamline it as an import/export startup.

I've looked over the files and I believe the core screens are hardcoded into the client, so I believe that there might be a error when it is claimed that the extensions are able to

1. Change existing core screens

ned's picture
Joined: 10/20/2008
Keep reading. You can write

Keep reading. You can write Javascript to modify core screens.

Regarding import/export, you might want to look at what we're doing with embedding the CSV import tool into the client, and expanding XML import/export capabilities, before taking on anything big in that area. Can you describe what you're looking to do? (Ideally in the New Development forum?)

sevendogzero's picture
Joined: 10/21/2009

I want to insert new records or modify existing data directly using sql. Does the API provide this
type of interface for postbooks?
I have been programming in c/c++/vb for 25 years, and am very comfortable at the api level.

eg; As a consultant, I often work onsite. I would like to create a web interface for my
company, which allows me to create invoices in postbooks hosted on my office servers while i'm at
the customer site.


jrogelstad's picture
Joined: 12/10/2008
Look in the "Library" on this

Look in the "Library" on this page for the subject "API Views"

kutto's picture
Joined: 09/20/2008
Comment on layout of this page

Minor point - but I feel this web page could be improved for people looking for information by moving the four points (> Core Overview ...... thru > Specifications) to the top of the page or highlighting them in some other way - I had been to this page several times and never realised they were sections in their own right - I glanced at them but never realised where they lead - Now I see them it seems obvious but they are just very easy to miss at first glance.