|
| 1 | +# π Ukraine Conflict Data Dashboard |
| 2 | + |
| 3 | +Project for the **COM-480 Data Visualization** course at EPFL. |
| 4 | + |
| 5 | +## π¨βπ©βπ§βπ¦ Students |
| 6 | + |
| 7 | +**Daniele Giuli** |
| 8 | +**Chaewon Yoon** |
| 9 | +**Ali Shenaskhosh** |
| 10 | + |
| 11 | +## β
Live Prototype |
| 12 | + |
| 13 | +The final live prototype can be found here: |
| 14 | + |
| 15 | +π **[Go to website](INSERT_WEBSITE_LINK_HERE)** |
| 16 | + |
| 17 | +## π Final Deliverables |
| 18 | + |
| 19 | +* π **Process Book:** [Read the process book](INSERT_PROCESS_BOOK_LINK_HERE) |
| 20 | +* π₯ **Screencast:** [Watch the screencast](INSERT_SCREENCAST_LINK_HERE) |
| 21 | +* π **Website:** [Go to website](INSERT_WEBSITE_LINK_HERE) |
| 22 | + |
| 23 | +## π΄ Abstract |
| 24 | + |
| 25 | +The Ukraine-Russia conflict is a complex crisis involving military activity, humanitarian consequences, and international economic support. This project presents an interactive data visualization dashboard that helps users explore these dimensions through maps, timelines, rankings, and statistical charts. |
| 26 | + |
| 27 | +The dashboard combines conflict event data, regional summaries, international aid commitments, and economic indicators. Users can explore the conflict from multiple perspectives: global aid contributions, regional conflict intensity, battlefront activity over time, and detailed country or oblast profiles. |
| 28 | + |
| 29 | +## π― Target Audience |
| 30 | + |
| 31 | +This project is intended for users interested in understanding the Ukraine-Russia conflict through visual and interactive data exploration, including students, researchers, journalists, analysts, and general users. |
| 32 | + |
| 33 | +No technical background is required to use the website. |
| 34 | + |
| 35 | +## π Website Overview |
| 36 | + |
| 37 | +The website consists of four main pages: |
| 38 | + |
| 39 | +```text |
| 40 | +index.html # Interactive map, timeline, and battlefront view |
| 41 | +statistics.html # Overall conflict and aid statistics |
| 42 | +country.html # Country-level aid profile |
| 43 | +oblast.html # Oblast-level conflict profile |
| 44 | +``` |
| 45 | + |
| 46 | +### Main Map |
| 47 | + |
| 48 | +The main page provides an interactive Leaflet map with three views: |
| 49 | + |
| 50 | +* **States View:** global map of aid pledged to Ukraine by donor country. |
| 51 | +* **Oblasts View:** regional map of conflict intensity across Ukrainian and Russian oblasts. |
| 52 | +* **Battlefront View:** time-based visualization of conflict events with point, density, comparison, and playback controls. |
| 53 | + |
| 54 | +The page also includes a timeline of key events, hover tooltips, map legends, reset controls, and an export function. |
| 55 | + |
| 56 | +### Overall Statistics |
| 57 | + |
| 58 | +The statistics page summarizes the conflict and international support through: |
| 59 | + |
| 60 | +* casualty and event summary cards; |
| 61 | +* event distribution charts; |
| 62 | +* aid allocation charts; |
| 63 | +* cumulative aid trends; |
| 64 | +* aid-to-GDP ranking; |
| 65 | +* death and event time-series visualizations. |
| 66 | + |
| 67 | +### Country and Oblast Profiles |
| 68 | + |
| 69 | +The detail pages provide focused views for selected countries and regions: |
| 70 | + |
| 71 | +* **Country profiles** show total aid, aid type distribution, aid-to-GDP ratio, ranking position, and monthly aid trends. |
| 72 | +* **Oblast profiles** show total events, fatalities, event types, monthly trends, pictograms, and regional rankings. |
| 73 | + |
| 74 | +## πΏ Dataset |
| 75 | + |
| 76 | +The project uses processed data files stored directly in the repository under the `data/` folder. |
| 77 | + |
| 78 | +The main datasets are derived from: |
| 79 | + |
| 80 | +* **ACLED** β conflict event records and geospatial conflict information; |
| 81 | +* **Kiel Institute Ukraine Support Tracker** β international aid commitment data; |
| 82 | +* **World Bank** β GDP and country-level economic indicators. |
| 83 | + |
| 84 | +The website expects the following files to be available through the `data/` path: |
| 85 | + |
| 86 | +```text |
| 87 | +data/ |
| 88 | +βββ world_countries.geojson |
| 89 | +βββ ukraine_oblasts.geojson |
| 90 | +βββ russia_oblasts.geojson |
| 91 | +βββ acled_by_oblast.json |
| 92 | +βββ aid_by_country.json |
| 93 | +βββ events_by_month.json |
| 94 | +βββ gdp_by_country.json |
| 95 | +βββ timeline_events.json |
| 96 | +``` |
| 97 | + |
| 98 | +## π οΈ Technologies Used |
| 99 | + |
| 100 | +* **HTML5 / CSS3 / JavaScript** |
| 101 | +* **D3.js v7** |
| 102 | +* **Leaflet.js v1.9.4** |
| 103 | +* **Leaflet.heat** |
| 104 | +* **Turf.js** |
| 105 | +* **html2canvas** |
| 106 | +* **R / Python** for exploratory data analysis and preprocessing |
| 107 | + |
| 108 | +## π Project Structure |
| 109 | + |
| 110 | +```text |
| 111 | +project-root/ |
| 112 | +βββ .github/workflows/ # GitHub workflow files |
| 113 | +βββ data/ # Data files used by the website |
| 114 | +βββ docs/ # Website files for deployment |
| 115 | +βββ figures/ # Figures used in reports or milestones |
| 116 | +βββ EDA.R # Exploratory data analysis script |
| 117 | +βββ Milestone1.md # Milestone 1 report |
| 118 | +βββ Milestone2.md # Milestone 2 report |
| 119 | +βββ guidebook.md # Additional documentation |
| 120 | +βββ plan.docx # Project planning document |
| 121 | +βββ preprocess.py # Data preprocessing script |
| 122 | +βββ README.md # Project documentation |
| 123 | +``` |
| 124 | + |
| 125 | +## π§βπ» Running the Website Locally |
| 126 | + |
| 127 | +Because the website loads local `.json` and `.geojson` files, it should be run through a local web server rather than opened directly with `file://`. |
| 128 | + |
| 129 | +### Option 1: VS Code Live Server |
| 130 | + |
| 131 | +1. Clone the repository. |
| 132 | +2. Open the project folder in VS Code. |
| 133 | +3. Install the **Live Server** extension. |
| 134 | +4. Open the website entry file, usually `index.html`. |
| 135 | +5. Right-click and select **Open with Live Server**. |
| 136 | + |
| 137 | +### Option 2: Python Local Server |
| 138 | + |
| 139 | +From the repository root, run: |
| 140 | + |
| 141 | +```bash |
| 142 | +python -m http.server 5500 |
| 143 | +``` |
| 144 | + |
| 145 | +Then open: |
| 146 | + |
| 147 | +```text |
| 148 | +http://127.0.0.1:5500/ |
| 149 | +``` |
| 150 | + |
| 151 | +If the website is located inside the `docs/` folder, open: |
| 152 | + |
| 153 | +```text |
| 154 | +http://127.0.0.1:5500/docs/ |
| 155 | +``` |
| 156 | + |
| 157 | +### Option 3: Node.js Local Server |
| 158 | + |
| 159 | +If Node.js is installed, run: |
| 160 | + |
| 161 | +```bash |
| 162 | +npx http-server -p 5500 |
| 163 | +``` |
| 164 | + |
| 165 | +Then open the corresponding local URL in your browser. |
| 166 | + |
| 167 | +## π Data Preprocessing |
| 168 | + |
| 169 | +The repository includes preprocessing and exploratory analysis scripts used to transform raw datasets into website-ready files. |
| 170 | + |
| 171 | +* `EDA.R` contains exploratory data analysis work. |
| 172 | +* `preprocess.py` contains preprocessing logic for generating structured data files. |
| 173 | +* Processed outputs are stored in the `data/` folder and loaded directly by the website. |
| 174 | + |
| 175 | +If the data is updated, the processed files in the `data/` folder should be regenerated or replaced while preserving the filenames expected by the website. |
| 176 | + |
| 177 | +## π Milestones |
| 178 | + |
| 179 | +### Milestone 1: Proposal |
| 180 | + |
| 181 | +π **[View Milestone 1](./Milestone1.md)** |
| 182 | + |
| 183 | +### Milestone 2: Prototype |
| 184 | + |
| 185 | +π **[View Milestone 2](./Milestone2.md)** |
| 186 | + |
| 187 | +### Milestone 3: Final Project |
| 188 | + |
| 189 | +* π **Website:** [Go to website](INSERT_WEBSITE_LINK_HERE) |
| 190 | +* π **Process Book:** [Read the process book](INSERT_PROCESS_BOOK_LINK_HERE) |
| 191 | +* π₯ **Screencast:** [Watch the screencast](INSERT_SCREENCAST_LINK_HERE) |
| 192 | + |
| 193 | +## π€ Authors |
| 194 | + |
| 195 | +* **Chaewon Yoon** |
| 196 | +* **Daniele** |
| 197 | +* **Ali** |
| 198 | + |
| 199 | +## π Notes |
| 200 | + |
| 201 | +Before running or deploying the project, make sure that: |
| 202 | + |
| 203 | +1. the `data/` folder is included in the repository; |
| 204 | +2. all required `.json` and `.geojson` files are available; |
| 205 | +3. the website is served through a local or hosted web server; |
| 206 | +4. relative paths between the website files and the `data/` folder are consistent; |
| 207 | +5. placeholder links in this README are replaced with the final website, process book, and screencast links. |
0 commit comments