Skip to content

satyam-seth/weather-backend-app

Repository files navigation

Weather Backend App

A Django REST Framework backend for accessing climate datasets from the UK MetOffice.

🚀 Access Deployed Project

Local Setup

  1. Create Virtual Environment
python3 -m venv .venv
  1. Activate Virtual Environment
source .venv/bin/activate
  1. Install Required Dependencies
pip install -r requirements.txt
  1. Apply Migrations
python3 manage.py migrate
  1. Create .env file and add required environment variables
MANAGE_PY_PATH=manage.py
SECRET_KEY="<django-secret-key>"
DEBUG=True
ALLOWED_HOSTS=127.0.0.1,localhost
CORS_ALLOWED_ORIGINS=http://127.0.0.1:5173,http://localhost:5173
  1. Load climate data from UK MetOffice
python3 manage.py load_datasets
  1. Run server
python3 manage.py runserver

Development

  1. Test Coverage
  • Run tests with coverage

    coverage run manage.py test
  • See coverage report on terminal

    coverage report
  • Generate HTML report

    coverage html
  1. Run mypy type checking
mypy .
  1. Fix formatting using black
black .
  1. Sort imports using isort
isort --profile black --check-only .
  1. Run pylint for code quality checks
pylint **/*.py
  1. Pre Commit Hook
  • Install pre commit dependencies

    pre-commit install
  • Run pre-commit hooks manually

    pre-commit run --all-files
  1. Setup pre push hook
cp .githooks/pre-push .git/hooks/pre-push && chmod +x .git/hooks/pre-push
  1. Install recommended VS Code extensions
  • Open the extensions sidebar in VS Code ctrl+shift+x or cmd+shift+x

  • Type @recommended in the search bar

  • Install the recommended extensions

  1. Setup VS Code test runner
  • Add manage.py path variable in .env file

    MANAGE_PY_PATH=manage.py
  1. Load climate data from UK MetOffice
python3 manage.py load_datasets
  1. Generating OpenAPI Schema
python3 manage.py spectacular --validate --color --file schema.yml
  1. Setup required environment variables for github workflow
image
  1. Create super user
python manage.py createsuperuser

Use docker for development

  1. Build and start containers
docker-compose -f docker-compose.dev.yml up --build
  1. Start in detached mode
docker-compose -f docker-compose.dev.yml up -d
  1. Stop containers
docker-compose -f docker-compose.dev.yml down
  1. Open a shell inside backend service container
docker-compose -f docker-compose.dev.yml exec backend bash
  • Note: Run any Django command inside the container
python manage.py <command>
  • Shortcut without opening shell
docker-compose -f docker-compose.dev.yml exec backend python manage.py <command>
  1. See backend service container logs
docker-compose -f docker-compose.dev.yml logs -f backend
  1. Restart backend service
docker-compose -f docker-compose.dev.yml restart backend

Related Project

🔗 Web App: Weather Frontend Repository

About

A Django REST Framework backend for accessing climate datasets from the UK MetOffice.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published