Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Web app for keeping track of buildings in danger of collapsing in the event of an earthquake

License

NotificationsYou must be signed in to change notification settings

code4romania/seismic-risc

GitHub contributorsGitHub last commitLicense: MPL 2.0

code for romania twittercode for romania facebookcode for romania instagramcode for romania linkedin

🇷🇴 Un cutremur în București nu este o situație ipotetică. Este o certitudine că acest lucru se va întâmpla. Înacest context, la mai bine de 40 de ani de la cutremurul din 1977, memoria colectivă a ascuns în profunzime amintirileacelui dezastru în încercarea de a-și înăbuși teama. Dar realitatea este că, patru decenii mai târziu, Bucureștiul, lafel ca restul orașelor cu risc seismic ridicat, nu ar face față unui asemenea eveniment, iar pierderile de viețiomenești ar fi uriașe.Exercițiul Seism 2018derulat de DSU arată că cel puţin 4.587 persoane şi-ar pierde viaţa, iar 8.585 ar fost rănite, 6 spitale vor fidistruse, 23 de unităţi spitaliceşti distruse parţial, iar 9 avariate, dar funcţionale. O estimare, am spune noi, destulde optimistă.

Ce putem face pentru a deveni mai puțin vulnerabili? Să știm totul despre oraș, despre clădirile în care locuim astfelîncât să putem cere consolidarea lor. Acasă în Siguranță nu este doar "un nou site de informare", ci o platformă carecolectează și validează apoi cu experți date despre clădirile din România, la nivel național, ajută asociațiile deproprietari să își consolideze clădirile, te ține la curent cu legislația și ți-o explică și are grijă să ai la îndemânăinformații utile la orice moment.

🇬🇧 An earthquake in Bucharest is not a hypothetical situation. It is certain that this will happen. In this context,after more than 40 years from the 1977 earthquake, the collective memory has hidden deep the memories of that disasterin its attempt of stifling its fear. The reality is that, four decades later, Bucharest, as well as the rest of thecities with a high seismic risk, would not stand up tu such an event, and the loss of life would be tremendous.The Earthquake 2018 Exercise conducted by the DSU showsthat at least 4,587 people would have died and 8,585 would have been injured, 6 hospitals would be destroyed, 23 morewould be partially destroyed, and 9 would be damaged, though still functional. An estimation that we would considerquite optimistic.

What can we do to become less vulnerable? Find out everything about the city, about the buildings in which we live sothat we can ask for their consolidation. Home Safe is not just "a new information site", but a platform that collectsand then validates with the help of experts data about the buildings in Romania, at a national level, it helps ownersassociations to consolidate their buildings, it keeps you in touch with the current legislation and explains it to you,and it makes sure that you have useful information at your disposal at all times.

Let's save lives together.

TABLE OF CONTENTS(click to expand)

Contributing

If you would like to contribute to one of our repositories, first identify the scale of what you would like tocontribute. If it is small (grammar/spelling, or a bug fix) feel free to start working on a fix. If you are submitting afeature or substantial code contribution, please discuss it with the team and ensure it follows the product roadmap.

Our collaboration modelis described here.And make sure you check theworkflow document;it helps you keep your environment in a good shape, and it helps everyone move faster with code reviews.If you want to make any change to this repository, pleasemake a fork first.

We don't have a specific set of coding guidelines, so just follow the way the code was written until now, if in doubt,you can useGoogle's style guide.

Built With

Programming languages

Python 3JavaScript

Frameworks

Backend:DjangoClient:React

Package managers

Backend:pipClient:npm

Code styling

Backend:BlackClient:Prettier +ESLint +Airbnb style guide

Database technology & provider

PostgreSQL

Getting started

Risc Seismic backend is a Django application, built on top of Python 3.9+ with a PostgreSQL database. The Client is a Reactsingle page application.

Pre-requisites

In order to run the project locally, you need to haveDockeranddocker-compose installed.

You can install the above-mentioned packages manually, or you can use our helper commands.

OnUbuntu run:

make install-docker-ubuntu

OnMacOS run:

