The Development Process

1. Brainstorm requirements

Before programming or designing anything, you should have a clear idea of the features you want to create, bugs you want to fix, and goals you want to meet. GitHub Issues are especially useful for creating requirements.

GUI:

  1. In your repository, click the Issues tab. Make sure you are in the right repository. For instance, if you want to write a requirement for the frontend, make sure you are in the frontend repository.

  2. Click New Issue

  3. Create a descriptive title for for issue, and describe it thoroughly in the comments. Add links to existing code, resources, etc.

  4. For further organization, you can assign an issue to a person or a project

CLI:

gh issue create --title "title here" --body "body here

You can also use the parameters --assignee, --project, and --milestone to add more info to your issue.

Projects

GitHub Projects allow you to organize your issues on a higher level, and make it easier to group issues by person, completion status, and topic.

Tutorial source: GitHub Docs

  1. In your project, navigate to projects,, and create a new project.

  2. The GitHub Project can be either in a table (vertical) or board (horizontal) format.

  3. Add a project description and readme.

  4. Once you've created your poject, you can add columns to organize issues for your project's repositories.

2. Design

Once you have a set of requirements, begin designing. Make sure your designs are easy to follow, but also practical to implement. If you discover that a feature is impractical during the design process, you can update your requirements.

Tools: Figma, Canva, Google, etc.

For backend, you can use a diagram to model how information in your databases will be stored/interact with each other.

3. Development

GitHub and VS Code can be used simultaneously.

Make sure to install the GitHub extension with VS Code.

  1. Fork the main project repository. This will give you a copy of the upstream repo, allowing you to iterate on ideas before merging your changes into the main project.

In the repository, click on fork:

  1. Clone the forked repository onto your local system. This is the copy of the code that you will be working with.

git clone [link to repo]

  1. Enter your project's directory, and open the project in VS Code.

cd myProject

code .

  1. If you make any changes, first stage them. Then, commit them. This will assign your changes to a "commit", making them easier to keep track of.

git add [files with changes you want to stage]

git commit -m "detailed commit message"

  1. Push your changes to your forked repository.

git push

Branching

Instead of pushing all of your changes to the main branch, it's good practice to work on a separate branch specifically dedicated to the feature you are testing. When you switch branches, your commits will be saved to the branch you have checked out.

To switch branches, use the command: git checkout <name of branch>

A more detailed guide to branching can be found here.

Pull Requests

Once you're ready to merge your changes with the main upstream repository, you can create a Pull Request (or PR).

Tutorial Source

  1. Navigate to the branch with the changes you want to merge.

  2. Click Pull Request above the list of files.

  3. Make sure your pull request has the main repository of the upstream branch as the base. Double check you are on the right branch.

  4. Add a title and description to your pull request, and create it. Document the changes that you made, and include any helpful screenshots/information.

  5. Someone else can test your pull request and make sure it works/doesn't have any conflicts before merging it into the final branch!

4. Deployment

Instructions for AWS Deployment can be found here. Setting up automatic deployment for your backend will speed up the development process.

Scrum Teams

Throughout the development process, assign different tasks to each member of the scrum team to split up work efficiently. Hold regular stand up meetings to follow up on everyone's process and determine the next best steps for the project.