CORE is a software engine that houses the common use-case algorithms used for business management applications. CORE can be used as a processing module of a POS software, an inventory system, and more.
These are the tools and technology used in this project:
- Language: C++17
- Compiler: gcc-7
- GUI: Qt Framework
- Database: SQLite
- Build system: CMake
- Profiling: gprof
- Library: C++ Standard Library
- Unit test: gtest
- Static tools: cpplint/cppcheck
- CI: travis-ci
- Platform: Linux, Windows, MinGW
CORE is also designed to work with any GUI framework and database.
The repository consists of three main components:
.
├── CMakeLists.txt
├── core
│ ├── domain - business workflow and components
│ └── entity - business entities
├── orchestra
│ ├── application - presentation layer
│ ├── datamanager - database queries
│ └── migration - dummy database
└── utility
└── logger, fileio, etc.
These are the base requirements to build and use CORE.
- Cmake
- C++17-standard-compliant compiler
- use
mingw
for windows
- use
Clone the repository to a local destination using git:
git clone git@github.com:pointonsoftware/pscore.git
Update the submodules in the external folder:
git submodule init
git submodule update
- Run
clean_build.sh
- Generated/output files are in pscore/build folder
- Open the root CMakeLists.txt file with your favorite IDE.
- Hit Build!
- Go to your build directory
- The build generates domain libraries that contain the CORE use cases. These libraries can be linked to any executable.
- Go to your build directory
- Inside the bin folder, run console_app.
- This application is used to test the CORE APIs.
- Unreleased version asks for the user's name and print it in the console using the logger utility class.
- console_app v0.0.1 login screen:
The initial CORE v0.0.4 includes login and view personal information features.
Below are the planned releases in the future:
- v0.1.0 - Full admin login/logout
- v0.2.0 - Basic employee management
- v0.3.0 - Basic employee management
- v0.4.0 - Basic customer management
- v0.5.0 - Basic sales operations
- v0.6.0 - Basic POS
- v1.0.0 - Basic accounting operations
- v1.x.x - Improving the basic operations
- v2.x.x - Support for external hardwares like barcode scanner and receipt printer
After CORE v1.0.0, it is planned that another project will be built to upgrade the console_app into a more user friendly, graphical user interface.
- Ben Ziv - pointonsoftware@gmail.com
A developer guide document is available in the doc folder and can be used to setup the project.
Once able to build, you can make your changes and submit a pull request!
Make sure that your master branch is up to date with CORE's master branch:
git checkout master
git pull upstream master
Create your feature/developement branch and work on your change in this branch:
git checkout -b dev/[yourbranchname]
Then update your feature branch from your local copy of master, and push it!
git pull --rebase origin master
git push -u origin dev/[yourbranchname]
Finally, go to GithHub and make a Pull Request!
Travis-CI and GitHub actions will try to build and run several tests on your pull request. We care about quality, so your PR won't be merged until all tests pass.
A PR can only be merged into master if:
- It has passed CI.
- It has been approved by at least one maintainer.
- It has no requested changes.
- It is up to date with current master branch.
The PR author is allowed to merge the PR if all of these conditions are met.
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2020 Pointon Software
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.