stdlib-js / google-summer-of-code

Google Summer of Code resources.
https://github.com/stdlib-js/stdlib
26 stars 7 forks source link

[RFC]: build a developer dashboard for tracking repository build status #83

Closed Ayansaxena24 closed 5 months ago

Ayansaxena24 commented 6 months ago

Full name

Ayan Saxena

University status

Yes

University name

Institute of Engineering and Technology, Devi Ahilya Vishwavidyalaya, Indore

University program

B.E. in Information Technology

Expected graduation

May 2024

Short biography

I am Ayan, a Full Stack Developer from Institute of Engineering and Technology, DAVV, Indore. I am a final year student doing my bachelors in Information Technology domain. I am proficient in ReactJS, Redux, Context, TailwindCSS, Javascript, Typescript, NodeJs, ExpressJs, MongoDB, and SQL. I like to constantly improve and connect with people, and thus keep participating in a lot of hackathons and have also participated in a few open source challenges.

My recent achievement leading my team to the finals of Smart India Hackathon 2023, where we reached the finals after beating 250+ teams in our problem statement domain. I am primarily interested in Frontend Development, and have completed two internships which were focused on ReactJs and TailwindCSS. I also possess some experience in Open Source contributions since I have been participating in Open Source challenges since a while.

Timezone

India Standard Time (+5:30 GMT)

Contact details

email : ayan.saxena24@gmail.com

Platform

Windows

Editor

The platform which I prefer to use is VSCode. The primary reason for the same is its user friendliness along with support of wich ecosystems of extensions. It also allows built in GIT Integration. Also, visual appearance of the editor appreciable. I have been using VSCode since I was a fresher in my college, and thus I am familiar with it very well.

Programming experience

I have been programming since the first year of college, so it has been four years since I have entered the field of programming. Since I am a frontend developer primarily, there are multiple projects that I have created. Most of my projects are built on MERN Stack along with Redux for global state management, and tailwind CSS for styling.

I have also participated in a number of hackathons, including Smart India Hackathon 2023, where I led a team of 6 and we reached the finals after beating around 250+ teams. We built our own custom algorithm to efficiently schedule court cases on the basis of a few parameters, and the algorithm was backed by Artificial Intelligence. This project alone took 3 months of deep research and coding to reach its development stage. Video Link --> https://youtu.be/9IQJfE-mXGA?si=5i7RZD1EQHoY-cZE Idea Submission PPT --> https://docs.google.com/presentation/d/1UQ2hJhFxzxXVx2XSRHDDEjW5dlar1dI6nqFcd7uxu18/edit?usp=sharing The Detailed Idea PPT for the same is --> https://docs.google.com/presentation/d/1jKgEwabF9AL7Fv7SihiGsEazS3YFFtGN59KtUBtND_8/edit?usp=sharing Github Repository --> https://github.com/Ayansaxena24/Nyaya-Sanchalak

Another Full Stack MERN Based project that I worked on in a recent hackathon named HACKHIVE was a web application based on Promoting mental health and improving mental well being of individuals. Video Link --> https://www.youtube.com/watch?v=udlNKKRr1uo

JavaScript experience

Experience with JavaScript: I have been working with JavaScript since my freshman year in college, and have since gained significant experience with the language. From basic scripts to complex web applications, I tackled a variety of projects, honing my skills and enhancing my understanding of the power of JavaScript.

Learning React, Express, and Node.js: In addition to basic JavaScript, I learnt popular frameworks and libraries like React, Express, and Node.js. I have made a number of projects during the learning phase, and after I was confident in these frameworks I have made projects on MERN Stack. Learning these technologies allowed me to create sophisticated and effective web applications, expanding my skills beyond just the basics of language. I am also proficient in Redux, thus handling the concept of Global State Management very well, along with playing with REST APIs.

Projects in Core JavaScript: While frameworks and libraries are powerful tools, I also worked on projects using core JavaScript only. One notable project I’ve created is an extension that keeps track of the currently open URLs, and allows users to write notes too on the same. This project not only demonstrates my proficiency in JavaScript but also my ability to use the language to innovate and solve real world problems.

Favorite Feature: Flexibility: One of my favorite aspects of JavaScript is its incredible flexibility. Whether it’s front-end development with React, building APIs with Express, or server-side scripting with Node.js, JavaScript can do everything. This flexibility not only simplifies development but also allows for seamless integration across different parts of the tech stack, thus being a single language on the top of which a complete application can be built.

