DEV Community

Cover image for I Made a Web App to Showcase all your GitHub Projects ๐Ÿ˜โœจ
Abhishek Keshri
Abhishek Keshri

Posted on

I Made a Web App to Showcase all your GitHub Projects ๐Ÿ˜โœจ

Introducing Projects

Present all your projects in style with a super customizable web app! โœจ

Projects uses the GitHub API to list all your GitHub projects in a nice searchable grid.
Also shows pretty programming icons using devicons.

Inspiration

Needed a way to display all my projects, used my portfolio's project section as inspiration.

Getting Projects

To get projects, follow these steps:

git clone https://github.com/2kabhishek/projects
cd projects
Enter fullscreen mode Exit fullscreen mode

Setup Your Own Projects

You can easily set up projects to show your own repos.

  • Fork the repo
  • Clone it
  • Open up script.js and update the username variable to your GitHub username.
  • Open up index.html and update the title tag to make it your username.
  • You may also want to update the favicon too, update the link tag in index.html
  • Push your changes
  • Go to repo settings on GitHub and enable GitHub Pages.

The site should be live on https://<your-username>.github.io/projects

Here's the profile for @sindresorhus

sindresorhus's projects

Number Of Repos

The number of repos is controlled by the maxPages variable, the GitHub API supports 100 repos per page max.
If you have less than 100 repos, set maxPages to 1, if you have 300 then 3.

You can also edit the fetch query to reduce the per page repo count.

There's no pagination, all repos are shown on the same page.

Authenticated Requests

If you are working locally and notice the API is not sending over data, it might be because of rate limit on GitHub API requests.

You can either wait for an hour or setup a personal access token on GitHub and pass that into the fetch request in script.js

Viewing projects

Open index.html in your favorite browser or visit 2kabhishek.github.io/projects.

How it was built

Projects was built using HTML CSS & JavaScript.
It was built on Neovim and the python http server.
Uses GitHub API for data and Devicons for programming icons.

What I learned

  • Learned about a few quirks of the fetch API, especially implementation of maxPages.
  • Flex, box-shadow and some other CSS tricks were revisited.

What's next

Add more languages to devicons if necessary.

Hit the โญ button if you found this useful.

GitHub logo 2KAbhishek / projects

Showcase All Your Projects ๐Ÿ›๏ธ๐ŸŽ‡

Projects

License People Stars Forks Watches Last Updated

Showcase All Your Projects ๐Ÿ›๏ธ๐ŸŽ‡

projects screenshot
projects screenshot

Introducing Projects

Present all your projects in style with a super customizable web app! โœจ

Projects uses the GitHub API to list all your GitHub projects in a nice searchable grid Also shows pretty programming icons using devicons.

Inspiration

Needed a way to display all my projects, used my portfolio's project section as inspiration.

Getting Projects

To get projects, follow these steps:

git clone https://github.com/2kabhishek/projects
cd projects
Enter fullscreen mode Exit fullscreen mode

Setup Your Own Projects

You can easily set up projects to show your own repos.

  • Fork the repo
  • Clone it
  • Open up script.js and update the username variable to your GitHub username.
  • Open up index.html and update the title tag to make it your username.
  • You may also want to update the favicon too, update the link tag in index.html
  • Push your changes
  • Go to repo settings on GitHub and enable GitHub Pages.

โ€ฆ

Discussion (28)

Collapse
chamodperera profile image
chamodperera • Edited on

Image description

I updated the UI a bit. But now it's light themed. If you like I can make a pull request. Maybe to a new branch

link - chamodperera.github.io/projects/

Collapse
2kabhishek profile image
Abhishek Keshri Author

Looks good! I might add a theme toggle, although the CSS is pretty basic here and just updating the root variables should take care of most of the styling.

Collapse
chamodperera profile image
chamodperera

Ok, sure

Collapse
wjplatformer profile image
Wj

It is possible to do a new HTML file for this specific UI (unless you changed CSS, which would be even easier) where index.html redirects to it.

Collapse
chamodperera profile image
chamodperera

Yes it is possible , but I didn't changed the index.html much.

Collapse
cavo789 profile image
Christophe Avonture

Would it be possible to add filtering and sortering options like most liked, by languages, by last update, hiding archived repos,...

This because when you have a lot of repositories, it's nice to be able to use filtering and sortering.

