Giter Club home page Giter Club logo

toot'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.

toot's People

Contributors

anoshmalik avatar azadehroshan avatar canarywharf avatar roman-hal avatar youweb3 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

roman-hal youweb3

toot's Issues

View History - Fix Date & Time

USER STORY

As a student
I Want to see the correct date/time of my suggestions
So That I can more easily recall the context of my suggestions

ACCEPTANCE CRITERIA

  • Display date and time correctly on the View History page

Suggestions Page - Hello World

USER STORY

As a student
I Want to access the suggestions page
So That I can start entering phrases to improve

ACCEPTANCE CRITERIA

  • For users with the correct URL, we should show an empty Suggestions page
  • We should give the page a Header, with a title like "Suggestion Generator"
  • We should apply basic styling, e.g. CYF font and colours

#16

Input as speech

USER STORY

As a student
I Want input my query using speech
So That I can get correction for my spoken English

ACCEPTANCE CRITERIA

  • On the Suggestions page, I should be able to click a button to initiate speech input
  • Initiating should start recording the speech into my microphone
  • Once I have stopped speaking, the recording should end
  • We should show Corrected Text in the output box

IMPLEMENTATION NOTES

  • Consider using Speechly or Whisper (Open AI)

Login - Connect to User DB

CONTEXT

Right now our users are not saved properly, so we're not able to give full access to features.

TASK

  • Persist users across sessions by saving to the DB

Suggestions Page - Click to Suggest

USER STORY

As a student
I Want to click to suggest improvements
So That I can receive suggestions

ACCEPTANCE CRITERIA

  • Users should be able to click to initiate their suggestion
  • If the suggestion takes time, we should show a loading message, e.g. "Finding suggestions..."

Implement Cookie Sessions

USER STORY

As a student
I Want the system to remember me when I revisit the app
So That I can continue on my journey easily

ACCEPTANCE CRITERIA

  • We should remember users next time!

Make the Copy button work

USER STORY

As a student
I Want to be able to copy my suggestions with one click
So That more easily take my suggestions away and use them in my work and conversations

ACCEPTANCE CRITERIA

  • When a user clicks the 'Copy' button on the suggestions output box we should save the text to the users clipboard

IMPLEMENTATION

Login - Create & Login with OAuth

USER STORY

As a student
I Want create and login to an account
So That my experience with the app is more personalised

ACCEPTANCE CRITERIA

CREATION

  • From the homepage, users should be able to click a button called 'Create Account'
  • Upon clicking, users should be taken to a Create Account page
  • Users should be able to follow the standard OAuth account creation flow
  • Once the users have confirmed the account they want to log in with, they should be taken to the Suggestions page
  • Users should be able to click 'Cancel' and return to the Homepage

LOGIN

  • If a user already has an account, they should be able to click 'login' and be taken directly to the Suggestions page

PR #47

Homepage - Basic Page

USER STORY

As a student
I Want see basic details about the project
So That I can understand why this tool is useful to me

ACCEPTANCE CRITERIA

  • We should show a headline, including the name of our product
  • We should show a description, explaining what our product does

View History - Auto-reload after delete

CONTEXT

Right now our View History content does not refresh after a user deletes an entry, this leads to a slightly funky user experience

TASK

  • When a user deletes an entry, reload the data within the page

View History - Create Page

USER STORY

As a student
I Want view the history of my suggestions
So That I can find useful phrases to use in my work and conversations

ACCEPTANCE CRITERIA

  • Once logged in, users should be able to navigate to a page called something like 'Correction History'

IMPLEMENTATION NOTES

  • We should consider implementing something like a sidebar navigation to allow users to travel to the separate page

Homework 3

Find additional services and tools we might find useful during the project. Understand:

  • What they are?
  • Why they might be useful for us?
  • How do they work?
  • Are they free?

Audio Ouput - Improve Controls

CONTEXT

Right now our audio output is a little bit clunkly, we want to make it easier to control.

TASK

  • It takes two clicks to start playing audio, we should make this one
  • [SPIKE] We should investigate whether there are any solutions or workaround for the looping problem. If there is - create another ticket to implement.

Homepage - Fix navigation

USER STORY

As a student
I Want see basic details about the project
So That I can understand why this tool is useful to me

ACCEPTANCE CRITERIA

  • We should enable users to navigate correctly to the other pages in the app

Homework 2

##Part 2. Getting Familiar with our project

  1. Read the project brief: https://docs.google.com/document/d/1uhFzu31xJkh0p5OdPbxU7jrGhlzT_ZbKFPKF8S9s1cY/edit

Tip: Take a note of any questions for things you don't understand or ideas for features you might have

  1. Read the developer documentation for each of the services we've been suggested to use - datamuse, worknik, Grammarly, Synthesis
    Tip: Consider how you might integrate these into our codebase and what features you could build with it

https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance
https://www.datamuse.com/api/
https://www.datamuse.com/api/
https://developer.grammarly.com/docs/api/editor-sdk-react/

Login - Login with OAuth

USER STORY

As a student
I Want login to my account
So That my experience with the app is more personalised

