Website overview and demo: youtube
Job board made for Concordia University, Montreal, Canada, Co-op ACE program.
Security | Job Ranking & Matching | Media servicing | User Notification | Other Job Board Services | Database | CI/CD |
---|---|---|---|---|---|---|
Google Captcha | Candidate-Employer preference ranking system | Nginx file servicing | django-notifications-hq | ATS and full admin control | Postgres Db docker service | Prod Ready easy Docker-Compose setup and dedicated test docker-compose setup |
Let's Encrypt SSL with certificate autorenewal | "hospital-resident" matching algorithm | Dynamic Plyr video player | Email/Mass Email notification | Post/review/edit jobs, interview invite, job matching, email notification | Persistent docker db mount | Persistent Volumes and storage mount, django migrations |
Nginx-Sendfile Firewall | Dynamic upload forms | Annoncements | Apply to jobs/Cache old applications and autofill forms | Separated test media and test db volumes with 99% coding sharing between prod and test docker-compose setups | ||
uuid protected dynamic file paths | Secured resume caching and reuse | E-commerce grade search and filter for jobs | ||||
Email password reset | Sendfile + auth protected media | Search and filter candidates | ||||
Email activation and confirmation | Login as Admin, Candidate or Employer | |||||
Google Map, PDF Concatination |
- All python/django/yml code are created by us and available under MIT licence
- html template license was purchased for single app use for Concordia ACE website on oficiona License must be re-purchased for other project. Permission to reuse template not under MIT license.
For production
- Make sure Docker is installed and running on the machine. No other installation is needed.
- Clone this repo and navigate to its root path, where
production.yml
is located. - Make a
web.env
file (not included in the code) using theweb.env.dev
file (include here) as template and put it in the same folder directory. Change the secret keys in the template to your own production keys. More specifically:-
Add your host ip/domain name to
DJANGO_ALLOWED_HOSTS
list. (Note that your Domain Name must be linked to your server IP address. this is outside the scope of this readme; please consult your server provider for more details.) -
Add your Google reCaptcha V2 key (make sure that your domain is in your Google Key API account's allowed list)
-
Generate a strong random
secret key
; this will be used for RSA. -
Set
DEV=False
-
Leave the DB login credentials idem (i.e. use the default linux postgre db login credentials) - the DB is not exposed to the web and there is no need to further secure it.
-
Add your email credentials and
smtp
host.web/ace/settings.py
uses PORT = 587 and TLS by default. -
Add your Google Map API key key (make sure that your domain is in the allowed list)
-
The
GOOGLE_API_KEY
is optional and currently not use, use the same key as dev to omit it. -
Make a
db.env
file with the same content asdb.env.dev
. -
In
production.yml
, add your domain to the letsEncryption environment parameters (i.e. replace concordia-ace.ca inURL=concordia-ace.ca
with your own domain name).
-
- Enter the following command
docker-compose -f production.yml up --build
ORdocker-compose -f production.yml up --build -d
(deamon mode). This will spin up the docker server, install all dependencies and set up the website with https encryption. - The website is now running. You may access it using your host
ip/domain name
with any web browser. Collection Static and migrations are automated in step 4). Db and media files are also stored in web/prod_storage folder via volume mount. Db Migration files are stored in web/appName/migration
subfolders. - To create the first superuser (admin), run the command
docker exec -it yourWebDockerID python manage.py createsuperuser
. Follow the on-screen instructions and choose user type4
when asked. Subsequent admin can be created in the admin menu options. To find out the value ofyourWbDockerID
, run the command linedocker ps
For test
Skip step 3) above.
- Enter the following command
docker-compose up --build
- Enter hyperlink
locahost
to access the website with any web browser. Media and db files are stored in virtual docker volumes not mounted to a physical location on the drive.
All other step are identical. Note: don't run test volumes on the same machine as prod volumes; they share the same volume names.
Turning on and off
- To turn off website:
docker-compose down
- To turn on without rebuilding:
docker-compose -f production.yml up
- To turn on with rebuilding: Step 4) above