Least favorite feature: Type coercion and loose typing: Despite its many strengths, JavaScript type constraints and loose typing can sometimes be a double-edged sword even though they allow for shorter coding, faster development and can lead to unexpected behavior and complex debugging errors if not handled

In summary, my journey with JavaScript has been one of constant learning and evolution, from my early days in college to my recent efforts in building complex applications. I appreciate Javascript with its flexibility and versatility. Overall, JavaScript is an extremely important part of my tech stack, allowing me to bring my ideas to life on the web.

Node.js experience

My experience with Node.JS spans many projects. I've used Node.Js to build a variety of Full Stack applications, from simple APIs to complicated servers. One of the major areas where I even have implemented Node.Js is in constructing scalable and efficient server-aspect programs. In the Final Project of the Smart India Hackathon 2023, we made out complete Algorithm in NodeJs to efficiently schedule the Court Cases. We used a tool named as node scheduler for the same, but the core coding of the algorithm was done NodeJS only.

I've constructed excessive-performance applications which could handle huge numbers of concurrent connections without sacrificing responsiveness. I've also used Node.Js in conjunction with frameworks like Express.Js to streamline the improvement of RESTful APIs and web services. The pace and efficiency of Node.Js blended with its light-weight and minimal framework has allowed me to implement strong backend answers for numerous initiatives. Additionally, I explored the good sized surroundings of npm (Node Package Manager) to seamlessly combine third-celebration libraries and modules into my applications, similarly improving their functionality and decreasing development time. Overall, my experience with Node.Js has been instrumental in my adventure as a developer, permitting me to construct rapid, scalable, and function-rich applications across a huge range of domains.

C/Fortran experience

⁤While I have no direct experience with Fortran, I do have solid experience with C and have worked extensively in learning and working in C projects and projects. ⁤⁤During my studies, I dealt with tasks and projects related to implementing algorithms and data structures C. This experience gave me a deeper understanding of language syntax, semantics, and best practices related to the C programming Language.

Interest in stdlib

I'm in particular fascinated with the aid of stdlib because of its significant series of general libraries and modules for diverse programming languages. The concept of getting a centralized repository of tremendous, reusable code that covers a huge variety of functionalities is highly attractive to me as a developer.

One of my favourite capabilities of stdlib is its complete documentation and examples. The documentation makes it clean for developers to brief recognize how to use every module and its associated abilties. Additionally, the presence of clear and concise examples facilitates illustrate the intended usage of each function, making it much less complex for developers to comprise stdlib into their tasks.

Another appreciable feature of the Stdlib library is that Stdlib's math capabilities cover a wide range of topics, including basic arithmetic functions, trigonometry, statistics, and more. These skills are commonly used to produce exact results within and across various systems, making them reliable instruments for solution processing, data evaluation, and simulation requirements fulfillment. One of the reasons why stdlib's graphical interfaces stand out is their ease of access and use. The tools are well-documented, with straightforward uses and explanations, thus making it simple for developers to integrate them into their programs. Stdlib's focus to integration enables smooth integration of computing capabilities into numerous programming languages and environments.

Since I have also contributed in Open Source Programs earlier, I have a decent experience of the requirements of such Open Source Programs. I am also a fast learner, thus new challenges won't be much of a hinderance for me while working on the project allocated to me. Additionally, the Tech Stack required for this task exactly aligns with the skillset that I possess. Thus, it would be a great opportunity to contribute to STDLIB as a contributor.

Version control

Yes

Contributions to stdlib

This PR solves the issue --> Insufficient TypeScript declaration tests for @stdlib/utils/circular-buffer #474 PR Link --> https://github.com/stdlib-js/stdlib/pull/2105