ACCEPTANCE CRITERIA

  • From the homepage, users should be able to click a button called 'Login'
  • Upon clicking, users should be taken to a Login page
  • Users should be able to input an email and password
  • Once users have entered an email and password, they can click 'Login',
  • If their account exists and the password is correct, they should be redirected the Suggestions page
  • Users should be able to click 'Cancel' and return to the Homepage

Homework 1

Story

Part 1. Software Development Best Practice Reading

Before Week 1, we want to understand a little bit more info about the theory (Agile) and practice (Scrum) we'll be using to build our product effectively over the next 4-5 weeks. We also want to understand more about what role our product manager/owner plays...

Agile Principles: https://www.youtube.com/watch?v=PD_qJmTMjag
Scrum: https://www.youtube.com/watch?v=9TycLR0TqFA
Product Ownership: https://www.youtube.com/watch?v=502ILHjX9EE

Some things to do:

  • After you watch these three videos discuss the concepts with your teammates
  • Research other videos or articles yourself to discuss
  • Make notes!

Automated Testing v1

CONTEXT

Automated testing is a core part of software development. Implementing in our project will improve the quality of our product and make it easy to make changes without breaking things. It's also a good chance to show off more advanced engineering skills.

TASK

  • Add an E2E with Cypress or Pupeteer

Test Flows

  • Main correction
  • Save to history button
  • Go to history page via button
  • Check history has saved
  • Delete saved item from history

Update font & styling

USER STORY

As a student
I Want I want to see consistent font, styling, and copy across my journey
So That I trust I'm using a reliable, high quality product

ACCEPTANCE CRITERIA

  • Pick and implement a consistent font
  • Update styling to remove inconsistencies
  • Check grammar and spelling of all copy

IMPLEMENTATION

  • USE OUR TOOL TO CHECK THE GRAMMAR!
  • Fonts - CYF uses Lato

Homepage - Make login button work

USER STORY

As a student
I Want create and login to an account
So That my experience with the app is more personalised

ACCEPTANCE CRITERIA

  • Upon clicking 'login', if a user has an account, we should send them to the Suggestions page

PR #47

Components - update

USER STORY

As a student
I Want to use application with minimum errors
So That the application run smooth

ACCEPTANCE CRITERIA

  • Changes and corrections to the use of the components in the application

  • Better use of the components

View History - Basic Table

USER STORY

As a student
I Want create an account
So That my experience with the app is more personalised

ACCEPTANCE CRITERIA

  • On the Correction History page, we should show a table
  • The table should show columns for Orginal Text and Corrections

Suggestions Page - Save to History

USER STORY

As a student
I Want save corrections to my Suggestion History
So That I can store and easily revisit my useful corrections

ACCEPTANCE CRITERIA

  • After a user has successfully generated a correction, they should be allowed to click the 'Save' button
  • If a user clicks 'Save', we should add their correction to the Suggestion History page
  • If the save is successful, we should show a message to the user, e.g. "Your correction has been saved to Suggestion History"
  • If the user tries to save the same correction twice, we should show an error message, e.g. "You've already saved that correction"

IMPLEMENTATION

  • As part of this ticket, we should address the issue of errors occuring upon second save

Create Database Migrations - Login

CONTEXT

We need to run migrations to enable the setup of user accounts and login

TASK

  • Create knex.js migration file
  • Run it against database

Finish About Page

USER STORY

As a student
I Want read About page content
So That understand the purpose of the project and the team behind it

ACCEPTANCE CRITERIA

  • Link to an About page from the navigation
  • We should include an explanation of the project
  • We should include info of the team, name and picture

Suggestions Page - Input Text

USER STORY

As a student
I Want to enter text
So That I can start receiving suggestions

ACCEPTANCE CRITERIA

*We should add a text box that users should be able to type or paste text into

Homework - Part 1

Part 1. Software Development Best Practice Reading

Before Week 1, we want to understand a little bit more info about the theory (Agile) and practice (Scrum) we'll be using to build our product effectively over the next 4-5 weeks. We also want to understand more about what role our product manager/owner plays...

Create Routing - Login, Logout user

USER STORY

As a student
I Want to use application only when logged in
So That have access to the application with my user details

ACCEPTANCE CRITERIA

  • After a user start the application the user cant access without login

  • The user cant access any other page on the app without login

  • User get into the application home page after successful login

  • User has no access to the login page if logged in

  • User has access to about page without login or when logged in.

PR #52

Corrections in the app

USER STORY

As a student
I Want to use application with minimum errors
So That the application run smooth

ACCEPTANCE CRITERIA

  • Changes and corrections to the code of the application

PR #55

Suggestions Page - Show Suggestion

USER STORY

As a student
I Want to see a suggestion
So That I can take my text away to improve my written English

ACCEPTANCE CRITERIA

  • We should retrieve a suggested improvement from our 3rd party
  • If successful, we should show the new improved phrase in an output box
  • The output box should be labelled, e.g. "New Phrase"
  • If we fail to retrieve a suggestion, we should show an error message, e.g. "Suggestion failed, please try again"

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.