# GitHub Authentication and Integration User Stories
## New User Signup ✅
- A new user accesses the TEA platform by signing up with a their GitHub account, bypassing the need to create an account using an email/username and password.
- Once authorised, their GitHub account can now be used to authenticate future sign-in attempts to the TEA platform.
## User Pull and Push
- A GH authenticated user clicks on the 'Import File' button in the case manager and can choose to import (i.e pull) an assurance case that is currently stored from any of their linked repositories.
- When they are finished making changes to an assurance case, they can push these changes back to the upstream repo.
- Alternatively, they can choose to create a new file in the TEA platform, (i.e not one pulled from a GH repository) and then push this to an existing upstream repository.
## Existing Users
- An existing TEA platform user wants to make use of the GH integration.
- They link their TEA account to an existing GH account and can now perform pulls and pushes (as above).
## Argument Patterns
- A user has a repository of existing argument patterns, which are stored on GitHub.
- They link their TEA account (or an existing GH authenticated account) to this repository.
- When they create a new assurance case, they are now able to see the list of argument patterns as templates that can be used to help develop a new assurance case.
## Collaboration
- A project team want to collaboratively build an assurance case.
- The team comprise the following people:
- Case Developer 1
- Case Developer 2
- Case Reviewer
- CD1 and CD2 are both responsible for building out two strategies, along with their respective claims and evidence. They decide to use different branches in a GH repo to make their changes.
- Once they have finished the first draft, they merge these branches so that CR can review the whole case in the TEA platform.
- CR leaves comments for the team (either on the TEA platform or in a GH issue) based on their feedback.
- CR1 and CR2 revise their strategies based on this feedback using their separate branches and merge once completed.
## Sharing and Publication
- A user who was created an assurance case wants to publish their work to share with the wider community.
- They upload their case into a public repository for open assurance cases so that others can review and comment on them, or identify patterns that could be reused in their own projects.