# dispatch-tracker Most of the features are here and the application should fulfill the use case at this time. ## Things to fix/add going forward: * Friendly Error pages * Description format field for customer objects & * on load create page dynamically pull in cursomter description format and display above the form field * Upload Invoice logos on Identity Objects for use in Invoices * Change Name To "Load Pay System" -- we're going to think about it * Freight Invoicing System * Figure out if auditlog timestamps are fucked or not with timezones ## To get a development system setup: Not strictly part of the Django app, but worth noting that if you have Postgres installed locally but don't want to muck with permissions, service etc it's as simple as: ```bash pg_ctl -D pg_data initdb pg_ctl -D pg_data -l pg_log start echo create database $(id -un)\; | psql postgres echo create database dispatch | psql ``` Your user should be able to connect with just a simple `psql` You will need to install ``` base-devel python3-devel postgresql-libs-devel ``` On Void Linux. On Ubuntu machines it will be similar. ``` bash cd app virtualenv env . env/bin/activate pip install -r requirements.txt cp config-example.yml config.yml sed -i.bak -e"s/USER: postgres$/USER: $(id -un)" config.yml ./manage.py migrate ./manage.py createsuperuser # This will create some fake records if you wish ./manage.py insert_fake_data --companies 10 --users 10 \ --loads 400 --start-date='-16w' --end-date='+16w' --attachments=true \ --invoices=true # Default is 2 weeks for start/end date, no # defaults for any other options # Run a local development server, listens to the world ./manage.py runserver 0.0.0.0:8080 ``` ## To get a production system setup: ``` bash export CFG="my-config.yml" cd app virtualenv env . env/bin/activate pip install -r requirements.txt cp config.yml $CFG vi $CFG # This is where you change the SECRET_KEY, static_root, allowed_hosts # and other settings. cat uwsgi.ini | sed -e"s/config.yml/$CFG/g" > my-uwsgi.ini ./manage.py collectstatic ./manage.py migrate ./manage.py createsuperuser uwsgi --ini my-uwsgi.ini # This will start the daemon, it's up to you to # configure your OS to start it on boot ``` Below is a sample Nginx configuration, edit for your needs: ``` nginx # It's up to you to configure HTTPs, I _highly_ recommend it server { listen 80; # Uncomment if you have ipv6 # listen [::]:80; server_name dispatch.example.com; root /var/www/dispatch.example.com; index index.html index.htm; # Some applications have trouble with merged slashes # This likely doesn't but worth noting merge_slashes off; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9200; } # Pass through the static directory # This should match whatever is in your config file location /static { alias /var/www/dispatch.example.com/static; } # This is probably going to be pulled from dispatch/static/robots.txt location /robots.txt { alias /var/www/dispatch.example.com/static/robots.txt; } # Enable logging # You will likely have to create these directories for Nginx to load access_log /var/log/nginx/dispatch.example.com/access.log; error_log /var/log/nginx/dispatch.example.com/error.log; } ``` ## Docker Environment setup A quasi production esque setup using `uwsgi` ``` ./docker-compose up -d ``` Then ``` sh docker-scripts/setup.sh ``` And carefully follow the prompts. Docker compose is configured to bring up the Nginx instance on http://172.21.23.2 # Misc Name brainstorming / Use case: ``` Subcontractor invoicing system Subcontractor Freight Invoicing System A business solution for subcontractors that don't invoice you. ```