Thanks

Collapse
2kabhishek profile image
Abhishek Keshri Author

Yes, it should be possible with some input tags and event listeners, the only reason I did not add it is that the repositories page on GitHub already has those capabilities.

I wanted to keep it as simple as possible, but if you want those features on your fork I'll be happy to help you any way I can!

Collapse
cavo789 profile image
Christophe Avonture

I've asked because I've, myself, do something quite similar to your code : avonture.be/. Click on the Git image (top right) to get access to the source.

That script is also using the GitHub API and different calls to bypass the limitation of 100 repos. The script is quite simple and ... I've not implemented any sortering/filter but well a table of contents (which I'm using a lot when I search a repo on my page).

Thread Thread
2kabhishek profile image
Abhishek Keshri Author

That looks good!

Collapse
bukunmikuti profile image
Bukunmi Ransome-kuti • Edited on

This is great!
I have some suggestions. Permit me to get ambitious but I feel this can even get bigger and more fun ๐Ÿ˜€

  1. Additional themes and layouts
  2. Commits activities/trends and most used languages. Github stats.
  3. Bringing over donations link
  4. Dynamic visitors count via badges
  5. A way to manipulate these options via configuration file. (just like babel.config.js)

Existing code base would require a framework and plenty of inspiration to deal with these but it would be a life saver for portfolio-lazy developers. ๐Ÿ˜€๐Ÿ‘๐Ÿผ
I might jump on with some pull requests when I get the time.

Collapse
2kabhishek profile image
Abhishek Keshri Author

Great points, I'll look forward to those PRs!

Collapse
wjplatformer profile image
Wj

I think that the stats of the user can be implemented easily with other open source such as github.com/DenverCoder1/github-rea... and many more!

Collapse
josunlp profile image
Josun

I took some time, forked the project and rebuild it in TypeScript and Sass ^^ github.com/JosunLP/projectDisplay

Image description

Collapse
2kabhishek profile image
Abhishek Keshri Author

Nice! This is what I love about open source โœจ

Collapse
chamodperera profile image
chamodperera

Thanks. Really helpful

Collapse
2kabhishek profile image
Abhishek Keshri Author

Hope it was useful to you

Collapse
chamodperera profile image
chamodperera • Edited on

Yep, I tried it out. chamodperera.github.io/projects/

Collapse
2kabhishek profile image
Abhishek Keshri Author

Projects 2.0 has been released:
What's Changed:

  • System based themes support! Theme changes automatically depending on your settings.
  • Sort your projects by star count!
  • Show star and fork counts along with their links.
  • Option to hide forked repositories, enabled by default. To disable set hideForks = false in scripts.js
  • If project has a homepage, show two buttons instead of one.
Collapse
wjplatformer profile image
Wj • Edited on

Your Projects are so underrated ๐Ÿฅบ. Anyone reading this, go star his projects ๐Ÿ™! my page

Collapse
2kabhishek profile image
Abhishek Keshri Author

Thank you! Means a lot

Collapse
2kabhishek profile image
Abhishek Keshri Author

Please let me know if you have any feedback or need help setting this up!

Collapse
stephennn99 profile image
Stephennn99

This might be interesting.

Collapse
2kabhishek profile image
Abhishek Keshri Author

Thanks!

Collapse
harrybawsac profile image
Harry Bawsac

I would suggest working with environment variables, since itโ€™s now really easy to (accidentally) commit your personal access token.

Collapse
2kabhishek profile image
Abhishek Keshri Author

I didn't want to introduce any node dependencies in this repo that's why it uses PATs. Even if someone commits there keys, just deleting them from github or creating the keys for very short expiry date should do.

Collapse
jmfayard profile image
Jean-Michel Fayard ๐Ÿ‡ซ๐Ÿ‡ท๐Ÿ‡ฉ๐Ÿ‡ช๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ช๐Ÿ‡ธ๐Ÿ‡จ๐Ÿ‡ด

Hey I was able to setup jmfayard.github.io/projects/ in a matter of minutes.

Great job!

Collapse
2kabhishek profile image
Abhishek Keshri Author

Thank you! glad you liked it :)

Collapse
batterprize profile image
batterprize

You could make a new HTML file for this particular UI (unless you changed the CSS, which would be even easier), and index.html would then point to that file. chamodperera.github.io/projects/backrooms game