Medalytics brings Olympic stories to life through powerful data visualizations that showcase the heroes and history-makers of the Games. Witness the evolution of athletic excellence across generations through interactive charts and immersive visual experiences.
- 🗺️ Interactive World Map: Explore Olympic medal distributions across countries with D3.js-powered visualizations
- 📊 Dynamic Charts: Multiple chart types including:
- Gender evolution in Olympics over time
- Medal race animations showing historical progressions
- Olympic sports participation treemaps
- Podium visualizations with top athletes
- 🎨 Modern UI/UX:
- Smooth scroll-snap navigation
- Dark/light theme toggle
- Responsive design for all devices
- Animated backgrounds and transitions
- 📱 Progressive Web App: Optimized for both desktop and mobile experiences
- ⚡ Performance Optimized: Fast loading with efficient data processing
Visit the live application: Medalytics
- React 18.3.1 - Modern UI library with hooks
- D3.js 7.9.0 - Powerful data visualization library
- Recharts 2.5.0 - React charting library
- CSS3 - Custom styling with CSS variables for theming
- Papa Parse 5.5.2 - CSV data parsing
- TopoJSON Client 3.1.0 - Geographic data handling
- Create React App - Project bootstrapping and build tools
- Netlify - Hosting and continuous deployment
- ESLint - Code linting and quality assurance
The application uses several CSV datasets containing:
- Olympic athlete biographical information
- Medal records and country rankings
- Sport participation statistics
- Gender distribution over time
- Country-specific Olympic data
- Node.js (v14 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/your-username/medalytics4.git cd medalytics4 -
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to http://localhost:3000 to view the app.
npm run buildThis builds the app for production to the build folder, optimizing the build for the best performance.
medalytics4/
├── public/ # Static assets and data files
│ ├── *.csv # Olympic datasets
│ ├── *.svg # Icon assets
│ └── index.html # HTML template
├── src/
│ ├── components/ # React components
│ │ ├── D3WorldMap.jsx
│ │ ├── GenderEvolutionChart.jsx
│ │ ├── MedalRaceChart.jsx
│ │ ├── OlympicPodium.jsx
│ │ ├── OlympicSportsTreemap.jsx
│ │ └── ...
│ ├── utils/ # Utility functions
│ ├── App.js # Main app component
│ ├── styles.css # Global styles
│ └── index.js # Entry point
├── netlify.toml # Netlify deployment config
└── package.json # Dependencies and scripts
D3WorldMap- Interactive world map showing medal distributionsMedalRaceChart- Animated race chart of country medal counts over timeOlympicPodium- Top athletes visualization with medal countsGenderEvolutionChart- Gender participation trends over Olympic historyOlympicSportsTreemap- Sport participation represented as interactive treemap
LogoIntro- Animated introduction with Olympic brandingExplanationPage- Project description with interactive elementsThemeToggle- Dark/light mode switcherPageIndicator- Navigation dots for scroll sectionsAnimatedBackground- Dynamic background effects
No additional environment variables required for basic setup.
The app is configured for Netlify deployment with the following build command:
npm install papaparse d3 topojson-client --save && CI=false npm run build
🏅 Celebrating Olympic Excellence Through Data 🏅