An interactive data visualization project investigating whether the world's scattered modern conflicts are the component parts of a decentralized, unspoken global war.
A declared world war is an event. It has a beginning, an end, and clear lines on a map. But a global conflict might also be a process. It might not be a single, catastrophic wound, but thousands of smaller injuries, happening all at once, all over the world. This project is named A Thousand Cuts to explore that idea.
We see the individual reports every day: a drone strike in Yemen, a border skirmish in Kashmir, a protest turned violent in Myanmar. Each is a local tragedy. But taken together, do they reveal a larger, interconnected pattern of global instability? Through a series of five interactive visualizations, this project invites you not to predict a world war, but to investigate whether we are already living through one.
This project requires two local servers to run at the same time: a Python/Flask server for the data API and a web server for the HTML/CSS/JavaScript files. The recommended setup uses VS Code's Live Server extension.
- Python 3.x
- Visual Studio Code (VS Code) with the Live Server extension installed.
- Required Python libraries. Install them using pip:
pip install flask flask_cors pandas scikit-learn nltkYou will need one terminal window and VS Code.
In your terminal, navigate to the python directory and run the Flask server. This server provides all the data to the visualizations.
# Navigate to the correct folder
cd path/to/your/project/assignment_05/python
# Run the server
python server.pyThis will start the data API on http://127.0.0.1:5000. Keep this terminal running in the background.
- In your second terminal, navigate to the
templatedirectory- - Run the server on port 8000 (python -m http.server 8000)
- Open the entire
assignment_05project folder in Visual Studio Code. - In the VS Code file explorer, navigate to the
templatefolder. - Right-click on the
index.htmlfile. - Select "Open with Live Server".
Your browser will automatically open a new tab with a URL like http://127.0.0.1:5500, and the project will load.
- Python
- Flask β For the data API.
- Pandas β For data manipulation.
- SQLite β For the database.
- Scikit-learn & NLTK β For text analysis and topic modeling.
- HTML5
- CSS3
- JavaScript (ES6+)
- D3.js v7 β For all interactive data visualizations.