Git Product home page Git Product logo

karleenmsrichards / final-project-gp2 Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 5.0 400 KB

My Final Group Project is BookMe which is a website that connects experts in various areas of work to customers. Experts signs up for a subscription, then adds their google calendar to their profile so that customers can book an appointment.

Home Page: https://starter-kit-all6.onrender.com/

License: ISC License

Dockerfile 0.78% JavaScript 98.33% HTML 0.89%
expressjs github-actions googleauth googlecalendar javascript mui nodejs react sequelize-orm

final-project-gp2's Introduction

Starter Kit

Deploy to Render

Setup

Note if you have any problems setting up the starter kit, see the wiki and, if still not solved, post to #cyf-full-stack-starter-kit in Slack.

Pick one member of the team to own the repository and pipeline. That person should do the following:

  1. Click the "Use this template" button above (see GitHub's docs) to create your team repository and name it something appropriate for your project.
    • Your repo should say "generated from", not "forked from", "CodeYourFuture/cyf-final-project-starter-kit" at the top
  2. In your repo, click the "Deploy to Render" button at the top of the README and log in using GitHub when prompted.
  3. Fill in a service group name for your application and then click "Apply".
  4. Once it has deployed successfully, click the "managed resources" link to view the application details.

Whenever you commit to main (or e.g. merge a pull request) it will get automatically deployed!

You should now make sure all of the project team are collaborators on the repository.

Scripts

Various scripts are provided in the package file, but many are helpers for other scripts; here are the ones you'll commonly use:

  • dev: starts the frontend and backend in dev mode, with file watching (note that the backend runs on port 3100, and the frontend is proxied to it).
  • lint: runs ESLint and Prettier against all the code in the project.
  • serve: builds and starts the app in production mode locally.

Debugging

While running the dev mode using npm run dev, you can attach the Node debugger to the server process via port 9229. If you're using VS Code, a debugging configuration is provided for this.

There is also a VS Code debugging configuration for the Chrome debugger, which requires the recommended Chrome extension, for debugging the client application.

Security

If the project handles any kind of Personally Identifiable Information (PII) then make sure the following principles are followed:

  • Only collect strictly necessary PII;
  • Access to PII should be as restricted as possible;
  • Access to PII should only be possible after authentication. Authentication must be done via GitHub. Ad hoc authentication solutions are not allowed;
  • Admins must be able to control who has access to the platform and at which levels using only GitHub groups;
  • There must be an audit mechanism in place. It is required by law to know who accessed what and when;
  • Code must be reviewed by senior developers before being pushed to production;
  • APIs must be secure. Make sure we are not handling security on the frontend.

Troubleshooting

See the guidance in the wiki.

final-project-gp2's People

Contributors

farzaneh-haghani avatar henimkh avatar jarrodfolinofc avatar jarrodruby avatar karleenmsrichards avatar tony-devops avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

final-project-gp2's Issues

Epic: Landing Page -Search Component

Given I am a user
When I see the landing page
Then I should see a search section.

(It's included Location / Date / Time / Service and arrow button)

Spike Story for Google Meet Usage For Project

Spike story with time boxed research activity terminating 24 July 2023 on utilisation of Google meet integration into the APP for automated meeting ID generation on a booking/ reservation made by client/customer

Project Mock-Ups

Site Mock Ups Provided by PO

Home Page
Image

Search Results
Image

Supplier Dashboard
Image

Checkout Page/ Booking Page
Image

Customer Dashboard

Image

Epic: Authentication Journey- Display Authentication Home Page

Given: I am an unauthenticated user
When: I go to the home page
Then: I see the authentication page with Google

Given: I am an unauthenticated user
When: I am on the Google authentication page
And: I authenticate with a valid Google account
Then: I go/ redirected to the website Dashboard

Given: I am an unauthenticated user
When: I am on the Google authentication page
And: I authenticate with an invalid Google account
And: I cancel
Then: I get redirected to the authentication page.

Based on Google authentication, we may get Name, email and contact telephone number. to be finalised.

EPIC: Landing Page - View Landing Page

Given I am an unauthenticated User
When I navigate to the landing Page
Then I should see the landing page

Tech Details:

  • Setup a react project (use KArleen's repo)
  • Set up the CSS framework
  • Deploy it
  • Get some base text to show
  • Favicon

Task: Sign Out Button and Send Token to Node

Given I am an authenticated user
When I click the sign out button
Then I see a sign out message

Tech:
Create sign out button and functionality to sign out users
This will delete the apiToken in localstorage.
Create a function that sends jwt token to the node.

Task1: Tony- Node JS Server

Create the user end point
check the token is valid. if not send it to the unauthorised page
add the routes
swagger

Optional Task: Add eslint into github actions

Concepts

Github Actions: Everytime you push code to github it run tasks and gives you the results.

Google these concept and try and get an understanding

What to do

  • Make new folder named .github/workflows in the root folder
  • add a new yaml file called eslint.yaml
on:
  push:
name: example
jobs:
  lint:
    name: run lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: install dependencies
        run: npm install
      - name: run lint command
        run: npm run lint

Notes

Any questions add here

Epic: Landing Page - Header Component

Given I am a user
When I see the landing page
Then I should see a header.

Currently we are incorporating a login button on the top right and a logo on the top left of the Header

Edit home Button

Home button showed the dashboard button even when logged out. the dashboard button should only show when the user is logged in

Optional Task: Add npm audit for security scanning

Concepts

Sub Tasks

test

test

#13 Decide on Frontend CSS Framework
#2 Authentication Spike

Epic: Landing Page - Review

Given I am a user
When I see the landing page
Then I should see reviews from previous clients.

As a potential client looking for credibility, I want to see testimonials and case studies on the landing page to understand the experiences of previous clients and the successful outcomes they achieved.

Epic: Landing Page- Footer Element

Given I am user
When I see the landing page
Then I should see the footer at the bottom which gives me information about contact, about the company, terms and conditions, how my data is used, where your company is located, any associations you are a part of.

As a potential client, I want to easily navigate the service provider website landing page to quickly do my due- diligence to understand if I trust your website

Task1: Karleen- Authenticate with Google

Feature: User Authentication and Login with Google

Scenario: Unauthenticated user clicks sign-in button and fails Google sign-in
Given I am an unauthenticated user
When I click the sign-in button
And I am unable to successfully sign in or create an account with Google
Then I see the homepage

Scenario: Unauthenticated user clicks sign-in button and successfully logs in with Google
Given I am an unauthenticated user
When I click the sign-in button
And I am able to successfully sign in or create an account with Google
Then I see the dashboard

Scenario: Authenticated user returns to the webpage and remains logged in
Given I am an authenticated user
When I leave the webpage
And I come back to the webpage
Then I am still logged in

Technical Task:
Authenticate with Google
Receive the token
Save the token in the browser
Configure redirect url to dashboard

Authentication Spike

Spike Story to investigate options available for App authentication. Time boxed activity terminating on 24 July 2023

Epic: Landing Page - Locations Link

Given I am user
When I see the landing page
Then I should see the locations link with a link to all locations.

As a potential client, I want to easily navigate the service provider website landing page to quickly find the services offered and understand how they can address my needs.

Epic: Landing Page -LogIn Button

Given I am user
When I see the landing page
Then I should see the login button prominently and easily on the site.

As a potential client, I want to easily navigate the service provider website landing page to quickly be able to find the login button on the top right as I am used to

Epic: Landing Page -Experts Loves By Customers

Given I am a user
When I see the landing page
Then I should see a section for highlighting experts which I can trust them.

As a small business owner, I want the landing page to highlight the service provider's expertise, certifications, and awards, so I can trust that they have the necessary skills and qualifications to meet my business needs.

Epic: Landing Page - Tabs

Given I am a user
When I see the landing page
Then I should see some Tabs in the header such as Find / Book / Pay which are links to their page

Epic: Becoming a Service Provider

Given: I am an authenticated user
When: I am on the dashboard
Then: I can see the button for "Sign Up as a Provider"

Given: I am an authenticated user
When: I click on the sign up as a provider
Then: I can select the Subscription Level on the Subscription Page and confirm button

Given: I am a subscribed user and chosen the subscription
When: I am redirected to the Supplier Profile Form where I can fill the required fields
And: I can see the button for "connect my google calendar" and I authorise
Then: The calendar is added and after clicking submit can access the full functionality of the app.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.