Skip to content

Commit

Permalink
Merge pull request #75 from hellomuthu23/add-guide
Browse files Browse the repository at this point in the history
feat: add guide and example pages
  • Loading branch information
hellomuthu23 committed Jun 29, 2023
2 parents 24273b9 + 3fe9dd7 commit 1c8370f
Show file tree
Hide file tree
Showing 6 changed files with 218 additions and 5 deletions.
8 changes: 6 additions & 2 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import { GamePage } from './pages/GamePage/GamePage';
import HomePage from './pages/HomePage/HomePage';
import JoinPage from './pages/JoinPage/JoinPage';
import { theme } from './service/theme';
import { AboutPlanningPoker } from './pages/HomePage/AboutPlanningPoker';
import { AboutPage } from './pages/AboutPage/AboutPage';
import { Footer } from './components/Footer/Footer';
import { ExamplesPage } from './pages/ExamplesPage/ExamplesPage';
import { GuidePage } from './pages/GuidePage/GuidePage';

function App() {
return (
Expand All @@ -23,7 +25,9 @@ function App() {
<Route path='/game/:id' component={GamePage} />
<Route path='/delete-old-games' component={DeleteOldGames} />
<Route path='/join/:id' component={JoinPage} />
<Route path='/about-planning-poker' component={AboutPlanningPoker} />
<Route path='/about-planning-poker' component={AboutPage} />
<Route path='/examples' component={ExamplesPage} />
<Route path='/guide' component={GuidePage} />
<Route exact path='/*' component={HomePage} />
</Switch>
<Footer />
Expand Down
18 changes: 18 additions & 0 deletions src/components/Toolbar/Toolbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import GithubIcon from '@material-ui/icons/GitHub';
import AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';
import MergeTypeOutlinedIcon from '@material-ui/icons/MergeTypeOutlined';
import InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';
import BookOutlinedIcon from '@material-ui/icons/MenuBookOutlined';
import SearchOutlinedIcon from '@material-ui/icons/SearchOutlined';
import React from 'react';
import { useHistory } from 'react-router-dom';
import './Toolbar.css';
Expand Down Expand Up @@ -36,6 +38,22 @@ export const Toolbar = () => {
>
{!isSmallScreen ? 'What is planning poker?' : null}
</Button>
<Button
title='Guide'
startIcon={<SearchOutlinedIcon />}
color='inherit'
onClick={() => history.push('/guide')}
>
{!isSmallScreen ? 'Guide' : null}
</Button>
<Button
title='Example'
startIcon={<BookOutlinedIcon />}
color='inherit'
onClick={() => history.push('/examples')}
>
{!isSmallScreen ? 'Examples' : null}
</Button>
<Button
title='New Session'
startIcon={<AddCircleOutlineIcon />}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import BestPractices from './../../images/best-practices.jpg';

import Benefits from './../../images/benefits.jpg';

import './HomePage.css';
import '../HomePage/HomePage.css';

export const AboutPlanningPoker = () => {
export const AboutPage = () => {
return (
<>
<Grid container direction='column' justify='center' alignItems='center'>
Expand Down
125 changes: 125 additions & 0 deletions src/pages/ExamplesPage/ExamplesPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
import { Grid, Slide, Typography } from '@material-ui/core';
import React from 'react';

import '../HomePage/HomePage.css';

export const ExamplesPage = () => {
return (
<>
<Grid container direction='column' justify='center' alignItems='center'>
<ExamplesContent />
</Grid>
</>
);
};

export const ExamplesContent = () => {
return (
<Grid container item sm={12} lg={9} justify='center' alignItems='center'>
<Slide in={true} direction='up' timeout={2000}>
<div className='HomePageContainer'>
<Typography variant='h5'>Examples of User Story Estimation</Typography>
<br />
<Typography variant='body1'>
User Story: As a user, I want to be able to log in to the application using my email and password.
<br /> <br />
Estimation: 3 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team considers this user story to have medium complexity compared to other user stories. It
involves implementing authentication logic, verifying credentials, and providing appropriate error handling.
The team's collective experience and judgment led to the consensus estimation of 3 story points.
<br /> <br />
<hr></hr>
<br />
User Story: As a user, I want to search for products based on various filters (e.g., price, category,
brand).
<br /> <br />
Estimation: 5 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team considers this user story to be more complex compared to simpler user stories.
Implementing the search functionality involves handling multiple filter options, integrating with the
database, and ensuring efficient search performance. The team estimates it to be a moderate-sized task.
<br /> <br />
<hr></hr>
<br />
User Story: As an administrator, I want to be able to generate monthly reports on user activity and sales
performance.
<br /> <br />
Estimation: 8 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team identifies this user story as a larger and more involved task. It requires designing and
implementing reporting functionalities, gathering and aggregating data from multiple sources, and generating
meaningful insights. The complexity and effort involved lead to a higher estimation.
<br /> <br />
<hr></hr>
<br />
User Story: As a user, I want to be able to reset my password if I forget it.
<br /> <br />
Estimation: 2 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team considers this user story relatively simple and straightforward. Implementing a password
reset functionality typically involves providing an email verification mechanism and updating the user's
password in the database. The team estimates it to be a smaller task compared to others.
<br /> <br />
<hr></hr>
<br />
User Story: As a user, I want to be able to add products to my shopping cart and proceed to checkout.
<br /> <br />
Estimation: Medium (T-shirt size)
<br /> <br />
Rationale: The team uses T-shirt sizes for estimation. Adding products to a shopping cart and enabling the
checkout process involves handling user interactions, managing cart state, updating inventory, and
integrating with payment gateways. The team estimates it to be of medium size in terms of effort and
complexity.
<br /> <br />
<hr></hr>
<br />
User Story: As a user, I want to be able to upload and attach files to my project tasks.
<br /> <br />
Estimation: 3 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team considers this user story to be of moderate complexity. Implementing file upload
functionality involves handling file storage, validation, and linking files to specific tasks or projects.
The team estimates it to be a medium-sized task.
<br /> <br />
<hr></hr>
<br />
User Story: As an administrator, I want to be able to create and manage user roles and permissions.
<br /> <br />
Estimation: 5 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team identifies this user story as a larger and more complex task. Implementing role-based
access control requires designing a flexible permission system, defining roles, managing user permissions,
and ensuring proper security measures. The effort and complexity involved lead to a higher estimation.
<br /> <br />
<hr></hr>
<br />
User Story: As a user, I want to receive email notifications for important updates and events.
<br /> <br />
Estimation: 2 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team considers this user story relatively straightforward. Implementing email notifications
involves integrating with an email service provider, setting up templates, and triggering emails based on
specific events or triggers. The team estimates it to be a smaller task compared to others.
<br /> <br />
<hr></hr>
<br />
User Story: As a user, I want to be able to filter and sort search results based on different criteria.
<br /> <br />
Estimation: 3 story points (Fibonacci sequence)
<br /> <br />
Rationale: The team identifies this user story as a moderate-sized task. Implementing filtering and sorting
functionality requires handling user preferences, building flexible search queries, and presenting sorted
and filtered results. The team estimates it to be of medium complexity and effort.
<br /> <br />
<hr></hr>
<br />
Remember, these estimations are based on hypothetical scenarios, and actual estimations may vary based on
project-specific factors, team dynamics, and technology considerations. The primary aim is to establish a
relative understanding of effort or complexity to aid in prioritization and planning.
</Typography>
</div>
</Slide>
</Grid>
);
};
66 changes: 66 additions & 0 deletions src/pages/GuidePage/GuidePage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import { Grid, Slide, Typography } from '@material-ui/core';
import React from 'react';

import '../HomePage/HomePage.css';

export const GuidePage = () => {
return (
<>
<Grid container direction='column' justify='center' alignItems='center'>
<GuideContent />
</Grid>
</>
);
};

export const GuideContent = () => {
return (
<>
<Grid container item sm={12} lg={9} justify='center' alignItems='center'>
<Slide in={true} direction='up' timeout={2000}>
<div className='HomePageContainer'>
<Typography variant='h5'>Guidelines on estimating user stories in Agile</Typography>
<br />
<Typography variant='body1'>
1. <b>Understand the User Story</b>:<br></br>
Before estimating, ensure that the team has a clear understanding of the user story. The product owner or
the person responsible for defining the user story should provide sufficient context and answer any
questions from the team. The team should have a shared understanding of the user story's purpose,
functionality, and expected outcomes.
<br /> <br />
2. <b>Determine Estimation Scale</b>:<br></br> Choose an estimation scale that suits your team's needs.
The most common scales used in Agile are Fibonacci sequence (1, 2, 3, 5, 8, 13, 21, etc.), T-shirt sizes
(XS, S, M, L, XL), or linear scale (1-10). Select a scale that allows for enough differentiation between
estimations and avoids spending excessive time on fine-grained estimates.
<br /> <br />
3. <b>Relative Sizing</b>:<br></br>Agile estimation focuses on relative sizing, where the team compares
the effort or complexity of one user story with another. This approach helps avoid the pitfalls of trying
to estimate absolute time. Relative sizing allows for a more straightforward and faster estimation
process.
<br /> <br />
4. <b>Use Reference User Stories</b>:<br></br> Create a set of reference user stories that the team
collectively agrees on. These reference stories serve as benchmarks against which other user stories can
be compared. The team can assign a standard estimation value to each reference story based on its
complexity, effort, or size.
<br /> <br />
5. <b>Conduct Estimation Sessions</b>:<br></br> Organize estimation sessions with the entire team present.
The team members responsible for implementing the user stories should be actively involved in the
estimation process. Use techniques such as Planning Poker, where team members privately select estimation
values, and then reveal them simultaneously, allowing for discussion and convergence.
<br /> <br />
6. <b>Discuss and Resolve Differences</b>:<br></br> Encourage open discussion during estimation sessions.
If team members provide different estimations, have them share their reasoning and insights. This
discussion helps to uncover assumptions, identify risks or dependencies, and clarify any
misunderstandings. The goal is to reach a consensus estimation.
<br /> <br />
7. <b>Update and Refine Estimations</b>:<br></br> After the estimation session, update the user story
estimates in the product backlog or Agile management tool. As the project progresses, continue to refine
the estimates based on actual effort or complexity experienced during implementation. This continuous
refinement improves the accuracy of future estimations.
</Typography>
</div>
</Slide>
</Grid>
</>
);
};
2 changes: 1 addition & 1 deletion src/pages/HomePage/HomePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { RecentGames } from '../../components/Poker/RecentGames/RecentGames';
import LandingImage from './../../images/background.jpg';
import SessionControllerImage from './../../images/Session.jpg';
import './HomePage.css';
import { AboutPlanningPokerContent } from './AboutPlanningPoker';
import { AboutPlanningPokerContent } from '../AboutPage/AboutPage';

export const HomePage = () => {
const isJoin = useRouteMatch('/join');
Expand Down

0 comments on commit 1c8370f

Please sign in to comment.