The project is developed and maintained by developers in an Open Source manner. Any support is welcome. You could help by writing documentation, pull-requests, report issues and/or translations.
An issue with a good first or help wanted label might be a good place to start with.
- Using Docker.(This should potentially be less time-taking)
- Local Setup.
- Please make sure you have docker and docker-compose installed.
- The easiest way to setup everything and run the server is
docker-compse up
(This might take some time for the first time, depending upon your internet connection, processing power of your machine, etc,).
- The Docker setup comes with pre-built client modules and requirements. To start all required services to run backend server locally, run
make up
- For running tests
make test
- For viewing logs
make logs
- Important: Whenver you update a
python
dependency or make a new migration to be executed on the database, you may have to rebuild the container by running
make build
- For more information on other useful commands, you may see the Makefile .
- To use
pre-commit
hooks, view Setting up Pre-Commit.
- Install
Install PostgreSQL. If you are installing PostgreSQL for the first time, follow the steps given in this answer to setup password based authentication.
After installation of Postgresql
Run:
sudo psql -U postgres
If you see error:
FATAL: Peer authentication failed for user "postgres"FATAL: Peer authentication failed for user "postgres"
Do the following steps to set up password authentication.
sudo -u postgres psql
In the postgres# shell type:
\password postgres
to change the password
Exit psql:
\q
Edit /etc/postgresql/<postgres-version>/main/pg_hba.conf and change:
local all postgres peer
To:
local all postgres md5
Restart postgresql:
sudo service postgresql restart
Login to the postgres shell and run:
CREATE DATABASE care; GRANT ALL PRIVILEGES ON DATABASE care TO postgres; \q
You may replace care with the database name of your preference
You also might have to install PostGIS scripts.
Linux users can install PostGIS scripts by running
$ sudo apt install postgresql-<version>-postgis-scripts
- Windows users can install
- PostGIS through Application Stack Builder which is installed along PostgreSQL using standard PostgreSQL installer.
- OSGeo4W from this site.
Then follow the steps listed here.
Git hooks is a feature which helps to fix small issues in your code before you commit the code. Pre-Commit is a package manager and tool for running and organising your git hooks. More here at pre_commit_site.
- Install pre-commit
pre-commit is installed while you run
pip install -r requirements/local.txt
- Setup
this installs all the git-hooks
$ pre-commit install
- Running pre-commits
The git hooks run every time you commit code to the repo. If you want to run it before committing, use the following command
$ pre-commit run --all-files
- FAQs and Issues with pre-commit
- Reach out on the #coronasafe_django channel in slack to resolve the issues.
Moved to settings.
To create a normal user account, just go to Sign Up and fill out the form. Once you submit it, you'll see a "Verify Your E-mail Address" page. Go to your console to see a simulated email verification message. Copy the link into your browser. Now the user's email should be verified and ready to go.
To create an superuser account, use this command:
$ python manage.py createsuperuser
For convenience, you can keep your normal user logged in on Chrome and your superuser logged in on Firefox (or similar), so that you can see how the site behaves for both kinds of users.
If the command prompts for username only and after entering if it goes to error do make sure that you have done the following
Note: Make sure that you have created a database named care (replace thisw with your database name) with privileges set for the user postgres
In the virtualenv shell type the following commands also:
export DATABASE_URL=postgres://postgres:<password>@127.0.0.1:5432/care export TEST_POSTGIS_URL="postgis://postgres:<password>@127.0.0.1:5432/care"
You may replace 'care' with the database you have created before.
After doing this you can type the following command:
$ python manage.py migrate
and after you make sure everything is ok
run this command again:
$ python manage.py createsuperuser
This will now prompt for the following details - Ignore any warnings.
- username: give the username here
- usertype: Give the value 10 [5 for doctor, 10 for hospital staff/hospital administrator, 15 for patient, 20 for volunteer]
- gender: 1 for male, 2 for female, 3 for other
- email: give e-mail id
- phonenumber: give your ten digit phone number here
- password: Give the password here
To copy static files (css, js, images) into the care/care/media directory so that the website loads with images and CSS styles, you may use the command:
$ python manage.py collectstatic
Running type checks with mypy:
$ mypy care
$ python manage.py test --settings=config.settings.test -n
If you get an ImproperlyConfigured
error regarding the Spatialite library extension, install it with the command:
$ sudo apt install libsqlite3-mod-spatialite
Moved to Live reloading and SASS compilation.
In development, it is often nice to be able to see emails that are being sent from your application. If you choose to use MailHog when generating the project a local SMTP server with a web interface will be available.
Download the latest MailHog release for your OS.
Rename the build to
MailHog
.Copy the file to the project root.
Make it executable:
$ chmod +x MailHog
Spin up another terminal window and start it there:
./MailHog
Check out http://127.0.0.1:8025/ to see how it goes.
Now you have your own mail server running locally, ready to receive whatever you send it.
Sentry is an error logging aggregator service. You can sign up for a free account at https://sentry.io/signup/?code=cookiecutter or download and host it yourself. The system is setup with reasonable defaults, including 404 logging and integration with the WSGI application.
You must set the DSN url in production.
The following details how to deploy this application.
See detailed cookiecutter-django Heroku documentation.