OrgWolf is a web server for organizing your life. While it is functional by itself, it is best used in conjunction with client programs and plugins. # TODO: add url to list of clients. It is conceptually based on org-mode for emacs. While it aims to provide a comparable experience, OrgWolf does not require any org-mode knowledge and can happily be used without even knowing what emacs is.
Each app contains a few special files. models.py
holds python classes that moderately correspond to database entries. views.py
contains functions that serve up responses to web requests. tests.py
defines the unit tests that ensure previous work isn't broken by subsequent changes. urls.py
files are a series of regular expressions that describe how to translate a url to a view.
orgwolf/
contains server-wide components (auth, etc)- `orgwolf/settings.py
gtd/
contains the GTD components for making lists, etc.gtd/static/
contains the static and Javascript files for the gtd module.projects/
contains the tools to work on GTD nodes.wolfmail/
deals with messaging and sending GTD objects via e-mailplugins/
interact with other sources of information (eg. GMail, org-mode)local_settings.py
is an optional file that is not tracked by git. It is read by orgwolf/settings.pytemplates/
houses all the HTML-like templates that Django usestemplates/base.html
is a generic page that is modified by all other pages. It is never served directly. Global changes should be made here.templates/registration/
holds the account management templates
OrgWolf uses Django's management framework. Here are some helpful manage commands. Manage.py should be invoked using python manage.py <arguments>
. Substitue python
with python2
, python2.7
, etc. if needed.
manage.py runserver
- launch the webserver for testing at 127.0.0.1 port 8000manage.py test
- run full test suite (including built in Django tests). This does not test of CSS/JS/HTML errors.manage.py validate
- test whether the models are validmanage.py shell
- load an interactive shell with the environment set for this project. Apps are not in the default namespace.
Proper git usage is outside the scope of this document. In the interest of helping develops, however, here are a few commands relevant to this project:
git status
- see the current status of the local repositorygit pull
- get changes from the origin location (github?)git diff
- in-line comparison of differences between local and origin repositoriesgit commit -a
- create a new commit to "save" your changesgit push
- upload your committed changes to origin. Note you need github write access to modify that repo.
The following steps can be useful for installing dependencies and running tests.
pip install -e requirements.txt
pytest
npm install
npx webpack --config webpack.dev.js
The following environmental variables will be useful for preparing a deployment.
ORGWOLF_DEBUG=False
ORGWOLF_SECRET_KEY=dw$ts6i^58#mb9p # Make it much longer
ORGWOLF_DB_ENGINE=django.db.backends.mysql
ORGWOLF_DB_NAME=orgwolf
ORGWOLF_DB_USER=my_username
ORGWOLF_DB_PASSWORD=correcthorsebatterystaple
ORGWOLF_DB_HOST=127.0.0.1
ORGWOLF_DB_PORT=1433
ORGWOLF_DB_CONN_MAX_AGE=0
ORGWOLF_LOGFILE=/var/log/orgwolf.log
ORGWOLF_STATIC_ROOT=/usr/local/orgwolf-static/