πŸ’‘ Inspiration

The Github profile Readme page is limited to 6 main repositories which users can display, and requires knowledge of markdown to do up a nice profile. This may frustrate some users and take time to set-up.

πŸ” What it does

MangoWG is a website generator which aims to help users create and host their own portfolio website in just a few simple steps, no code required, and allow them to showcase as many of their repository projects as they like.

It uses Python to run a simple CLI application where users can have their very own portfolio website up in just a few simple steps.

We built a Github App which can connect to the users github and help organize their information into the website template generated.

πŸ”§ How we built it

  • Created a GitHub App to install into a given repository. Users will need to β€œallow” the bot. This allows them to get a unique personal access token. With this token, the user can be authenticated by GitHub
  • PyGitHub library is used to create commits and push files into the given repository
  • The interface is built with Typer, which allows us to easily take in user input
  • We use PyGitHub library to get the user's github repository information for display
  • Yattag is used to generate the html page

We packaged the files using Poetry for python and published it to PyPi for ease of access and use

Using GitHub Actions, we are able to automatically publish and update the package. The workflow is run whenever it detects a change in any .py file

πŸƒβ€β™‚οΈ Challenges we ran into

  • We had some issues with publishing the package to PyPi, as we were unsure how to publish multiple python files under the same package
  • Getting the authentication to run the GitHub APi with PyGitHub required troubleshooting. In the permissions tab, we had to ensure correct options were selected.

πŸ… Accomplishments that we're proud of

  • Created our first GitHub App
  • Successfully write a GitHub Action to automate workflow for publish / update package
  • Released our first PyPi package
  • Managed to create a easy to use website generator
  • Learned more about how to create more interesting CLI applications that we more intuitive to use
  • Eg using the Inquirer package to allow the user to make selection rather than type out long command names

🧠 What we learned

  • It was our first time using the python packages Typer, inquirer
    • We learned how to create a CLI application multiple choice selection options and progress bars
  • It was our first time using the PyGithub python package to connect to the API and get user data from github
  • We learned how to publish a PyPi package with multiple python files
  • Create a GitHub App and the settings available
  • How to create a GitHub Actions workflow to publish package to PyPi

⏭️ What's next for MangoWG

  • We wanted to create a MongoDB backend to help users collect contact information and messages at the contacts section of their page, but had issues finding a free hosting service to host our backend logic

Built With

Share this project:

Updates