What is Stoic Penknife?
Stoic Penknife (https://www.stoicpenknife.com) is a web application to practice ancient Stoic philosophical 'think-exercises' to question your perceptions about yourself and your life. Marcus Aurelius, Seneca, Epictetus and other ancient Greek + Roman philosophers once practiced these exercises on paper - now you can do it with an app! Amazing.
How Can I Use the App?
To practice ancient Stoic philosophical 'think-exercises' and to create your own custom 'think-exercises', visit the production instance at https://www.stoicpenknife.com.
How Can I Contribute?
We would love to hear about your experiences using the application and in particular the 'think-exercises.' Are there 'think-exercises' that you find particularly helpful or meaningful?
Are there any problems that you encountered? You can open an Issue or write to me, Henry, at
How Can I Contribute?
Stoic Penknife is an open source project. If you are interested in contributing, feel free to create an issue or a task in the Project tab: We have a list of tasks in the Project tab. Alternatively or in addition, feel free to write to me, Henry, at
firstname.lastname@example.org. We would also love to hear about additional improvement ideas. You are also free to fork the project and to make your own version (perhaps an Epicurean, Platonic-Academic, Aristotlean-Peripatetic, Pyrrho-Skeptic, Eclectic, Diogenes-Cynic or Heraklitean version?!)
How is the Application Organized?
- Rails Active Record Backend
- Bootstrap Views with HAML + JQuery
- 2 Admins - Custom Admin (Managed with CanCanCan Gem) plus an Active Admin
The Custom CanCanCan Admin is for managing exercises, doctrines and quotations. The Active Record Admin is for managing users. In the future I would love to combine them. There is no reason to have two separate Admins.
Stoic Penknife uses RSpec's new System Specs to test all key integrated user actions. I also have controller specs for the Exercise controller, the most important controller. All the key models are covered.
CodeCov to monitor Test Coverage: https://codecov.io/gh/Henryvw/stoic_penknife
The exception to Stoic Penknife's test coverage (the reason it is not 100% covered) is the Active Admin backend. This Admin is not relevant to the user experience and I have not written tests for it. Again, should I combine the two Admins into one, I would start by writing a new 'Admin' test suite.
Hosting + Deployment
I use CircleCI to run the
Rubocop linter and the full test suite, push to CodeCov and and manage deployment to the production Heroku instance: https://github.com/Henryvw/stoic_penknife/blob/master/.circleci/config.yml
Play with the App Locally / Have a Dev Environment
If you want to play around, simply download the app and make sure you have Rails 5.2.3 and Ruby 2.6.2 installed and spin her up -
I still have not written a
seed file for the database. You will need to manually create a User with
admin=true in Rails Console in order to administer global exercises.
The second, ActiveAdmin back-end you can access at
/admin. At the present time this also requires a Rails Console-manually-created separate, Active Admin user created using the
Note about Selenium Web Driver and Chrome RSpec Tests
In order to run the test suite, you will need to install the
chromedriver utility. On Mac OS X, this is managed by
homebrew. Every time Chrome releases a new version of itself, for example going from Version 74 to Version 76, on your local machine to run the test suite you will need to update the
On Mac OS X,
chromedriver is managed by
homebrew. You can update it via the command:
brew cask reinstall chromedriver
Stoic Penknife is licensed under the Creative Commons Attribution-ShareAlike CC BY-SA License. This license lets you remix, tweak, and build upon Stoic Penknife even for commercial purposes, as long as you credit me and license your new creations under the identical terms. Read more at the Creative Commons page for this license.