Skip to content

Commit 3949ac7

Browse files
committed
Initial commit
0 parents  commit 3949ac7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+19867
-0
lines changed

.gitignore

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
8+
# testing
9+
/coverage
10+
11+
# production
12+
/build
13+
14+
# misc
15+
.DS_Store
16+
.env.local
17+
.env.development.local
18+
.env.test.local
19+
.env.production.local
20+
21+
npm-debug.log*
22+
yarn-debug.log*
23+
yarn-error.log*

.prettierrc

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"semi": true,
3+
"trailingComma": "all",
4+
"singleQuote": true
5+
}

CONTRIBUTORS.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# The Collab Lab
2+
3+
## Cohort Participants
4+
5+
## Mentors
6+
7+
## Code of Conduct Contacts

PROJECT-BRIEF.md

+155
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# Project Brief, The Collab Lab
2+
## Smart Shopping List
3+
4+
### Overview
5+
The goal of this project is to work together to build a “smart” shopping list that learns your shopping habits over time, putting items you are most likely to need to buy in the near future at the top.
6+
7+
This project is based on [iNeedToBuy.xyz](https://app.ineedtobuy.xyz/), a mobile web app Andrew built for his own use in early 2019.
8+
9+
### Locations for things
10+
* Site: {link to cohort live site}
11+
* Repo: {link to cohort repo}
12+
* Clone URL: `{clone URL}`
13+
* Issue list: {link to cohort repo issues}
14+
* Database: {link to cohort firebase database}
15+
16+
### Project cadence & duration
17+
The project is expected to take 40 hours per participant, spread over 8 weeks.
18+
19+
Each week, the team of 4 developers will split into 2 pairs of 2 developers each. Each pair will take on a story or task from the issues list to work on together that week.
20+
21+
Pairings will go as follows:
22+
23+
#### Week 1, {start date - end date}
24+
1. {Name} & {Name}
25+
2. {Name} & {Name}
26+
27+
#### Week 2, {start date - end date}
28+
1. {Name} & {Name}
29+
2. {Name} & {Name}
30+
31+
#### Week 3, {start date - end date}
32+
1. {Name} & {Name}
33+
2. {Name} & {Name}
34+
35+
#### Week 4, {start date - end date}
36+
1. {Name} & {Name}
37+
2. {Name} & {Name}
38+
39+
#### Week 5, {start date - end date}
40+
1. {Name} & {Name}
41+
2. {Name} & {Name}
42+
43+
#### Week 6, {start date - end date}
44+
1. {Name} & {Name}
45+
2. {Name} & {Name}
46+
47+
#### Week 7, {start date - end date}
48+
1. {Name} & {Name}
49+
2. {Name} & {Name}
50+
51+
#### Week 8, {start date - end date}
52+
1. {Name} & {Name}
53+
2. {Name} & {Name}
54+
55+
### Pair Programming
56+
57+
A portion of your dedicated hours each week will be spent [pair programming](https://www.freecodecamp.org/news/how-remote-pair-programming-works-and-why-it-can-change-your-life-cd7b767dc60f/) with your partner — this is where the most magical collaboration happens.
58+
59+
Pair programming offers some really exciting opportunities to teach/learn from your partner, get a different perspective and/or insight on the issues you’re facing, and drive forward progress on your goals.
60+
61+
There is no one “right” way to pair program, but in general, you will meet with your partner on Zoom to work through the story or task you’ve chosen for that week. You’re encouraged to test out some different approaches to pair programming to see what works best for your and your partner’s collaboration styles.
62+
63+
### Weekly Sync
64+
65+
Each week, we’ll get on a 1-hour Zoom call. The call will always start with a *quick demo of the previous week’s work* from each pair. This is a common practice on most software teams and also lets you practice talking about your work, which can come in handy in a job interview setting!
66+
67+
The way we use the rest of the time will vary based on whether it’s an even- or odd-numbered week, as follows:
68+
69+
#### Odd-numbered weeks
70+
71+
1. Demos/discussion (15 minutes)
72+
2. Learning module (30 minutes)
73+
3. Mentors meet with pairs to talk through approach to upcoming week’s work (15 minutes)
74+
75+
#### Even-numbered weeks
76+
77+
1. Demos/discussion (15 minutes)
78+
2. Retrospective (30 minutes)
79+
3. Mentors meet with pairs to talk through approach to upcoming week’s work (15 minutes)
80+
81+
In our retros, we will share appreciations of our teammates as well as talk about what went well from a process perspective and what we could do to improve how we’re working together.
82+
83+
### Weekly Cadence
84+
85+
A week sounds like a long time in some ways, but part of working on a team is accounting for coordination costs. Let’s walk back our goal of demoing from the production URL on Sundays to see when different things need to happen.
86+
87+
* Monday, Tuesday, Wednesday — Work out approach, research if needed, pair program
88+
* Thursday — Complete story and ask for peer feedback
89+
* Friday — Respond to/give peer feedback on PRs and ping mentors for feedback
90+
* Saturday — Respond to mentor feedback on PRs
91+
* Sunday — Demo on production!
92+
93+
Having watched many cohorts before yours, our advice is to front-load the work as much as possible in the first couple of days of each week. Some of the stories are trickier than they appear on the surface!
94+
95+
### How to know what to do
96+
The project is organized in GitHub as a set of [user stories](https://www.mountaingoatsoftware.com/agile/user-stories), each with a description of the desired functionality as well as [acceptance criteria](https://www.leadingagile.com/2014/09/acceptance-criteria/) (AC) that describe how you know whether the task or story is complete. You can find the stories on [the project board]({link to the cohort repo project board}) on GitHub.
97+
98+
A task or story is “done” when the following are all true:
99+
100+
* The AC have been met
101+
* Optionally, tests have been written to validate the “[happy path](https://en.wikipedia.org/wiki/Happy_path)
102+
* In the case of a UI feature, it has been reviewed for [accessibility](https://accessibilityinsights.io/)
103+
* The code to complete the task or implement the feature has been reviewed and approved by the other pair of developers
104+
* The [Product Owner](https://www.agilealliance.org/glossary/product-owner/) (i.e. one of the mentors) has accepted the work as satisfactorily meeting the requirements
105+
106+
The “backlog” (the collection of stories) represents the work needed to complete the project. At the point when all of the stories are done, we should have a working app!
107+
108+
### Coordination & communication
109+
110+
It’s super helpful both to yourself and the mentors for you to document your work. This can prevent you from losing track of details or decisions you make with your pair buddy. It also allows mentors to catch up on your progress when you ask for help.
111+
112+
One of the first things you & your pair buddy should do each week is create a [draft PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#draft-pull-requests) for your work. This allows you to have a conversation about the work right alongside the code. Coupled with questions and discussions about your approach in the issue itself, this is nice way of documenting your progress as you go.
113+
114+
### Development process
115+
Work will be done on feature branches in git. Branches should be named in the following way:
116+
117+
<initials of person 1>-<initials of person 2>-<short description>
118+
119+
For example:
120+
121+
stc-an-connect-to-firestore
122+
123+
The hypothetical example above has Stacie Taylor-Cima and Alejandro Ñáñez working together on connecting the app to Firestore. Each of them will be able to work on the feature branch independently, but only one of them will submit the merge request when the work is ready (described in more detail below).
124+
125+
When you’re ready to start work on a feature, one person in your pair should create a local branch following the naming convention above, then push the branch to GitHub so your pair buddy can pull it down to their local environment. The following steps should work to do just this:
126+
127+
git checkout -b an-example-feature-branch
128+
git push -u origin an-example-feature-branch
129+
130+
When you and your pair partner have working code that you believe is ready to be merged to `main` and deployed, you will follow the following steps:
131+
132+
1. Create a “[pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request)” (PR).
133+
2. Notify the other pair team in Slack that you have a new PR for them to review.
134+
3. Incorporate feedback from the other pair team into your work until both you and they are satisfied the code is ready to be merged.
135+
4. Request that one of the mentors review the PR for final approval.
136+
5. Once approved, merge the PR into `main`. (Your code will be built and deployed to production automatically thanks to [Netlify](https://www.netlify.com/).)
137+
6. Check your work on the [production site]({link to cohort live site}).
138+
7. Celebrate! 🥳
139+
140+
### Slack
141+
142+
Most of our team coordination will happen through [the Collab Lab Slack team](https://the-collab-lab.slack.com) and, in particular, your team channel.
143+
144+
If you’re not already super familiar with Slack, no worries! Here are a couple of tips to help you use it like a pro!
145+
146+
1. Threads threads threads! No, seriously, threads! 😅 Threads are great because they do 2 really helpful things: 1) They encapsulate conversations so future you is able to find both the question and the answer in one place, 2) They keep notifications to a minimum, giving people the option of following a conversation or not.
147+
2. Speaking of notifications, tag people in when you need their attention. “`@stacie`, could you review this PR?” is better than “Can someone review this PR?” because the latter may not be seen for a while depending on the person’s notification settings. When you need to alert the whole channel to something, use `@here`. We also have groups set up such as `@group-tcl-9` and `@group-tcl-9-mentors` as shortcuts to tagging in certain groups. Use them!
148+
3. Use GIFs and emoji liberally! Communicating via text can come across really dry. Don’t be afraid to communicate a little emotion along with that question about React hooks! 🤪
149+
150+
**Note:** You can disable the animation of gifs and emojus in the Slack app itself. Visit [the Slack Help Center](https://slack.com/help/articles/228023907-Manage-animated-images-and-emoji) to learn more.
151+
152+
### What else?
153+
I’m around 💯% sure I’m forgetting or glossing over something important, so please be noisy on Slack as things come up. The mentors and I will do our best to get you unstuck. Also, lean on each other for help as well! Finally, work in the open so everyone can benefit from your questions.
154+
155+
![gif of a My Little Pony pulling on goggles, with a determined look on their face, saying, “Let’s do this”.](http://giphygifs.s3.amazonaws.com/media/PuWNMebKGIKNG/giphy.gif)

README.md

+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
# Overview
2+
3+
## What is this project?
4+
5+
The goal of this project is to collaborate with your Collab Lab team to create a “smart” shopping list app that learns your buying habits and helps you remember what you’re likely to need to buy on your next trip to the store.
6+
7+
## How does it work?
8+
9+
As a user, you will enter items (e.g., “Greek yogurt” or “Paper towels”) into your list. Each time you buy the item, you mark it as purchased in the list. Over time, the app comes to understand the intervals at which you buy different items. If an item is likely to be due to be bought soon, it rises to the top of the shopping list.
10+
11+
## Check out an example
12+
13+
The app will work in many of the same ways as [iNeedToBuy.xyz](https://app.ineedtobuy.xyz/) (on which our project is based) with the exception that we will not be implementing barcode scanning (that feature would add a lot of scope to the project and wasn’t all that useful).
14+
15+
:tv: &nbsp; Check out a video demo of the example app here:
16+
[![](https://cdn.zappy.app/33815167c45d74c3ae5af232de633add.png)](https://www.youtube.com/watch?v=mwj74mE9s64&t)
17+
18+
## More details for contributors
19+
20+
🎉 &nbsp; If you’re a Collab Lab participant, first of all: WELCOME! We’re so excited to work with you and collaborate on something amazing.
21+
22+
### Make your first contribution!
23+
24+
The first thing you will want to do before your kick-off call is make your first contribution to this repo. This will help make sure you’re ready to go on day one.
25+
26+
- Get this project set up locally by following the instructions [below in this README](#project-setup).
27+
- Add your name to the [CONTRIBUTORS.md](CONTRIBUTORS.md) file
28+
- Be sure to do this from your local environment and not from GitHub in your browser. The purpose (aside from highlighting our amazing team) is to make sure you’re local environment is all set up and ready to go come day 1!
29+
- Commit to the `main` branch and push it up to the remote repo. (Over the next 8 weeks, we will rely on feature branches as we collaborate on the project, but for this task committing to main will do just fine.)
30+
31+
### What else should contributors know?
32+
For additional details on how your cohort will operate, please check out the [project brief](PROJECT-BRIEF.md).
33+
34+
<hr>
35+
36+
# Project setup
37+
38+
## Download Node and NPM
39+
40+
* `npm` is distributed with Node.js which means that when you download Node.js, you automatically get `npm` installed on your computer.
41+
* Follow the [instructions here to install Node.js and `npm`](https://nodejs.org/en/).
42+
43+
## Clone project locally
44+
45+
* On GitHub, navigate to the repo for your cohort’s project (you’re probably there right now, click the "Code" tab at the top).
46+
![screenshot of "Code" tab on GitHub](https://cdn.zappy.app/7751e7784910a8c64b47106e24fd3dd1.png)
47+
* Click the green "Clone or download" button and copy the web URL.
48+
![screenshot of how to copy the web URL for a GitHub repo](https://cdn.zappy.app/c5fa2c9e72f6cfbd15fb27f4ed2dc898.png)
49+
* From your terminal, `cd` into the directory where you want this project to live.
50+
![screenshot of how to navigate folders in terminal](https://cdn.zappy.app/8a4302d1262bc08fa61e8cd2f3b7c3b8.png)
51+
* Once you’re in the directory, type `git clone` followed by the web URL you just copied to your clipboard from GitHub.
52+
![screenshot of how to git clone](https://cdn.zappy.app/7a9553b7cc4949beecd8db6f32e631a4.png)
53+
* Then navigate into the project by typing `cd` followed by the project directory’s name.
54+
![screenshot of how to cd into the project directory](https://cdn.zappy.app/62e50c2658f91f01b22383d04c5a5e3a.png)
55+
56+
## Update dependencies
57+
58+
* Once you have the project locally and you are in the project directory, you’ll want to update all the project’s dependencies. To do so, type the following into your terminal: `npm update`
59+
![screenshot of npm update in the terminal](https://cdn.zappy.app/b7619c19e38166329334430335746d3b.png)
60+
* Maybe take a sip of coffee or check in on Twitter, this could take a minute -- don’t worry.
61+
62+
## Access the project in your browser
63+
64+
* After you’ve cloned the project locally and updated the dependencies, you should be able to see the project at `localhost:3000`.
65+
![screenshot of the react project](https://cdn.zappy.app/30d5733fe9abc6d74d3adde2d046c101.png)
66+
67+
68+
🎉 You did it! You’re ready to start contributing. Don’t forget to complete the first task by adding your name to [CONTRIBUTORS.md](CONTRIBUTORS.md) from your local enviroment, committing those changes, and creating a pull request.
69+
70+
<hr>
71+
72+
# Boilerplate information
73+
74+
Everything in this section is automatically generated when you create a new app using `create-react-app`. These details can be really helpful in learning how to launch and manage your React app with `npm`.
75+
76+
## ↓↓↓ create-react-app boilerplate ↓↓↓
77+
78+
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
79+
80+
### Available Scripts
81+
82+
In the project directory, you can run:
83+
84+
#### `npm start`
85+
86+
Runs the app in the development mode.<br />
87+
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
88+
89+
The page will reload if you make edits.<br />
90+
You will also see any lint errors in the console.
91+
92+
#### `npm test`
93+
94+
Launches the test runner in the interactive watch mode.<br />
95+
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
96+
97+
#### `npm run build`
98+
99+
Builds the app for production to the `build` folder.<br />
100+
It correctly bundles React in production mode and optimizes the build for the best performance.
101+
102+
The build is minified and the filenames include the hashes.<br />
103+
Your app is ready to be deployed!
104+
105+
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
106+
107+
#### `npm run eject`
108+
109+
**Note: this is a one-way operation. Once you `eject`, you can’t go back!**
110+
111+
If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
112+
113+
Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
114+
115+
You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
116+
117+
### Learn More
118+
119+
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
120+
121+
To learn React, check out the [React documentation](https://reactjs.org/).
122+
123+
#### Code Splitting
124+
125+
This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting
126+
127+
#### Analyzing the Bundle Size
128+
129+
This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size
130+
131+
#### Making a Progressive Web App
132+
133+
This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app
134+
135+
#### Advanced Configuration
136+
137+
This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration
138+
139+
#### Deployment
140+
141+
This section has moved here: https://facebook.github.io/create-react-app/docs/deployment
142+
143+
#### `npm run build` fails to minify
144+
145+
This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
146+

_resources/wireframes/add-item.png

47 KB
Loading
57.8 KB
Loading

_resources/wireframes/list-empty.png

23.8 KB
Loading
50.2 KB
Loading
32.2 KB
Loading

cypress.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

cypress/fixtures/example.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "Using fixtures to represent data",
3+
"email": "hello@cypress.io",
4+
"body": "Fixtures are a great way to mock data for responses to routes"
5+
}

cypress/fixtures/profile.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"id": 8739,
3+
"name": "Jane",
4+
"email": "jane@example.com"
5+
}

0 commit comments

Comments
 (0)