🇷🇴 Un cutremur în București nu este o situație ipotetică. Este o certitudine că acest lucru se va întâmpla. În acest context, la mai bine de 40 de ani de la cutremurul din 1977, memoria colectivă a ascuns în profunzime amintirile acelui dezastru în încercarea de a-și înăbuși teama. Dar realitatea este că, patru decenii mai târziu, Bucureștiul, la fel ca restul orașelor cu risc seismic ridicat, nu ar face față unui asemenea eveniment, iar pierderile de vieți omenești ar fi uriașe. Exercițiul Seism 2018 derulat 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 fi distruse, 23 de unităţi spitaliceşti distruse parţial, iar 9 avariate, dar funcţionale. O estimare, am spune noi, destul de 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. Bulina Roșie nu este doar "un nou site de informare", ci o platformă care colectează și validează apoi cu experți date despre clădirile din România, la nivel național, ajută asociațiile de proprietari 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 disaster in its attempt of stifling its fear. The reality is that, four decades later, Bucharest, as well as the rest of the cities 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 shows that at least 4,587 people would have died and 8,585 would have been injured, 6 hospitals would be destroyed, 23 more would be partially destroyed, and 9 would be damaged, though still functional. An estimation that we would consider quite optimistic.
What can we do to become less vulnerable? Find out everything about the city, about the buildings in which we live so that we can ask for their consolidation. Bulina Roșie is not just "a new information site", but a platform that collects and then validates with the help of experts data about the buildings in Romania, at a national level, it helps owners associations 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
If you would like to contribute to one of our repositories, first identify the scale of what you would like to contribute. If it is small (grammar/spelling, or a bug fix) feel free to start working on a fix. If you are submitting a feature or substantial code contribution, please discuss it with the team and ensure it follows the product roadmap.
Our collaboration model is described here. And make sure you check the workflow 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, please make 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 use Google's style guide.
API: Black Client: Prettier + ESLint + Airbnb style guide
Risc Seismic API is a Django application, built on top of Python 3.9+ with a PostgreSQL database. The Client is a React single page application.
In order to run the project locally, you need to have Docker and docker-compose installed.
You can install the above-mentioned packages manually, or you can use our helper commands.
On Ubuntu
run:
make install-docker-ubuntu
On MacOS
run:
make install-docker-osx
On other platforms please follow the instructions described here:
Make sure to check the Environment variables section for info on how to set up the keys before you run the following commands:
cp .env.dev .env
# build the development container
make build-dev
If you didn't set up the RUN_LOAD_DUMMY_DATA
variable, you can add dummy data to the database with the following command:
make init-db
If the RUN_LOAD_DUMMY_DATA
was yes
, then you should have dummy data but will have to create a superuser:
docker-compose exec api ./manage.py createsuperuser
-
Create a back-up of the data (the
build
folder is ignored by git)docker-compose exec db pg_dumpall -U postgres > ./build/backup.sql
-
Run the database upgrade or just get the latest version of the code from git if it upgrades the database
git pull upstream develop
-
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
-
Restore the backed-up data to the new database
docker-compose exec db psql -U postgres < ./build/backup.sql
-
Check the API endpoints and that you can log in the admin interface with the same users as before
The following variables change the way the API is deployed.
RUN_MIGRATION
Run the initial migrations (sets up the data models from the database).
RUN_LOAD_DUMMY_DATA
Adds real & dummy data to the database (adds buildings, blog posts, pages, datafiles, and statistics).
RUN_COLLECT_STATIC
Collects static files so that they can be easily served to production.
RUN_DEV_SERVER
Runs the application in the development mode.
In order to have a fully functional project, you have to get two API keys: HERE Maps API Key and hCAPTCHA 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 variables
HERE_MAPS_API_KEY
REACT_APP_HERE_MAPS_API_KEY
- Create a hCAPTCHA account
- Go to your settings page
- 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
First check the .env
file created by the init command and see if there are any environment variables that you might
need to provide or change. This file is used by docker-compose
to pass the environment variables to the container it
creates.
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 out the FAQ and if that doesn't work, ask someone from the project's channel. Maybe the issue you just had is worth adding to the FAQ, wouldn't it?
To work on running containers that were started using docker-compose up
, open another terminal and:
cd path/to/repo
docker-compose exec api some_container_command
# or
docker-compose exec client some_container_command
In order to see all available commands, run:
make help
-
In project directory run:
python -m venv .venv .venv\Scripts\activate.bat pip install -r ./api/requirements-dev.txt copy .env.dev .env
-
Check the .env file created by the copy command and see if there are any environment variables that you might need to provide or change. Double check database config line in .env. It has to follow this pattern:
postgres://USER:PASSWORD@HOST:PORT/NAME
-
Run following in order to set the needed environment variables:
activate_dev_env.bat
-
Check database connection. If this fails double check database configuration.
python api/wait_for_db.py
-
Run migrations:
python api/manage.py migrate --no-input
-
Create admin user (user to login into admin pannel):
python api/manage.py createsuperuser
-
Load dummy data in database:
python api/manage.py loaddata statistics python api/manage.py loaddata buildings python api/manage.py loaddata pages
-
Install node modules.
cd client npm install
1. Start API server.
Open terminal in the project directory and run environment activation script, then start the server.
.venv\Scripts\activate.bat
activate_dev_env.bat
python api\manage.py runserver 0.0.0.0:8030
Check functionality at http://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.bat
cd client
npm start
Check functionality at http://localhost:3000.
When creating new models in Django, in order to make sure they are generated in a clean environment, it is recommended
to generate the migration files using the make
command:
make makemigrations && make migrate
When you need to add/remove requirements or restrict the version of a requirement, edit the requirements.in
(prod) and
the requirements-dev.in
(dev) files accordingly. After doing this run:
make update-requirements
This will create a clean environment where it uses the pip-tools library to
compile the corresponding requirements.txt
files with the versions of the packages pinned. This is important as it
guarantees that every environment this service runs in, has the same dependencies installed and minimizes the risk
of works on my machine
.
Try following these steps:
-
open up a terminal in seismic-risc_client container
-
cd ./node_modules/react-scripts/config/
-
vi webpackDevServer.config.js
-
on the exported config object, update the value of
watchOptions
to include the following properties:aggregateTimeout: 100, poll: 500
-
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.
Add the following option to user settings in VS Code if ESLint fails to load the Prettier plugin.
{
"eslint.workingDirectories": [
{
"mode": "auto"
}
]
}
The new custom command can be called using
python manage.py buildings <number>
required arguments:
- --delete
- --create
cd path/to/repo
docker-compose exec api bash
root@ba4fd81f9023:/code# python manage.py buildings 30 --create
100% |███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 30/30 [00:00<00:00, 37.89it/s]
Successfully created 30 buildings.
root@ba4fd81f9023:/code# python manage.py buildings 25 --delete
Successfully deleted 25 buildings.
Local development testing:
cd path/to/repo
docker-compose exec api bash
root@3c5df91778ad:/code# pytest
Pipeline testing:
make test
In order to get the container ready for production use, we need to first build it:
docker build -t seismic-risc:latest ./api
Use the prod.env.dist
template file and create a prod.env
file with the correct environment variables and run like
so:
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=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:latest
docker push code4romania/seismic-risc:latest
- Change directory to
./client
- Build the solution
npm install
- Start a development server
npm start
- Run the tests
npm test
- Build the solution
npm run build
- Request a new feature on GitHub.
- Vote for popular feature requests.
- File a bug in GitHub Issues.
- Email us with other feedback contact@code4.ro
This project is licensed under the MPL 2.0 License — see the LICENSE file for details
Started in 2016, Code for Romania is a civic tech NGO, official member of the Code for All network. We have a community of over 500 volunteers (developers, UX/UI, communications, data scientists, graphic designers, devops, IT security, and more) who work pro bono for developing digital solutions to solve social problems. #techforsocialgood. If you want to learn more details about our projects visit our site or if you want to talk to one of our staff members, please e-mail us at contact@code4.ro.
Last, but not least, we rely on donations to ensure the infrastructure, logistics and management of our community that is widely spread across 11 timezones, coding for social change to make Romania and the world a better place. If you want to support us, you can do it here.