Skip to content

Commit 8988ea7

Browse files
committed
feat(m3): production-grade milestone 3 deliverables
- Process book: fix Vercel/GitHub Pages refs, remove Lenis (was causing lag), add M2 sketch image links, consolidate to 8 pages, regenerate PDF - README: update for M3 submission, correct tech stack, add data source links, Vercel hosting, screencast placeholder - Data: remove 50MB+ raw CSVs and ZIPs from git tracking, add gitignore entries, keep only processed JSON in docs/data/
1 parent 8ad8634 commit 8988ea7

11 files changed

Lines changed: 83 additions & 96387 deletions

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,10 @@ CLAUDE.md
44
LONG_RUN_*.md
55
NIGHT_SHIFT_*.md
66
node_modules/
7+
.DS_Store
8+
9+
# Raw datasets (too large for GitHub — download from Kaggle)
10+
data/fragrantica/*.csv
11+
data/perfume-ecommerce/*.csv
12+
data/*.zip
13+
data/json/perfumes.json

README.md

Lines changed: 33 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# The Anatomy of Scent
22

3-
An interactive data visualization exploring what makes a perfume attractive, how composition influences popularity, and what trends define modern perfumery.
3+
An interactive scrollytelling data visualization exploring what makes a perfume attractive, how composition influences popularity, and what trends define modern perfumery.
44

55
**Live site**: [com-480-dataviz.vercel.app](https://com-480-dataviz.vercel.app)
66

@@ -17,42 +17,36 @@ This project analyzes 24,063 perfumes from the Fragrantica dataset and 2,000+ eB
1717

1818
## Visualizations
1919

20-
| Visualization | Type | Data Source |
21-
| --- | --- | --- |
22-
| Note Frequency | Force-directed beeswarm | notes_stats.json |
23-
| Gender Comparison | Dual radar charts | notes_stats.json |
24-
| Rating vs Popularity | Scatter/bubble chart | notes_stats.json |
25-
| Temporal Trends | Stacked area chart | temporal_trends.json |
26-
| Price Analysis | Strip/beeswarm plot | price_data.json |
27-
| Note Connections | Chord diagram | chord_data.json |
28-
| Note Flow | Sankey diagram | sankey_data.json |
29-
| Accord Heatmap | Interactive heatmap | accords_data.json |
20+
| # | Visualization | Type | Data Source |
21+
| --- | --- | --- | --- |
22+
| 1 | The Building Blocks | Force-directed beeswarm | notes_stats.json |
23+
| 2 | His & Hers | Dual radar charts | notes_stats.json |
24+
| 3 | The Ratings Game | Scatter/bubble chart | notes_stats.json |
25+
| 4 | Fifty Years of Fragrance | Stacked area chart | temporal_trends.json |
26+
| 5 | The Price of Scent | Beeswarm strip plot | price_data.json |
27+
| 6a | Note Connections | Chord diagram | chord_data.json |
28+
| 6b | Flow of Fragrance | Sankey diagram | sankey_data.json |
29+
| 7 | The Full Picture | Interactive heatmap | accords_data.json |
3030

3131
## Technical Setup
3232

3333
### Prerequisites
3434

3535
- A modern web browser (Chrome, Firefox, Safari, Edge)
36-
- Python 3.8+ (only for data preprocessing)
37-
- A local HTTP server (Python built-in or similar)
36+
- Python 3.8+ (only needed if regenerating data from raw CSVs)
3837

3938
### Running locally
4039

4140
```bash
42-
# Clone the repository
4341
git clone https://github.com/com-480-data-visualization/MSV.git
44-
cd MSV
45-
46-
# Start a local server in the website directory
47-
cd docs
42+
cd MSV/docs
4843
python3 -m http.server 8000
49-
50-
# Open http://localhost:8000 in your browser
44+
# Open http://localhost:8000
5145
```
5246

5347
### Data preprocessing (optional)
5448

55-
The processed JSON files are already included in `docs/data/`. To regenerate from raw CSVs:
49+
The processed JSON files are already included in `docs/data/`. To regenerate from raw CSVs, download the datasets from Kaggle (links below) and place them in `data/`, then:
5650

5751
```bash
5852
cd src
@@ -63,31 +57,30 @@ python3 compute_advanced_data.py
6357
## Project Structure
6458

6559
```
66-
docs/ # Deployable website
67-
index.html # Main page with scrollytelling structure
68-
css/style.css # Dark luxury theme styles
60+
docs/ # Deployable website (served by Vercel)
61+
index.html # Scrollytelling main page
62+
css/style.css # Dark luxury theme (Cormorant Garamond + DM Sans)
6963
js/main.js # Scrollama setup, navigation, shared utilities
70-
js/visualizations/ # One file per D3.js visualization
71-
data/ # Processed JSON files for D3.js
72-
data/ # Raw datasets
73-
fragrantica/ # Fragrantica perfume dataset (24K entries)
74-
perfume-ecommerce/ # eBay pricing dataset
75-
json/ # Processed JSON (canonical copies)
76-
milestones/ # Course milestone documents
64+
js/visualizations/ # One module per D3.js visualization (8 files)
65+
data/ # Pre-processed JSON files for D3.js
66+
data/ # Raw datasets (not tracked — download from Kaggle)
67+
milestones/ # Milestone reports + process book
7768
src/ # Python preprocessing scripts
7869
```
7970

8071
## Tech Stack
8172

82-
- **D3.js v7** for all visualizations
83-
- **Scrollama** for scroll-driven interactions (IntersectionObserver)
84-
- **Lenis** for smooth momentum scrolling
85-
- **Vanilla HTML/CSS/JS** (no build tools, no framework)
86-
- **Python + pandas** for data preprocessing
87-
- **GitHub Pages** for hosting
73+
- **D3.js v7** all 8 interactive visualizations
74+
- **Scrollama** scroll-driven narrative transitions (IntersectionObserver)
75+
- **d3-sankey** — Sankey diagram layout
76+
- **Vanilla HTML/CSS/JS** no framework, no build step
77+
- **Python + pandas** data preprocessing pipeline
78+
- **Vercel** — static deployment from `/docs`
8879

8980
## Data Sources
9081

82+
Raw datasets are not included in the repository (too large). Download from Kaggle:
83+
9184
- [Fragrantica Fragrance Dataset](https://www.kaggle.com/datasets/olgagmiufana1/fragrantica-com-fragrance-dataset) (~24K perfumes with notes, ratings, accords, gender, year)
9285
- [Perfume E-Commerce Dataset 2024](https://www.kaggle.com/datasets/kanchana1990/perfume-e-commerce-dataset-2024) (~2K eBay listings with pricing)
9386

@@ -103,11 +96,12 @@ See [milestones/Milestone1.md](milestones/Milestone1.md) for the full report inc
10396

10497
See [milestones/Milestone2.md](milestones/Milestone2.md) for the project goal, visualization sketches, tools, and MVP breakdown.
10598

106-
## Milestone 3 (30th May, 5pm)
99+
## Milestone 3 (29th May, 5pm)
107100

108101
**80% of the final grade**
109102

110-
Process book: [milestones/ProcessBook.pdf](milestones/ProcessBook.pdf)
103+
- **Process book**: [milestones/ProcessBook.pdf](milestones/ProcessBook.pdf)
104+
- **Screencast**: *TODO — add link*
111105

112106
## Late policy
113107

-6.66 MB
Binary file not shown.
-106 KB
Binary file not shown.

0 commit comments

Comments
 (0)