make install-docker-osx

On other platforms please follow the instructions described here:

Initial set-up

Initialising all the services

Make sure to check theEnvironment variablessection for info on how to set up the keys before you run the following commands:

cp .env.example.dev .env.dev# build the development containermake build-dev

If you didn't set up theRUN_LOAD_INITIAL_DATA variable, you can add dummy data to the database with the following command:

make build-dev

If theRUN_LOAD_INITIAL_DATA wasyes, then you should have dummy data but will have to create a superuser:

docker-composeexec api ./manage.py createsuperuser

Backing up and restoring the database in case of an upgrade

  1. Create a back-up of the data(thebuild folder is ignored by git)

    docker-composeexec db pg_dumpall -U postgres> ./build/backup.sql
  2. Run the database upgrade or just get the latest version of the code from git if it upgrades the database

    git pull upstream develop
  3. Remove the current database and start-up the environment(remove the-dev part if you don't want the development mode)

    make drop-db&& make build-dev
  4. Restore the backed-up data to the new database

    docker-composeexec db psql -U postgres< ./build/backup.sql
  5. Check the API endpoints and that you can log in the admin interface with the same users as before

Environment variables

Deployment variables

The following variables change the way the backend is deployed.

RUN_MIGRATIONSRun the initial migrations (sets up the data models from the database).

RUN_LOAD_INITIAL_DATAAdds real & dummy data to the database (adds buildings, datafiles, and statistics).

RUN_COLLECT_STATICCollects static files so that they can be easily served to production.

RUN_DEV_SERVERRuns the application in the development mode.

External services API keys

To have a fully functional project, you have to get two API keys: HERE Maps API Key and hCAPTCHA API Key.

HERE Maps API Key

Tutorial:https://developer.here.com/tutorials/getting-here-credentials/

Keys added to the.env file:

# the same key can be used for both variablesHERE_MAPS_API_KEYREACT_APP_HERE_MAPS_API_KEY
hCAPTCHA API Key
  1. Create a hCAPTCHA account
  2. Go toyour settings page
  3. Create a New Site, copy the Site Key and add it to the environment variables list

Keys added to the.env file:

REACT_APP_CAPTCHA_API_KEY

Starting the project

First check the.env file created by the init command and see if there are any environment variables that you mightneed to provide or change. This file is used bydocker-compose to pass the environment variables to the container itcreates.

Get the project up and running:

docker-compose up

You should be able to access the local environment site and admin at the following URLs:

If you have problems starting the project, first check outtheFAQ and if that doesn't work, ask someone from theproject's channel. Maybe the issue you just had is worth adding totheFAQ, wouldn't it?

To work on running containers that were started usingdocker-compose up, open another terminal and:

cd path/to/repodocker-composeexec api some_container_command# ordocker-composeexec client some_container_command

To see all available commands, run:

makehelp

Starting the project without Docker

Windows platform

Prerequisites
  1. PostgreSQL
  2. Python 3.9
  3. Node.js
Steps to set your environment
  1. In project directory run:

    python -m venv .venv.venv\Scripts\activate.batpip install -r ./backend/requirements-dev.txtcopy .env.dev .env
  2. Check the .env file created by the copy command and see if there are any environment variables that you might need toprovide or change. Double check database config line in .env. It has to follow thispattern:postgres://USER:PASSWORD@HOST:PORT/NAME

  3. Run following to set the needed environment variables:

    activate_dev_env.bat
  4. Check database connection. If this fails double check database configuration.

    python backend/wait_for_db.py
  5. Run migrations:

    python backend/manage.py migrate --no-input
  6. Create admin user (user to login into admin panel):

    python backend/manage.py createsuperuser
  7. Load dummy data in database:

    python backend/manage.py loaddata statisticspython backend/manage.py loaddata buildingspython backend/manage.py loaddata pages
  8. Install node modules.

    cd clientnpm install

Steps needed to start development servers

1. Start backend server.

Open terminal in the project directory and run environment activation script, then start the server.

.venv\Scripts\activate.batactivate_dev_env.batpython backend\manage.py runserver 0.0.0.0:8030

Check functionality athttp://localhost:8030 you should get a 404 page.

2. Start front-end server.

Open terminal in the project directory and run environment activation script, then start the server.

activate_dev_env.batcd clientnpm start

Check functionality athttp://localhost:3000.

Development

When creating new models in Django, to make sure they are generated in a clean environment, it is recommendedto generate the migration files using themake command:

make makemigrations&& make migrate

When you need to add/remove requirements or restrict the version of a requirement, edit therequirements.in (prod) andtherequirements-dev.in (dev) files accordingly. After doing this run:

make update-requirements

This will create a clean environment where it uses thepip-tools library tocompile the correspondingrequirements.txt files with the versions of the packages pinned. This is important as itguarantees that every environment this service runs in, has the same dependencies installed and minimizes the riskofworks on my machine.

Known Issues

Client hot-reload on Windows Docker is not working

Try following these steps:

  1. open up a terminal inseismic-risc_client container

  2. cd ./node_modules/react-scripts/config/

  3. vi webpackDevServer.config.js

  4. on the exported config object, update the value ofwatchOptions to include the following properties:

    aggregateTimeout: 100,poll: 500
  5. save the file and restart the client container

This way, webpack-dev-server should be watching files in polling mode, instead of listening for file change events.

In VS Code, ESLint fails to load the Prettier plugin

Add the following option to user settings in VS Code if ESLint fails to load the Prettier plugin.

{"eslint.workingDirectories": [        {"mode":"auto"        }    ]}

Management Commands

The new custom command can be called usingpython manage.py buildings <number>required arguments:

  • --delete
  • --create
cd path/to/repodocker-composeexec api bashroot@ba4fd81f9023:/code# python manage.py buildings 30 --create100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 30/30 [00:00<00:00, 37.89it/s]Successfully created 30 buildings.root@ba4fd81f9023:/code# python manage.py buildings 25 --deleteSuccessfully deleted 25 buildings.

Testing

Local development testing:

cd path/to/repodocker-composeexec api bashroot@3c5df91778ad:/code# pytest

Pipeline testing:

maketest

Production

To get the container ready for production use, we need to first build it:

docker build -t seismic-risc:latest ./backend

Use theprod.env.dist template file and create aprod.env file with the correct environment variables and run likeso:

docker run --env-file prod.env -p HOST_PORT:GUNICORN_PORT seismic-risc:latest

Or, you can provide all the environment variables at runtime:

docker run -e DJANGO_CONFIGURATION=Prod -e DJANGO_SECRET_KEY= -e DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME -e GUNICORN_PORT=5000 -e GUNICORN_WORKERS_COUNT=2 -p HOST_PORT:GUNICORN_PORT seismic-risc:latest

After testing the container runs properly, tag and upload the self to Docker hub:

docker tag seismic-risc:latest code4romania/seismic-risc:latestdocker push code4romania/seismic-risc:latest

Client Deployment

  • Change directory to./client
  • Build the solutionnpm install
  • Start a development servernpm start
  • Run the testsnpm test
  • Build the solutionnpm run build

Feedback

  • Request a new feature on GitHub.
  • Vote for popular feature requests.
  • File a bug in GitHub Issues.
  • Email us with other feedbackcontact@code4.ro

License

This project is licensed under the MPL 2.0 License — see theLICENSE file for details

About Code4Ro

Started in 2016, Code for Romania is a civic tech NGO, official member of the Code for All network. We have a communityof over 500 volunteers (developers, UX/UI, communications, data scientists, graphic designers, devops, IT security, andmore) who work pro bono for developing digital solutions to solve social problems. #techforsocialgood. If you want tolearn more details about our projectsvisit our site or if you want to talk to one of ourstaff members, please e-mail us atcontact@code4.ro.

Last, but not least, we rely on donations to ensure the infrastructure, logistics and management of our community thatis widely spread across 11 timezones, coding for social change to make Romania and the world a better place. If you wantto support us,you can do it here.


[8]ページ先頭

©2009-2025 Movatter.jp