Description
OpenAcct is open source bookkeeping software for small and medium sized businesses and for not-for-profit organizations. It supports multiple backend databases and multiple simultaneous users on backends which support it. OpenAcct is designed from the ground up to support multiple currencies and double-entry financial accounting.
OpenAcct is not designed to be a complete solution for accounting software, but rather is designed to "do one thing well". In particular, OpenAcct does not provide a graphical interface. OpenAcct does provide a command line interface as a thin layer over the domain library. The domain library is designed to be usable from other applications as a means of implementing financial bookkeeping.
Features
OpenAcct will support the following general feature areas:
- General Ledger
- Accounts Receivable
- Accounts Payable
- Banking
- Billing
- Financial Statements
- Multiple currencies
- Fund accounting
Licensing
OpenAcct will be licensed under the GNU General Public License version 3 (GPL v. 3). At the option of Steven Bosnick the source code in libacct and the backend libraries can be relicensed under the GNU Lesser General Public License version 3 (LGPL v. 3). This relicensing would permit libacct to be used as the domain model for a differently licensed front end. An distribution of libacct in binary form would still have to satifiy the licensing requirments of Code Synthesis' ODB (GPL, open source license exception from Code Synthesis, or proprietary license from Code Synthesis).
Deliverables
OpenAcct will deliver the following user-installable binary components:
Component | Purpose |
---|---|
acct | Command line interface to manipulate the domain model |
libacct | Domain model and the common persistance code |
libacct-mysql | Persistance code for the MySQL backend |
libacct-sqlite | Persistance code for the SQLite backend |
libacct-pg | Persistance code for the PostgreSQL backend |
Implementation
Testing
OpenAcct testing will include acceptance testing using Cucumber, unit and integration testing using googletest, and possibly RSpec for some integration tests of the entire command line interface. Ideally the acceptance tests would be externally reviewed by someone with an accounting background. Tests of the entire command line interface that are not appropriate for external reviews would be good candidates for testing with RSpec.
Documentation
OpenAcct will use Doxygen to produce conceptual documentation describing the concepts it uses, command line documentation describing all subcommands and options of the command line interface, and library documentation of all entities, services, and support classes in the domain model.
Dependencies
Runtime
Dependancy | Purpose |
---|---|
ODB | C++ object-relational mapping used to generate and run the persistance code |
XSD | C++ statically typed object model for parsing and serializing XML described by an XSD file. Used for the standard input and output of the command line interface, when appropriate. |
Boost | Well designed, cross-platform, peer reviewed libraries. |
Testing
Dependancy | Purpose |
---|---|
Cucumber | Externally reviewed acceptance testing |
googletest | Unit testing and some integration testing |
RSpec | Some integration testing of the whole command line interface when external reviews are not called for |
Build
Dependancy | Purpose |
---|---|
Doxygen | Generate documentation in various formats |
CMake | Generate a platforrm-specific build system |