Learning Web Development Together with a Real Project
Tags: webdev, nextjs, typescript, codenewbie
Published: 2023-08-21 09:22:23

Learning through tutorials alone is not enough, some hands-on practice is required in order to properly understand the concepts.

I created a project to serve as a playground for everyone who wants to learn Web Development and play around with some concepts, such as React, NextJS, GraphQL, TailwindCSS, Typescript, React Query, Vitest and more!

You can find it here (don't forget to leave a ⭐️):

{% github Balastrong/github-stats %}

Here's a quick overview of the project:

{% youtube ZM92XPdrOTk %}

## Why this project?

As of today it's still pretty basic because that's exactly the point, building it together! I already mentioned some of the technologies involved but I'm planning to add more, everything will be kept up to date in the README file.

I've written a lot of tutorials and I think they can be helpful, but the final step is always to put the concepts into practice and I think this project can be a good starting point.

You can use it to learn or improve your technical skills, but it is also a great chance to start contributing to Open Source in a controlled environment. It can help getting familiar with the process of contributing to a project between issues, pull requests, code reviews and so on.

Like I say many times in the video, the goal isn't the success of the final product but rather the process of building it together.

I'm also not necessarily an expert in all the technologies I'd like to see in the project, so I'm also going to learn a lot from it and I really can't wait to see your contributions!

## How to contribute

If you want to participate, you can find the instructions in the [README](https://github.com/Balastrong/github-stats/blob/main/README.md) and in the [CONTRIBUTING](https://github.com/Balastrong/github-stats/blob/main/CONTRIBUTING.md) files, including some instructions on how to set up the environment variables (most notably, the tokens for the GitHub login as we'll see later).

The project is open to any kind of contribution, from fixing typos to adding new features, so don't be shy and feel free to contribute!

You can do basically everything at this point, for example:

- Open an issue to report a bug or suggest a new feature
- Answer or provide feedback on issues (there are some open questions)
- Comment on an issue to get it assigned so you can start working on it
- Open a pull request to fix a bug or add a new feature (make sure to link the assignedissue)
- Do some code review on a pull request

## What is the project about?

Ah right, I didn't mention it yet! I felt what said here above was actually more important than the project itself, but I guess it's time to talk about it.

There's a hosted version here: https://public-github-stats.vercel.app/

The overall idea is that it might be useful to have some relevant data, extracted and grouped from the official GitHub APIs, to use it in your CV or portfolio. Putting the GitHub link is already fine (mandatory, I would say), but also adding some meaningful metrics can be a nice touch.

From the Homepage you'll be able to login with your GitHub Account so that your data can be pulled directly from the GitHub GraphQL endpoint.

As of today there's a page listing the repositories where you opened some pull requests with the state and a total counter, grouped by year. You can nicely display in the browser or export as JSON or text ([implemented a couple of days ago](https://github.com/Balastrong/github-stats/pull/19)).

{% github https://github.com/Balastrong/github-stats/pull/19 %}

There's also a profile page with some basic data and actually a lot of space to put some more!

In the future we can indeed add some other combined data, animations, charts and so on... or think even bigger and adding job postings or other related (or unrelated) featues! If you have any idea, feel free to [open an issue](https://github.com/Balastrong/github-stats/issues) and discuss it.

Speaking of communication, to make things move faster we can also use [Discord](https://discord.gg/5CceB5Y6Zt).

Do you think it's a good idea? Do you have any suggestions? Let me know in the comments and see you in the project!


---

Thanks for reading this article, I hope you found it interesting!

I recently launched my Discord server to talk about Open Source and Web Development, feel free to join: https://discord.gg/bqwyEa6We6

Do you like my content? You might consider subscribing to my YouTube channel! It means a lot to me ❤️
You can find it here:
[![YouTube](https://img.shields.io/badge/YouTube:%20Dev%20Leonardo-FF0000?style=for-the-badge&logo=youtube&logoColor=white)](https://www.youtube.com/channel/UC-KqnO3ez7vF-kyIQ_22rdA?sub_confirmation=1)

Feel free to follow me to get notified when new articles are out ;)
{% embed https://dev.to/balastrong %}