Team Members: Estrella, Isaac, Jack, Josh, Louis, Reuben, Ryan, Olivia, Pat, Sam
Product Owner: Jack
Scrum master: Josh
Vibes watcher: Reuben
Git manager: Ryan
FE Lead: Sam
BE Lead: Olivia
Hype people: Everyone!!
- Everyone gets heard
- Process over product
- Focus on function over form
- Prioritise personal goals --> individuals may want to lean into strengths or challenge areas
- Focus on MVP
- Have set full group standup times
- Be transparent by actively checking in with others and communicating issues
- Be respectful and communicative
- Find ways to help everyone stay on the same page
- Pleasure over pressure
- Share and celebrate wins (even small ones)!
- Product owner to keep production on track
- Lead responsible for comms
- Democratic decision making
- Front-end/back-end split --> 6 frontend, 4 backend?
- Pair programming
- Create a development branch
- Add review protections to the main branch
- Name branches by feature
- Have team leads
- Improvised standups
- Quickly and kindlY address any issues that might arise
- Have a mediator if required --> this could be another group member or an external person (facily, humanskills etc)
- Be open, honest and transparent
- Do checkins --> small and big
- Approach relevant person if there is an issue
- Communicate in group chat to prevent issues arising
Group objective: Gain experience across the stack and working in a larger team.
Estrella:
- across stack
- Css/Bulma
Isaac:
- Work across the stack (flexible)
- Backend
- Pairing
Jack:
- Have fun
- Make something to be proud of
- Redux
Josh:
- Sass/Bulma
- Testing
- Redux
Louis:
- Work across the stack (flexible)
- Auth
Reuben:
- Redux
- Auth
Ryan:
- Have fun with frontend tech
- Front end
Olivia:
- Work across the stack (flexible)
- Backend
- Testing
Pat:
- Backend
- Fullstack
Sam:
- Smooth operations
- Frontend
Meetings are expensive, but sometimes we forget how expensive they are and feel the need to talk for too long about topics that are unimportant for the meeting purpose.
This is an app to display the costs of meetings, and track the costs of your meetings over time.
The idea of the App is to be able to display the real-time cost of a meeting as it occurs. This cost is calculated based on the hourly wages of the meeting's attendees and the current duration of the meeting.
The intended effect of this App is to make meeting attendees aware of how much this time is costing the business.
A Boilerplate is already set up for you with everything you will need to get started. This boilerplate is set up to use:
The mobile responsiveness is also being handled by some neat JS and Bulma classes, be sure to incorporate this perspective in your project goals!
As a user:
- I want to register for the App under my name, and state my hourly wage
- I want to start a new meeting, and add all the meeting members. (MVP: Add member names and wages manually)
- I want to start my created meeting, and see a ($) cost tracker display the current meeting cost every second
- I want to be able to save a meeting's cost, attendees, duration, and date/time when it is finished for later viewing
- I want to be able to view previous meetings in date/time order, and see more information about a past meeting.
- I want to see a graph of meeting costs over time
- I want to be able to select existing users of the App as meeting attendees, so that our wages don't have to be shown / inputted manually. If a meeting attendee doesn't have an account, I want to be able to manually add them to the App.
- I want to set a Maximum Cost an Maximum Duration for my Meeting, and see colourised progress bar displaying both a these
- I want to be able to state my yearly salary rather than hourly rate as an option on register
- I want to be able to view all meetings that I am an attenee for, and I want information about my meetings to not be visible to all users of the app.
- I want to create a group of regular attendees for my meeting group to make setting up my meeting easier.
- I want to be able to write notes or summaries for meetings upon saving them.
name | purpose |
---|---|
Login | Welcome unregistered users and encourage them to login / sign up |
Home | Welcome registered users and display links to other parts of the site |
CreateMeeting | View for user to arrange meeting attendees and information before starting the timer |
Meeting | View to display current meeting time, cost and other information while the meeting is in progress |
History | Display a list of past meetings the user has attended with select preview information |
PastMeeting | Display a single meeting from the history list, displaying more information and a list of attendees for the past meeting |
name | purpose |
---|---|
currentMeeting | Track meeting progress such as current cost and current duration |
meetings | store the list of meetings the user has attended in the past |
attendees | store the list of attendees who can attend meetings |
type | data | purpose |
---|---|---|
RECEIVE_MEETINGS | meetings | retrieve meetings from the db and store in redux |
ADD_MEETING | meeting | Add a single meeting to the history after it is created |
type | data | purpose |
---|---|---|
START_MEETING | attendees ([]), meeting_name | a meeting has started, set initial meeting state |
UPDATE_RUNNING_TOTAL | null | Ubdate running totals based on current time |
END_MEETING | null | Revert to initial state |
type | data | purpose |
---|---|---|
RECEIVE_ATTENDEES | attendees | retrieve attendees from the db and store in redux |
ADD_ATTENDEE | attendee | Add a single attendee to the store after it is created |
Method | Endpoint | Protected | Usage | Response |
---|---|---|---|---|
Get | /api/meetings | Yes | Get a Users Meeting History | An Array of Meetings |
Post | /api/meetings | Yes | Save a completed meeting | The Meeting that has been saved in db read format |
There should be two tables for MVP. You may want/need to add additional columns and tables.
Column Name | Data Type |
---|---|
id | Integer |
meeting_name | String |
duration | Integer |
start_time | Timestamp |
attendees | Integer |
total_cost | Decimal |
Column Name | Data Type |
---|---|
id | Integer |
name | String |
wage | Decimal |
Column Name | Data Type |
---|---|
id | Integer(Increments) |
meeting_id | Integer |
attendee_id | Integer |
Authentication is already set up in the client side of this project using Auth0. Users are currently able to login and logout.
When you wish to protect your server side routes (those for registered users only), you may need to reference other exercises or materials.
If you wish to replace the Auth0 authentication with your own, so you can customise the login for example, you will need to update the client/index.tsx
file of the project with your own Auth0 details.
Run the following commands in your terminal:
npm install
npm run dev
To run before merging:
npm run lint
npm run format
npm run test
There are several scripts in this project that may be useful when deploying your app to Dokku.
To push your local main branch:
npm run dokku:deploy
Run dokku migrations and seeds:
npm run dokku:migrate
npm run dokku:seed