Hacktoberfest 2023 Recap
Tags: hack23contributor, webdev, learning, hacktoberfest23
Published: 2023-10-27 22:10:18

A few days ago, I made my [Final Pull Request](https://dev.to/amnish04/no-backing-away-when-hacking-away-2h27) for this year's [Hacktoberfest](https://hacktoberfest.com/) event, and it seems to be a perfect timing for publishing a **recap** of the entire experience.

## Table of Contents
&nbsp;1. [Introduction](#introduction)
&nbsp;2. [The Contributions ⭐](#the-contributions)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.1. [Adding a CI pipeline to a project 🎷](#adding-a-ci-pipeline-to-a-project)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.2. [Adding custom validation to a form](#adding-custom-validation-to-a-form)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.3. [Adding skip questions feature to a quiz app](#adding-skip-questions-feature-to-a-quiz-app)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.4. [Fixing a UI bug in a ChatGpt clone](#fixing-a-ui-bug-in-a-chatgpt-clone)
&nbsp;3. [Learnings 📖](#learnings)

## Introduction

Before I dive into the details of my contributions, allow me to introduce myself as a developer and my overall standing as an open-source contributor. I am a 22 year old [Computer Programming and Analysis](https://www.senecacollege.ca/programs/fulltime/CPA.html) student at Seneca College learning about various programming languages, system methodologies, web development, and the design/maintenance of database systems.

To know more about me, feel free to visit my [Linkedin Profile](https://www.linkedin.com/in/amnish-singh-arora/) and my Github handle.

{% embed https://github.com/Amnish04 %}

I am fairly new to open source and **Hacktoberfest 2023** was effectively my first time diving into the vast open-source community and making meaningful contributions to existing projects.

## The Contributions ⭐

At the beginning of the event, I had doubts about whether I could get even one pull request merged. I had never looked for issues or repositories before on Github, let alone contribute. But fortunately, my professor who is teaching us about open-source has a super [elaborate playlist](https://www.youtube.com/watch?v=Izw_WtJb7Uo&list=PLJgO3yLojCBNam4mKA_UE_n5dthHJaSG0) on Youtube, guiding the viewers about various stages and aspects of open-source. The videos helped answer tonnes of questions I had in mind, and prepared me for my first ever contribution in the community.

There's a remarkable saying from [CSGO](https://en.wikipedia.org/wiki/Counter-Strike:_Global_Offensive) by **Antoine de Saint-Exupery**:

> Only the unknown frightens men. But once a man has faced the unknown, that terror becomes the known.

And just like that, once I got my first PR in,
**There was no turning back.**

I was able to get a total of 5 ([1 in progress](https://github.com/tarasglek/chatcraft.org/pull/271)) pull requests merged, all of them in different types of projects and focusing on different types of issues.

Let's take a look at all of them one at at time.

### Adding a CI pipeline to a project 🎷

My [first contribution](https://github.com/mcruzdev/platformoon-web/pull/5) was on a fairly [new project](https://github.com/mcruzdev/platformoon-web), and focused on the Devops side rather than fixing or enhancing the actual code.
Here's what the application's landing page looked like.

![App Image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dj5g7ghjp45ennmx08v.png)



The maintainer had opened as [issue](https://github.com/mcruzdev/platformoon-web/issues/2) requesting to set up a Github actions pipeline that would build the project and pass only if all the steps succeeded.

This seemed to be a perfect issue for my first contribution as it didn't involve changing any code/logic, and gave me a chance to practice writing CI pipelines, something I had just learnt in the [Cloud Course](https://apps.senecacollege.ca/ssos/findOutline.do?subjectCode=CCP555&_gl=1*h5a853*_ga*MTM4MDc0OTUyLjE2NzkzNjQ4NjI.*_ga_NKW0CZJEK5*MTY5ODQzMDUwMi41My4xLjE2OTg0MzA1MDkuNTMuMC4w&_ga=2.47946926.826136065.1698426120-138074952.1679364862) I am taking this semester.

I quickly opened a pull request putting in whatever I had learnt so far, and it was successfully merged in the main branch.

I have written a complete blog about this contribution, feel free to check it out for full details on the entire process.

**Blog:** https://dev.to/amnish04/happy-hactoween-228i
**Pull Request:** https://github.com/mcruzdev/platformoon-web/issues/2

### Adding custom validation to a form

For the second contribution, I decided it was time to start writing some actual code. I found [a project](https://github.com/piyushkdas0611/Profile-Card-Generator) that asked for some info from the user and generated profile cards for them based on the entered information.

![Profile Card Generator](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4w7g0k7gnjqeutq2m0x4.jpeg)


I tried to play with the project but found that the form requesting for user info did not have any kind of input validation. If the user entered invalid info, it would generate broken cards for them instead of waiting for correct input. Therefore, I opened an issue for this enhancement and submitted a pull request that got merged in a day.

I have talked about this PR in the following blog.

**Blog:** https://dev.to/amnish04/my-second-hacktoberfest-pr-4d1e
**Pull Request:** https://github.com/piyushkdas0611/Profile-Card-Generator/pull/48

###  Adding skip questions feature to a quiz app

After getting my hands dirty with some actual code in the second PR, I wanted to contribute with a more complex and elaborate feature this time.

I found a [quiz application](https://github.com/eduardconstantin/azure-fundamentals) on topic **azure-fundamentals**, that had [an issue](https://github.com/eduardconstantin/azure-fundamentals/issues/81) open requesting for what I thought was a fun feature to work on.

![Quiz App](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wm7dkh6yb71mfi4n613c.png)

The maintainer wanted any skipped question to be put in a queue, and once the user went through the inital pass of questions, the skipped questions should show up in order. The process should repeat until all questions have been answered.

This one took a lot of work - 29 discussions and 10 commits as we kept making changes to the requirements until everyone was satisfied.

For complete story, check out this blog.

**Blog:** https://dev.to/amnish04/adding-a-real-feature-to-a-project-400h
**Pull Request:** https://github.com/eduardconstantin/azure-fundamentals/pull/82

### Fixing a UI bug in a ChatGpt clone

For my final contribution, I was looking for a medium to large sized project of excellent quality. During my search, I saw my professor's chat on our Slack channel about one of his own projects called [ChatCraft](https://github.com/tarasglek/chatcraft.org). I quickly checked it out and really liked its idea and the way it was built.

![ChatCraft Demo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ej8vd2powndv0yn9oogf.png)


I saw an [issue](https://github.com/tarasglek/chatcraft.org/issues/263) about a scrolling bug that was open for more than a month, and decided to work on that.

This was, by far, the trickiest one to figure out, even with just 5 lines of changes. The entire story, along with a bonus PR, is covered in the following blog. Make sure to check it out.

**Blog:** https://dev.to/amnish04/no-backing-away-when-hacking-away-2h27
**Pull Request:** https://github.com/tarasglek/chatcraft.org/pull/271/commits/d38e34894544d5af295c3f52babc246a2514ba82
**Bonus Pull Request:** https://github.com/sr229/kuru-kuru/pull/19

## Learnings 📖

And that is how I went from being a newbie with no idea how open-source works, to a contributor in 5 different projects.

![Merged PRs](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0l7qf1fxa36rh7lci16z.png)

[![An image of @amnish04's Holopin badges, which is a link to view their full Holopin profile](https://holopin.me/amnish04)](https://holopin.io/@amnish04)


Along the way, I not only got the oppurtunity to revise old concepts that had blurred in my memory, but also learnt about new technologies like [Fresh.js](https://fresh.deno.dev/), a framework from [Deno](https://deno.land/) (a js runtime engine) that uses [Preact](https://preactjs.com/), a [React Routing](https://reactrouter.com/en/main) library and used [Chakra UI](https://chakra-ui.com/) for the first time.

Apart from the technical skills, I learnt about the importance of patience, persistence and discipline while contributing to open source projects.

All in all, it was a truly unforgettable and valuable experience, and I am proud to be a new member of one of the most supportive community on the planet.