Green-Software-Foundation / hack

Carbon Hack 24 - The annual hackathon from the Green Software Foundation
https://grnsft.org/hack/github
14 stars 1 forks source link

Add Support for taking input from storage provider + Create Nextjs playground for if command + Implement --stdout flag in the framework #139

Open abhinavbansal19961996 opened 1 month ago

abhinavbansal19961996 commented 1 month ago

Prize category

Best Contribution to the Framework

Summary

Revolutionizing the IF experience, our solutions address key issues and unlock new frontiers:

  1. Control & Convenience: Introducing the --stdout flag, users wield newfound control over output visibility, empowering seamless CLI interactions.

  2. Inclusive Exploration: The IF Playground welcomes all, offering an intuitive interface for effortless experimentation, devoid of developer-exclusive barriers.

  3. Boundaryless Input Access: With the --manifest flag, IF transcends local limitations, fetching input from URLs with unmatched flexibility.

Innovative enhancements transform IF from a mere tool to a boundless journey of exploration, inviting users to reimagine possibilities and chart new horizons.

Problems Unveiled, Solutions Unleashed!

🛠️ Tackling Technical Turmoil

  1. Empowering Control with --stdout Flag: Say goodbye to relentless output flooding your CLI! Introducing the mighty --stdout flag in our IF command. With a swift flick of this digital switch, you command whether the output dances across your console or remains discreetly tucked away. It's your call, your control!

  2. Democratizing Access to IF: IF is not just a playground for developers anymore—it's a welcoming haven for all curious minds! Enter the IF Playground, where navigating the intricacies of our tool is as intuitive as a stroll in the digital park. No npm gymnastics required—simply choose your input, click 'run', and behold the magic unfold, accompanied by mesmerizing graphs illuminating your journey.

  3. Liberating Input from Local Shackles: No more confinement to the dusty corners of your local system! With the revolutionary --manifest flag, IF transcends boundaries, effortlessly fetching input from the far reaches of cyberspace. Whether it resides on your hard drive or dances in the cloud, IF adapts, fetching input from URLs with the finesse of a seasoned explorer. No more file fetters—only boundless possibilities!

🚀 Elevating the IF Experience

Revolutionizing the IF experience isn't just about solving problems—it's about crafting an immersive journey that leaves users spellbound at every turn. With our enhancements, IF isn't just a tool—it's an adventure waiting to unfold, beckoning all who dare to dream and explore.

So come, join us on this odyssey of innovation, where every line of code is a brushstroke painting a masterpiece of possibilities. The horizon beckons—let's journey beyond limits and reimagine the future, one IF at a time.

Judging criteria

Empowering Control with --stdout Flag

Overall Impact: 🌱 Introducing the --stdout flag empowers users to control output visibility, enhancing user experience and promoting resource optimization, aligning with broader sustainability goals.

Innovation and Creativity: 🎨 Our solution offers a novel approach to managing output visibility, enabling users to toggle output on and off with a simple command, fostering efficiency and productivity.

Alignment: 🎯 Aligned with transparency and efficiency principles, our solution prioritizes user control and accessibility.

User Experience: 🚀 Enhancing user experience, the --stdout flag provides seamless control and clear documentation.


Democratizing Access with IF Playground

Overall Impact: 🌱 The IF Playground fosters inclusivity and exploration, expanding the reach of sustainability initiatives and amplifying their impact on a global scale.

Innovation and Creativity: 🎨 The IF Playground pioneers user-centric design, reimagining the CLI interface as an immersive platform for exploration and experimentation, fostering engagement and learning.

Alignment: 🎯 Embodying inclusivity and accessibility, the IF Playground breaks down barriers to entry, promoting openness and collaboration.

User Experience: 🚀 Revolutionizing user experience, the IF Playground offers intuitive navigation and engaging visualizations.


Transcending Boundaries with --manifest Flag

Overall Impact: 🌱 The --manifest flag bridges local and remote data sources, unlocking collaboration possibilities and fostering innovation in sustainability initiatives.

Innovation and Creativity: 🎨 Our solution bridges the gap between local and remote data sources, enabling seamless integration and collaboration.

Alignment: 🎯 Embracing flexibility and modularity, the --manifest flag enables seamless integration and collaboration.

