# M1: Project Setup

Your team will need to create a project space in the University of Waterloo GitLab. You should create a single GitLab project to use together, and add important project information. Finally, you will submit these details in Learn.

# GitLab Project Creation

  1. Open the GitLab home page.
  2. Select + > New project/repository > Create Blank Project.
  3. Fill in the form:

Creating a new GitLab project
Creating a new GitLab project

  • Your project should be named after your team number from Learn (see Forming a Team). e.g., Team101-5 or Team101-5-Social-Calendar-App.
  • The project should be placed under the Username of one of your team members (e.g. j2avery in the URL example above).
  • Visibility should remain Private.
  1. Select Create project to proceed.

# Setup Security

It's important that you set permissions on your project. This provides access to those who need it, while preventing others from accessing it!

The person who sets up the project should make the following changes:

  1. Check project visibility.
  • Settings > General > Visibility Level
  • Ensure that it's set to Private.

Gitlab visibility flag
Gitlab visibility flag

  1. Add your teammates to the project with full access.
  • Manage > Members > Invite Members.
  • When they accept, change their role to Maintainer or higher.
  1. Add course staff with reduced permissions. Add the list of TAs corresponding to your section and the instructor.
  • Manage > Members > Invite Members.
  • When they accept, change their role to Developer.

# Creating Milestones & Labels

You will need to set up your project to track the work that you will do all term. A milestone is a deadline that you are working towards e.g., a development 'sprint' which ends in a product release. An issue is a task that you might complete during a sprint. You would usually complete a number of issues each sprint.

To setup your project to manage this data:

  • Under Issues > Milestones, create milestones Sprint 1 through Sprint 4. Make sure to assign starting and ending dates to each of them - see the schedule for dates.
  • Under Issues > Labels, create keywords that will help you organize your issues. We usually recommend high, medium, low as useful keywords for setting priorities.

In the next milestone, we'll populate the issues with some of the tasks that you expect to perform.

# Project Documents

# README file

In your starting project, you should add a README.md file in the root of the source tree. This will be displayed by default when users browse your project.

Your README.md is the main landing page for your project. You want to make it easy for users to navigate from here to other parts of your project. As the project progresses, you should link other documents from here.

Your README.md should contain:

  • Team members: names and email addresses for everyone.
  • Team number: corresponding to your team number in Learn.

OPTIONALLY you can also add the following. If you don't know them now, you can add them in your next milestone.

  • Project title (e.g., "Budge-eats")
  • Platform definition (e.g. Android/mobile, or Windows/desktop).
  • Single-sentence description (e.g., "an Uber-eats app for parakeets!")

# Team Contract

Finally, in addition to the team information in the README, you should have completed a Team Contract. This should be in the Wiki and linked from the top-level README as Team Contract.

Minimally, your team contract needs to contain:

  • Names and contact information of all team members.
  • Agreement on how you will meet in-person e.g., how often, and location. You are expected to in-class at least once per week and you may wish to meet more regularly than that.
  • Agreement on how you will communicate e.g., email, Messages, WhatsApp, MS Teams. You need one agreed-up communication channel that everyone will check.
  • Agreement on team roles: who is the project lead? Are people taking on design responsibilities?
  • Agreement on how the team will make decisions. Major decisions should be made by the team, not an individual. Do you vote? Do you need a majority?

Any other details that you wish to add are up to you. See Teamwork > Team Assembly for Team Contract details.

# How to submit