adarsh-singh01 / PrithWe

PrithWe is a platform dedicated to helping individuals and businesses calculate and reduce their carbon footprint. We provide tools and resources to promote sustainability and environmental consciousness in everyday practices.
https://prithwe.onrender.com/
Other
24 stars 31 forks source link

PrithWe

PrithWe is a full-stack web application built on the PERN stack (PostgreSQL, Express, React, Node.js) designed to help households and businesses calculate their carbon footprints. This project was developed as a college project to promote environmental awareness and action.

Table of Contents

Introduction

PrithWe allows users to calculate their carbon footprint based on various parameters. It provides detailed insights and suggestions on how to reduce their carbon emissions. The name "PrithWe" is derived from "Prithvi" (Earth) and "We," emphasizing collective action and collaboration.

Visit the live application here.

Features

Technologies Used

Installation

Follow these steps to set up the project locally:

  1. Clone the repository:

    git clone https://github.com/yourusername/prithwe.git
  2. Navigate to the project directory:

    cd prithwe
  3. Install backend dependencies:

    npm install
  4. Install frontend dependencies:

    cd ./client
    npm install
  5. Set up environment variables:

    Create a .env file in the server directory and add your database details:

    PG_USER=your_user_name
    PG_HOST=your_host_name
    PG_DATABASE=your_database_name
    PG_PASSWORD=your_password
    PG_PORT=5432
    SESSION_SECRET=your_secret
    MAIL=your_mail
    APP_PASSWORD=your_app_password
    ADMIN_MAIL=admin_mail
    ADMIN_PASS=admin_password
    GEMINI_API_KEY=your_api_key
  6. Setting up App Password

    PrithWe uses otp for verification using gmail while registering and also for resetting password. And the otp is send to the gmail. And google does not allow to send otp directly from a website due to security reasons. For this purpose we use app password.

    Go to Manage your account. And search App. As shown below. And select App Passwords.

    AppPassword

    Then create an App password by giving it any name(Ex: Otp) and copy the app password as it will be only shown once.

    AppPassword

    Then go to .env file and paste it as a String under APP_PASSWORD and remove all the space in between.

  7. Building the Database Schemas

    After Successfully installing PostgreSql(PgAdmin 4) create a database with any name (Ex: PrithWe) as shown below. DataBase

    Then inside the created database go to Schemas and right click on it and select Query tools as shown below. DataBase

    After that paste the below code and run it.

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    type VARCHAR(50) NOT NULL,
    otp VARCHAR(20) DEFAULT '000000',
    otp_timestamp BIGINT,
    isVerified BOOLEAN DEFAULT false
);

CREATE TABLE contact (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255),
    message TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE household_common (
    id SERIAL PRIMARY KEY,
    user_id UUID REFERENCES users(id),
    electricity_usage DECIMAL,
    water_usage DECIMAL,
    waste_generation DECIMAL,
    gas_cylinder DECIMAL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE business_common (
    id SERIAL PRIMARY KEY,
    user_id UUID REFERENCES users(id),
    electricity_usage DECIMAL,
    water_usage DECIMAL,
    paper_consumption DECIMAL,
    waste_generation DECIMAL,
    fuel_consumption DECIMAL,
    business_travel DECIMAL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE family_members (
    id SERIAL PRIMARY KEY,
    household_common_id INT REFERENCES household_common(id),
    name VARCHAR(255),
    private_vehicle DECIMAL,
    public_vehicle DECIMAL,
    air_travel DECIMAL,
    veg_meals DECIMAL,
    non_veg_meals DECIMAL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE recommendations (
    id SERIAL PRIMARY KEY,
    user_id UUID,
    household_common_id INT,
    business_common_id INT,
    recommendation TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (household_common_id) REFERENCES household_common(id),
    FOREIGN KEY (business_common_id) REFERENCES business_common(id)
);

You will see tables for the database are created automatically.

  1. Start the backend server:

    cd ./server
    node index.js
  2. Start the frontend development server:

    cd ./client
    npm run dev
  3. Open your browser and navigate to http://localhost:5173.

Usage

  1. Register a new account or log in with an existing account.
  2. Choose whether you want to calculate the carbon footprint for a household or a business.
  3. Fill in the required information in the form.
  4. View the calculated carbon footprint and suggestions for reducing emissions.

Motivation

It was a college project and the motivation behind PrithWe is to provide a tool that helps individuals and businesses become more aware of their environmental impact. By understanding their carbon footprint, users can take actionable steps towards reducing their emissions and contributing to a healthier planet.

License

This project is licensed under the MIT License. See the LICENSE file for more details.