User Experience: 🚀 Elevating user experience, the --manifest flag removes access barriers, ensuring a smooth experience for users.

Video

https://www.youtube.com/watch?v=zDvogJuXRmo

Artefacts

Github Repository (If): IF Github Repository

GitHub Repository (IF Playground): IF Playground GitHub Repository

Presentation: IF Playground Presentation

Usage

Empowering Control with --stdout Flag:

  1. Clone the specific branch from the GitHub repository to your local machine:
    git clone -b fetch-from-url-stdout https://github.com/abhinavbansal19961996/if.git
  2. Install dependencies:
    
    cd if && npm install && npm run test:integration  && npm install @grnsft/if-plugins
3. Run the command without --stdout flag and you will notice no output is printed on console:

npm run ie -- --manifest src/tests/integration/manifest/sci-e.yaml

4. Or, run the command with --stdout flag and and you will notice output is getting printed on console::

npm run ie -- --manifest src/tests/integration/manifest/sci-e.yaml --stdout


**Transcending Boundaries with --manifest Flag:**

1. Clone the specific branch from the GitHub repository to your local machine:

git clone -b fetch-from-url-stdout https://github.com/abhinavbansal19961996/if.git

2. Install dependencies:

cd if && npm install && npm run test:integration && npm install @grnsft/if-plugins

3. Run the command with a URL as manifest:

npm run ie -- --manifest https://raw.githubusercontent.com/abhinavbansal19961996/if-playground/main/abc.yaml --stdout


**Democratizing Access with IF Playground:**

1. Clone the IF Playground GitHub repository to your local machine:

git clone https://github.com/abhinavbansal19961996/if-playground

2. Install dependencies:

cd if-playground && npm install

3. Run the development server:

npm run dev


4. Open your browser and navigate to http://localhost:3000/
5. Select any input from the left panel to see backend API calls, corresponding output, and graphs displayed on the right.

### Process

1. **Empowering Control with --stdout Flag** and **Transcending Boundaries with --manifest Flag**: These initiatives necessitated alterations within the IF repository itself. We utilized Axios, a promise-based HTTP client for JavaScript, to retrieve input content from URLs.

2. **Democratizing Access with IF Playground**: For this endeavor, we employed the latest UI framework, Next.js, and developed the API within Next.js. Additionally, we utilized the Chart.js library to visualize graphs.

### Inspiration
The inspiration behind our solution lies in a commitment to democratizing access to sustainability and fostering innovation in software development.

1. **Empowering Control with --stdout Flag:** We aimed to provide users with greater control over their interactions with the IF tool by introducing the --stdout flag. This enhancement streamlines workflows, reduces clutter, and aligns with sustainability goals by promoting efficient resource utilization.

2. **Transcending Boundaries with --manifest Flag:** Enabling IF to fetch input from remote URLs via the --manifest flag breaks down barriers to collaboration. This enhancement promotes seamless integration with cloud-based platforms and APIs, fostering cross-disciplinary collaboration and data-driven sustainability initiatives.

4. **Democratizing Access with IF Playground:** Our goal with the IF Playground was to provide an inclusive and accessible platform for exploration. By reimagining the CLI interface, we empower users of all backgrounds to engage with sustainability initiatives, fostering a diverse community of advocates and innovators.
### Challenges

User Experience Design: Designing an intuitive and user-friendly interface for the IF Playground posed its own set of challenges. Balancing functionality with simplicity, and providing clear instructions for users of varying technical backgrounds, required iterative testing and refinement.

### Accomplishments
In the three projects outlined, I'm particularly proud of:

1. **Empowering Control with --stdout Flag:**
   - **Innovation:** Introducing the --stdout flag grants users precise control over output visibility, showcasing our innovative approach to addressing user needs.
   - **Efficiency:** This feature promotes efficiency and resource optimization by enabling users to toggle output on and off as needed, aligning with broader sustainability goals.
   - **Technical Implementation:** Overcoming technical challenges to implement this feature demonstrates our team's technical expertise and problem-solving capabilities.