PR Title: Extended TypeScript Declaration Testing for @stdlib/utils/circular-buffer.
Objective --> The objective of this pull request is to widen the test coverage of the @stdlib/utils/circular-buffer package with TypeScript declaration testing. The tests replicate a wide variety of conditions, including starting with zero or negative potential, pushing items, pushing beyond capacity, popping out of an empty buffer, and emptying the buffer. Each test case has type assertion comments (// $ExpectType, // $ExpectError) that demonstrate the expected types and error circumstances. These tests ensure that TypeScript definitions appropriately reflect the behavior of the CircularBuffer class and identify issues during compilation.

Goals

The number one goal of this project is to develop a developer dashboard for tracking environment build failures within the stdlib project. This dashboard will offer stdlib builders with real-time visibility into standalone repository build statuses, enabling brief detection and backbone of build failures to maintain ecosystem integrity.

Project Abstract: The stdlib venture contains over 3500 repositories, orchestrated through a centralized repository. While the orchestration largely works in the desired manner, occasional build disasters arise. Detecting and resolving these failures promptly is essential to save downstream breakages and to ensure the integrity of the ecosystem. The proposed developer dashboard aims to cope with this want by presenting a centralized platform for monitoring build statuses across all repositories.

Detailed Description: The mission will encompass two major additives: a Node.Js backend for querying a PostgreSQL database that collects build results in real-time, and a frontend dashboard for visualizing and analyzing this records. The backend will facilitate efficient retrieval of construct reputation records, even as the frontend will offer an intuitive interface for builders to view and have interaction with the statistics. The frontend will be constructed using ReactJS and Tailwind CSS for styling. Upon discussion with the assigned mentor, the UI aspects of the dashboard can further be modified as per the requirements.

The dashboard will incorporate features such as filtering primarily based on the build status, short navigation to repository resources, and extension to encompass historical overviews. The choice of frontend technologies is open, bearing in mind experimentation with contemporary tools such as Tailwind to ensure a smooth and engaging User Experience.

Expected Outcomes: Upon final touch, stdlib builders will have access to a web application in which they can view the the build status for all repositories right away in a single click. This centralized dashboard will streamline the tracking and control of construct build failures, enhancing the general performance and reliability of the stdlib environment.

By attaining those goals, the project will contribute to improving the development practices as well as environment within the stdlib project, fostering collaboration and productiveness amongst contributors.

Selling DashboardGSOC

Why this project?

One of the primary reasons I chose this project over the other accessible projects in GSOC 2024 was my familiarity with the sort of project. I've previously created similar dashboards, therefore dealing with this problem statement will not be an unexpected chore for me. Secondly, after going through the repository, I also became familiar with the organization's code base as I have invested a lot of time in understanding the code base and code practices of the organization.

Most importantly, I am most excited about this project's tech stack. I have extensive experience with ReactJS, ExpressJS, MongoDB, NodeJS, Redux, PostgreSQL, and TailwindCSS. The technical requirements of the project revolve around the same tech stack that I am familiar with and have used for a number of personal projects. I've previously interned as a frontend developer for two different firms, so the UI and UX aspects of the project attracted my interest.

I also have some experience with open source development, having contributed to a few projects in the past. I also have experience with version control tools like GIT, thus this is one of the projects in which I am extremely confident.

Qualifications

I am well-equipped to execute on this proposal based on my extensive experience with the project's tech stack. My experience in front-end and back-end development is significant, and I am proficient in ReactJs, ExpressJs, MongoDB, NodeJs, Redux, PostgreSQL, and Tailwind CSS. I have used these technologies in the development of multiple personal projects, establishing familiarity and proficiency with their use. They also closely match the technical requirements of this project.

I have hands-on expertise with UI and UX design from my prior frontend development internships, which makes me qualified to easily handle the frontend phase of the project. Considering the backend environment using NodeJs and PostgreSQL, I am having decent experience in using these. I have made various full stack projects using the exact tech stack in hackathons, and I'm excited to put my passion for designing clear, user-friendly interfaces to use by developing a dashboard that satisfies the requirements of stdlib developers.

Prior art

Yes, a similar project has been implemented before too. It is a great reference to visualize as well as logical requirements of this task. The website where a similar dashboard is already available is --> https://npm.github.io/statusboard/ There is a complete repository which has the code for the same and the readme file of the project on the repository depicts the technical information related to the project. REPO LINK --> https://github.com/npm/statusboard

Commitment

I am completely committed to the GSOC 2024 program. As of now I haven't planned of taking any vacation during the GSOC duration and will be available for the whole duration till project submission. After the GSOC program, I can still contribute to the organization if I find any issue or if there are any tasks that align with my tech stack.

Schedule

Assuming a 12 week schedule,

Notes:

Related issues

Yes. The complete task is present in the form of an issue on the official stdlib repository. ISSUE TITLE --> [Idea]: developer dashboard for tracking ecosystem build failures #4 ISSUE LINK --> https://github.com/stdlib-js/google-summer-of-code/issues/4

Checklist