Green Footprint is a web application that helps you calculate your personal carbon footprint based on your daily habits, and provides personalized recommendations to live more sustainably and reduce your environmental impact.
- ✅ Calculate your carbon footprint based on:
- Transportation (motorbike, car, public transport, etc.)
- Energy consumption (electricity, gas, etc.)
- Diet (meat, vegetarian, frequency, etc.)
- Shopping & lifestyle choices
- 📊 Visualize results using interactive charts (bar, pie, etc.)
- 🎯 Get actionable tips to reduce your CO₂ emissions
- 🧠 Learn about sustainable living through bite-sized knowledge
- 🔒 (Optional) Sign in to save and track your progress over time
# Clone the project
git clone https://github.com/JunCodera1/green-footprint.git
cd green-footprint
# Install dependencies
npm install
npm install react-router-dom
npm install react-simple-maps --legacy-peer-deps
# Run development server
npm run dev
# App will be running at:
http://localhost:5173
A modern web application for tracking and reducing your carbon footprint with advanced animations and interactions.
- Parallax Scrolling: Smooth parallax effects on landing page and key sections
- 3D Elements: Interactive 3D Earth and eco-friendly models using Three.js
- Micro-animations: Subtle animations on buttons, cards, and interactive elements
- Page Transitions: Smooth transitions between pages with loading animations
- Multiple color themes:
- Green (Default)
- Blue
- Purple
- Eco
- Automatic theme switching based on:
- Time of day (Light/Dark)
- System preferences
- User preferences
- Theme customization per user
- Interactive mobile app mockup
- Animated screen transitions
- App store download links
-
Clone the repository
-
Run the setup script:
chmod +x setup.sh ./setup.sh
-
Download required assets and place them in their directories:
- 3D Models (
public/models/) - Textures (
public/textures/) - App Screenshots (
public/images/app/)
- 3D Models (
-
Start the development server:
npm run dev
import ParallaxSection from "./components/ParallaxSection";
<ParallaxSection bgImage="/path/to/image.jpg" speed={0.5}>
<h1>Your Content</h1>
</ParallaxSection>;import Earth3D from "./components/Earth3D";
<Earth3D size={400} autoRotate={true} />;import AnimatedCard from "./components/AnimatedCard";
<AnimatedCard
title="Card Title"
description="Card description"
image="/path/to/image.jpg"
badge="New"
/>;import { useTheme } from "./hooks/useTheme";
const { mode, color, setMode, setColor } = useTheme();
// Change theme
setColor("blue");
setMode("dark");import PageTransition from "./components/PageTransition";
<PageTransition>
<YourPageContent />
</PageTransition>;Edit src/styles/themes.css to modify theme colors:
[data-theme-color="custom"] {
--primary-50: #...;
--primary-100: #...;
/* etc */
}Modify animation parameters in components:
ParallaxSection.tsxfor parallax effectsEarth3D.tsxfor 3D animationsAnimatedCard.tsxfor card interactionsPageTransition.tsxfor page transitions
- 3D models are loaded lazily
- Page transitions use React Suspense
- Images are optimized for web
- Animations are hardware-accelerated
- Theme changes are persisted in localStorage
- Modern browsers (Chrome, Firefox, Safari, Edge)
- Fallbacks for older browsers:
- Reduced animations
- Simplified 3D effects
- Basic theme support
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT License - See LICENSE file for details