https://github.com/garybernhardt/sucks-rocks
Sucks/Rocks judges the goodness of terms by searching the web for positive and negative mentions of them.
Its design is intended to illustrate isolated unit testing as well as service-wrapper-record design. Services have no concrete knowledge about the database or external services; records wrap the database, providing the interface that the services need; and wrappers hide details of third-party APIs, narrowing their interfaces to only what the services need.
This application was built test-first as a demonstration, and the full process is viewable as a series of eight Destroy All Software screencasts.