2. **Democratizing Access with IF Playground:**
   - **User-Centric Design:** The IF Playground's intuitive interface makes sustainability initiatives accessible and engaging to users of all backgrounds, highlighting our commitment to user-centric design.
   - **Inclusivity:** By breaking down barriers to entry, we empower individuals to participate in sustainability efforts regardless of their technical expertise, fostering a diverse community of advocates and innovators.

4. **Transcending Boundaries with --manifest Flag:**
   - **Collaboration:** Enabling IF to fetch input from remote URLs via the --manifest flag facilitates collaboration and knowledge sharing across geographical boundaries, driving collective action towards sustainable solutions.
   - **Flexibility:** This feature enhances flexibility and scalability, enabling seamless integration of external data sources into workflows, unlocking new insights for sustainable action.
   - **Innovation:** Bridging the gap between local and remote data sources showcases our commitment to innovation and creativity in addressing complex sustainability challenges.
### Learnings
Through these projects, we learned:

1. **Innovative Problem-Solving:** We honed our ability to find creative solutions for implementing new features like --stdout and --manifest flags, pushing the boundaries of conventional problem-solving.

2. **User-Centric Design:** Developing the IF Playground emphasized the importance of prioritizing user experience, teaching us to empathize with users' needs and preferences to create more intuitive interfaces.

3. **Collaboration and Communication:** Close teamwork and effective communication were crucial in navigating technical challenges and ensuring alignment with project goals and stakeholder expectations.

5. **Flexibility and Adaptability:** We embraced iterative development processes, adapting our approach to evolving requirements and technical obstacles while remaining open to feedback and refining our solutions accordingly.

7. **Domain Knowledge:** Engaging with sustainability initiatives deepened our understanding of sustainability challenges and highlighted the potential for technology to drive positive change in this space.
### What's next?    
The solutions presented contribute to the long-term sustainability of the Impact Framework ecosystem by:

1. **Enhanced Functionality:** Introducing innovative features like the --stdout and --manifest flags expands the framework's capabilities, attracting more users and fostering its growth over time.

2. **Improved User Experience:** User-centric design principles, as seen in the IF Playground, enhance usability and encourage continued engagement, ensuring the ecosystem remains user-friendly and relevant.

3. **Increased Accessibility:** Democratizing access to sustainability initiatives through intuitive tools like the IF Playground ensures inclusivity, cultivating a diverse community of contributors and ensuring the ecosystem's resilience.

5. **Facilitated Collaboration:** Features such as the --manifest flag promote seamless collaboration and knowledge sharing, fostering a culture of collaboration and driving continuous innovation within the ecosystem.

These contributions collectively strengthen the ecosystem's value proposition, attract a wider user base, and foster a collaborative environment, ensuring its long-term sustainability and relevance in the sustainability movement.

### Have you got a project team yet?

Yes and we aren't recruiting

### Project team
**Team Name**
cleangreendevs
**Contributors**
@ravisreddy (Lead)
@abhinavbansal19961996

### Terms of Participation

- [X] I agree to the hackathon [Rules & Terms](https://github.com/Green-Software-Foundation/hack/wiki/Rules-and-Terms) and [Code of Conduct](https://github.com/Green-Software-Foundation/hack/wiki/Code-of-Conduct)
russelltrow commented 1 month ago

Hi @abhinavbansal19961996 thank you so much for raising your project, please don't forget to register your project: https://hack.greensoftware.foundation/register/

This provides you direct access to the Impact Framework team for your questions and also benefits from our community partners (Microsoft & Electricity Maps).

You must register your project before you can submit your solution for judging.

abhinavbansal19961996 commented 1 month ago

@russelltrow We have registered. @ravisreddy career4reddy@gmail.com is the email id with which registration took place. Can you pls check and mark this issue as registered?

russelltrow commented 1 month ago

Hi @abhinavbansal19961996, I've just located your registered, sent you the welcome email and updated the issue accordingly.

abhinavbansal19961996 commented 1 month ago

Thank you so much @russelltrow

abhinavbansal19961996 commented 1 month ago

Team Name: cleangreendevs

abhinavbansal19961996 commented 1 month ago

@russelltrow Project submitted through link. Team Name cleangreendevs Contributors @ravisreddy (Lead) @abhinavbansal19961996

Thank you so much for organising this. We enjoyed a lot.