Problem: Each employee gets allocated a fixed amount of money daily to order their lunch. Usually employees order a dish less than the allocated amount of money, and the remaining goes unused (It doesn't carry over to the next day). If one wants to order higher than the allocated amount of money, either they have to use their own personal money, or solicit money from some other employee who hasn't used his full allocation on that given day. Foodthought is a platform which creates a global fund of the unallocated money for the "needy" to use. It incentivizes people to donate their money in case they haven't used their full amount. In return, they are guarranted a higher probablity of being allocated money from global fund when they need it in the future.
For more understanding about the implementation and various strategies [keynote] (https://github.com/skgbanga/FoodThought/blob/master/Presentation.key) [pdf] (https://github.com/skgbanga/FoodThought/blob/master/Presentation.pdf).
- A build system: Tup
- A logging module: glog
- An event notification library: libevent
- A testing framework: gtest
- Boost
- C++11/14 (For a non-exhaustive list of c++11/14 features used, check c++11/14 section below)
- [PRNG] (http://en.cppreference.com/w/cpp/numeric/random)
- [regex] (http://en.cppreference.com/w/cpp/header/regex)
- make_unique
- [attribute sequence] (http://en.cppreference.com/w/cpp/language/attributes)
- [noexcept] (http://en.cppreference.com/w/cpp/language/noexcept_spec)