The code for https://climateconnect.earth.
- Create a local Postgres database with your own username and password.
- Install PostGIS on your local machine
- Create the postgis extension within that database: run
CREATE EXTENSION postgis;
You will connect to this for your local backend project.
- Create a new superuser
- Alter your new user's password
- Create a new database
Supply these values to your local backend/.backend_env
.
We use Docker to run the local Redis server. See the Docker install docs if you don't have it.
Make sure to install docker-ce, docker-ce-cli, containerd.io, and docker-compose.
We use Python/Django for our backend and Next.js for the frontend.
First, create a Python virtual environment and start it
python3 -m venv climateconnect_env
cd climateconnect_env
source bin/activate
Then clone the GitHub repository
git clone https://github.com/climateconnect/climateconnect
After you've cloned the repository, we can set up the local Redis server and backend.
Note: we use Python 3, so for all instructions we insume python
means python3
.
- Go to backend directory:
cd backend
- Run
pip install -r requirements.txt
to install all backend libraries. - Create
.backend_env
to set environment variables.- You can find up-to-date sample env variables in
backend/local-env-setup.md
. - For the Django
SECRET_KEY
, runopenssl rand -base64 32
to create a 32 char random secret.
- You can find up-to-date sample env variables in
- Run
python manage.py migrate
to run Django migrations.- Note: This command is used for when you first start, or whenever you are adding or updating database models.
- Create supersuer using
python manage.py createsuperuser
- You can then access your admin panel via <API_URL>/admin/
- Ensure Docker is running and then run
sudo docker-compose up
. This will start a Redis server on Docker. - Ensure the Postgres server is running.
- Run server using
python manage.py runserver
. - Run Celery using
celery -A climateconnect_main worker -l INFO
-
If test data is needed, run this command:
python manage.py create_test_data --number_of_rows 4
-
If you need to wipe your local database and start over:
$ sudo -u postgres psql
postgres-# \connect $DATABASE_NAME $DATABASE_NAME-# \dt $DATABASE_NAME-# DROP SCHEMA public CASCADE; $DATABASE_NAME-# CREATE SCHEMA public; $DATABASE_NAME-# \q;
You will then need to run
python manage.py migrate
andpython manage.py createsuperuser
again after doing so.
If you want to run the test suite, use:
python manage.py test
Run a specific test file or test class:
python manage.py test <file_path> or <file_path + class_name>
cd frontend
yarn install
to download all npm packages- Add a
.env
file for frontend environment variables. You can find variables you need to set in/frontend/next.config.js/
For local development, use the following contents for .env
:
API_HOST="localhost"
API_URL="http://127.0.0.1:8000"
BASE_URL_HOST=""
SOCKET_URL="ws://api.climateconnect.earth"
yarn dev
to start developing
We use Jest as our testing framework write to tests for the FE code. Write
test files with .test.js
and execute them directly with
yarn jest path/to/testfile.test.js
See npm scripts in package.json
.
- Use GitHub actions to push to a server. A deploy file can be found in
.github/workflows
cd frontend
yarn --production
yarn build
node server.js
ORnext start
- Make sure your
ENVIRONMENT
env variable is set toproduction
- Follow steps 1-5 of the "Getting started locally - backend" (above in this file)