Skip to content

Introduction

This dummy project outlines the requirements for a Python Flask based web application to interact with the GitHub API. The app should serve as a simple GitHub profile and repository management tool for the authenticated user.

More information with an overview and clear objectives here.

Skills Used

Tech Stack

  • Python
  • Flask

Objectives

Project Setup

  • Make use of poetry to manage both dev and production dependencies.
  • Make use of a Makefile to make commonly executed commands easier to run.
  • Implement and use the linters and formatters used by the ONS Python Template (Black, Ruff, Pylint, Mypy).
  • Make use of a /docs folder and MkDocs to add documentation to the project.
  • Insert all GitHub Usage Policy requirements (i.e PIRR.md, CODEOWNERS, README, .gitignore, etc.). More information available within Software Engineering Policies.

Core Functionality

  • Authenticate with the GitHub API using a fine grained personal access token. This should be passed through the environment
    • Within a terminal use: export PAT=<access_token>
    • In python use: token = os.getenv("PAT")
  • Display a range of information about the authenticated user (i.e username, avatar, follower, etc.)
  • Ability to update the authenticated user's profile information (i.e update profile bio)
  • Display a list of repositories for the authenticated user
  • Ability to archive repositories *This functionality is just a suggestion on what you can do with the REST API. Feel free to include more functionality or even try the GraphQL API.

User Interface

  • All UI within the tool should use the ONS Design System.

Testing

  • The code used within the project should have a coverage greater than 70%.

Documentation

  • The project should be documented using MkDocs and Material for MkDocs.
  • The MkDocs site should be built and deployed in GitHub pages.
  • Feel free to use any of the GitHub Tooling repos as an example.