See also, this assignment on Canvas:
Introducing Today’s Team Activity
Today’s participation activity is a team activity, but you’ll be graded on your individual contribution to that.
It involves two items:
- your individual role in populating a Kanban board for team01, as explained below.
- setting up your individual dev deployment on team01 on dokku
Here are links to the kanban boards; take a look now. There are more instructions below.
Again: while this is a team activity, you’ll be graded on your participation individually.
Step 0: Big Picture
Here’s the big picture for team01:
- The team01 starter code has examples of Java code for two kinds of components:
- Services: in this case, each of the services provides access to a remote web based API for getting information about something; for example, information about a zip code, or a location; the client of the service just has to pass the appropriate parameters to a java method
public String getJSON(...)
and what is returned is the result of that API call. (In general, a “service” in a Spring Boot app is a more general concept, but we’ll get to that later.) - Controllers: in a Spring Boot app, a controller is the way that a web browser or client accesses a Spring Boot web server. Controllers contain methods that map routes (e.g.
/api/locations?location=Oxnard
) to the code that provides the response (be that in JSON, HTML, or some other format.)
- Services: in this case, each of the services provides access to a remote web based API for getting information about something; for example, information about a zip code, or a location; the client of the service just has to pass the appropriate parameters to a java method
- The sample code has service/controller pairs for three differnet remote APIs.
-
Your team is going to add four or five more service/controller pairs (one per team member), following the examples given.
- Full instructions for team01 here: https://ucsb-cs156.github.io/m23/lab/team01.html
Part 1: Setting up the Kanban board.
Today’s work is to set up a Kanban board for you to track your efforts on the team01 project.
Step 1: Make sure every team member has access to the board
Each team member should make sure they can bring up the team’s Kanban board.
You can do this by making a post on your team’s slack channel.
To reduce noise in the channel:
- The first person should post “I can access the team kanban board at” (then post the link).
- Everyone else can add a reply to that thread with “me too” or “I’m having trouble”.
Step 2: Dedide who is doing which of the apps
(This corresponds to step 1.1 here: https://ucsb-cs156.github.io/m23/lab/team01.html#step-11-divide-up-the-controllers-among-your-team, so you may want to take a moment to read the instructions down to that point.)
You’ll see inside https://ucsb-cs156.github.io/m23/lab/team01.html that there is a table like this:
Service | Endpoint |
---|---|
LocationController | https://nominatim.openstreetmap.org/search/{location}?format=json |
PublicHolidayQueryService | https://date.nager.at/api/v2/publicholidays/{year}/{countryCode} |
TidesQueryService | https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?application=ucsb-cs156&begin_date={beginDate}&end_date={endDate}&station={station}&product=predictions&datum=mllw&units=english&time_zone=lst_ldt&interval=hilo&format=json |
UniversityQueryService | http://universities.hipolabs.com/search?name={name} |
ZipCodeQueryService | http://api.zippopotam.us/us/{zipcode} |
Here’s that table again with a sample query for each; you can click on the link and it should bring up information from that API:
Service | Documentation | Example |
---|---|---|
LocationController | Documentation | https://nominatim.openstreetmap.org/search/Oxnard?format=json |
PublicHolidayQueryService | Documentation | https://date.nager.at/api/v2/publicholidays/2023/us |
TidesQueryService | Documentation | https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?application=ucsb-cs156&begin_date=20230710&end_date=20230712&station=9411340&product=predictions&datum=mllw&units=english&time_zone=lst_ldt&interval=hilo&format=json |
UniversityQueryService | Documentation | http://universities.hipolabs.com/search?name=Stanford |
ZipCodeQueryService | Documentation | http://api.zippopotam.us/us/93106 |
Try changing the parameters of any of these URLs to see what happens.
Decide which of these you want to work, and make a Slack post on your team channel claiming that service.
Step 3: Assign your issue to yourself
Find the issue for your Service in the To Do column on the Kanban board, and assign it to yourself.
Here’s what it looks like to assign an issue to an individual (this is a different project, but it illustrates the mechanics):
When the team is done, each member of the entire team should be assigned to at least one issue.
Step 4: Drag the service issue to which you are assigned into the In Progress column
Now drag the issue for the Service (but NOT the one for the controller) from ToDo into In Progress.
The idea is that from now until your full team is finished with all of team01, ideally, each team member is assigned to exactly one issue in the in-progress column (no more, and no less), until the team is done.
Note that even when you are finished with all of it’s issues, your reponsibility to the full team is not over, and you still need to come to class and participate. If you finish first, at that point, your responsibility is to be a resource to the rest of the team to help them. This may take many forms:
- Reviewing and merging their pull requests
- Dividing up your subteam and pairing with members that are running into problems or are stuck.
The purpose of the subteam is to suggest an initial division of labor—having said that, ultimately, all of the work is the responsibillity of the entire team.
Completing all of the issues in your TODO column can be considered a single sprint.
Step 5: Clone the team’s repo
Now find the team01 repo for your team:
- https://github.com/ucsb-cs156-m23/team01-m23-9am-1
- https://github.com/ucsb-cs156-m23/team01-m23-9am-2
- https://github.com/ucsb-cs156-m23/team01-m23-9am-3
- https://github.com/ucsb-cs156-m23/team01-m23-10am-1
- https://github.com/ucsb-cs156-m23/team01-m23-10am-2
- https://github.com/ucsb-cs156-m23/team01-m23-10am-3
- https://github.com/ucsb-cs156-m23/team01-m23-10am-4
Clone this repo to your machine, and follow the instructions to make your first branch, i.e. do steps 2.1 through step 2.2 in the lab instructions here. You may skip step 2.0 for now, but do come back to it later.
- Step 2.1: https://ucsb-cs156.github.io/m23/lab/team01.html#step-21-clone-the-repo-to-your-own-machine-or-csil-account
- Step 2.2: https://ucsb-cs156.github.io/m23/lab/team01.html#step-22-create-a-new-branch
Step 6: Set up individual dev repo
Next follow the instructions in /docs/dokku.md
for setting up your individual dev repo:
When you are done, there should be an instance of the app on dokku at the url http://team01-yourName.dokku-xx.cs.ucsb.edu
Step 7: Set up team dokky instance (prod)
Whoever finishes steps 1-6 first should let the team know out loud and on the slack channel that they are going to take care of setting up the team dokku instance. There is a card for this on the board, and its described in the lab instructions here in step 1.2:
That team member should also find the issue corresponding to that in the ToDo column on the Kanban board, assign it to themselves. Drag into In Progress before starting, and then into Done when its finished (you can skip “In Review” for items that don’t involve changing code).
Step 8: Submit on Canvas
Once you’ve completed steps 1-7, and someone on the team has done step 7 (you or someone else), you are ready to submit on Canvas.
Find the link for on Canvas and submit the link to your dev dokku instance you created in step 6, e.g.
http://team01-chris.dokku-13.cs.ucsb.edu
What then?
You have a few choices:
- Work/Get help on jpa01, jpa02, jpa03 if needed
- Continue work on your in progress issue (i.e. continue with team01)
Grading checklist for participation activity:
Pts | Step | Item |
---|---|---|
10 | Step 1 | Team member made a post or reply in team slack channel indicating they have access to Kanban board |
10 | Step 2 | Slack post claiming an item |
10 | Step 3 | Team member has assigned themselves the issue on the Kanban board |
10 | Step 4 | Team member has moved service (but not controller) into In Progress |
10 | Step 5 | Team member has cloned repo, created a branch for Name-Service (e.g. Chris-Zipcode ) |
10 | Step 6 | Team member has created dev instance on dokku with name team01-YourName and has deployed app |
10 | Step 7 | Someone on the team has taken care of setting up the team instance |
20 | Step 8 | Team member has submitted link to Dokku dev instance on Canvas |