LauraMayock / The-happy-reader

0 stars 1 forks source link

The happy Reader - Project Portfolio 4

The happy Reader

The Happy Reader is a Children's Book Search and Review website for users who would like to look up book reviews to help them decide the next book best suited for their child and, in turn, to leave reviews on books to help others. Hopefully, this helps your child grow a love for books that will last through out their life.

You can view the live site here - The happy reader

User Experience (UX)

Site Aims

Agile Methodology

The Agile Methodology was used to plan this project. This was implemented through Github and the Project Board, which can be seen here - The happy reader Project

Through the use of the Kanban board in the projects view in Github, the project was divided into a few different sections:

Kanban board github Layout.

Github issues were used to create User Stories and any other Fixes or Updates for the project. This is where the project user was assigned; labels were added to show at a glance importance of tasks and help prioritize jobs. User story was added to the appropriate Iteration and the project. Each User Story, Fix or Update had a clear title, acceptance criteria and smaller tasks (if applicable).

Milestones were used to create Iterations. There were 3 Iterations, each dated appropriately. User Stories were completed based on the current Iteration that was in progress.

User Stories

Iteration 1

Iteration 2

Iteration 3

Still in backlog for future features

Design Wireframes

Low fidelity mobile wireframes ![Home Page](/the_happy_reader/Docs/Mobile/Mobile-landing%20page.png) ![Blog post](/the_happy_reader/Docs/Mobile/Mobile-%20Blog%20post%20when%20clicked.png) ![Signup Page](/the_happy_reader/Docs/Mobile/Mobile-%20Sign%20Up.png) ![Login Page](/the_happy_reader/Docs/Mobile/Mobile-%20Login%20page.png) ![My Books](/the_happy_reader/Docs/Mobile/Mobile-%20List%20of%20saved%20books.png) ![Contact Page](/the_happy_reader/Docs/Mobile/Mobile-%20Contact.png)
Low fidelity tablet wireframes ![Home Page](/the_happy_reader/Docs/Tablet/Tablet-landing%20page.png) ![Signup Page](/the_happy_reader/Docs/Tablet/Tablet-%20Sign%20up.png) ![Login Page](/the_happy_reader/Docs/Tablet/Tablet%20-%20Log%20in%20page.png) ![Blog post](/the_happy_reader/Docs/Tablet/Tablet-%20Blog%20post%20when%20clicked.png) ![My Books](/the_happy_reader/Docs/Tablet/Tablet-%20List%20of%20saved%20books.png)
Low fidelity Desktop wireframes ![Home Page](/the_happy_reader/Docs/Tablet/Tablet-landing%20page.png) ![Signup Page](/the_happy_reader/Docs/Tablet/Tablet-%20Sign%20up.png) ![Login Page](/the_happy_reader/Docs/Tablet/Tablet%20-%20Log%20in%20page.png) ![Blog post](/the_happy_reader/Docs/Tablet/Tablet-%20Blog%20post%20when%20clicked.png) ![My Books](/the_happy_reader/Docs/Tablet/Tablet-%20List%20of%20saved%20books.png)

Database Schema

Database layout using Lucidcharts ![Database Schema](/the_happy_reader/Docs/Org%20chart.png)

Site Structure

On the first view, The Happy Reader website has four pages visible from the navigation bar; the Age group drop-down filters the correct information onto the page, which is only accessible from the home page. Sign-in and log-in are available on the first landing and a contact us page. Two other pages are available on the nav bar when the user signs in. These are View reviews and Add a review. In the View Reviews page, you can choose one of the reviews you previously created to either amend or Delete. This ensures that only authorized users can add or amend information from the database.

The Home page, Log-in, Signup Age group and Contact pages can be accessed by all users. Once a user logs in or signs-up, they have access to the Reviews dropdown that shows Add review or see reviews. The Signup page is removed from the navbar once the user logs in, and the log-in page is changed to a log-out page.

Design Choices

Color Scheme

The color scheme chosen was a dark, almost black colour with white contrast and a bright green used as highlights. I chose colours that would allow the imagery to stand out.

Site colour scheme

Typography

One font was chosen for this website, and that was Source Sans Pro from google fonts. It is clear and simple to read.

I also chose Kalam for the Logo on both the Navbar and Footer.

Back to top

Features

Navigation

Home Screen

Age group dropdown Desktop Page

Log In Page

Log In page desktop

Sign Up Page

Sign Up page desktop

Log Out Page

Log out page desktop

Create a Review

Review page

Not logged in to review

Review added alert

Veiw Reviews

Navbar Your reviews

Delete a review

Delete page

Contact

Contact desktop page

Contact mobile page

Back to top

Future Features

Search Bar

In a future integer, I would like to add a search bar on the main screen to make it easier to search specifically for book titles or authors. This will help ensure that users are not adding more reviews on the same book.

Social Media Login

For ease of use, users could use their social media credentials to log in rather than creating another password to remember.

User Profile Page

A user profile page to include the ability of the user to add saved reviews in categories to organize them; for example, Read Again or Must Read or Read. To show all comments they have made on other reviews.

The page could also provide more user details that could also be added to the user profile in general. Such as a profile picture or avatar that could be utilized in their reviews, and the total number of books they have reviewed or bookmarked could be visible on their profile. As well as specifying the age of the children they are browsing for.

Genre section

A genre section so that books can be chosen on the bases of the child's interests or an underlying lesson you would like the child to learn about.

Upload images

The user to be able to upload their own images via the 'add review' form. Back to top

Technologies Used

Back to top

Testing

Validation

Html Validation

Html validation was done with https://validator.w3.org/nu/. The deployed link from the site was used the below errors were highlighted.

HTML VALIDATION

After researching the error message I learned on Slack that this issue was caused by a closing tag being in the wrong place. It needed to be placed after.

CSS Validation

The stylesheet was validated using https://jigsaw.w3.org/css-validator/

Stylesheet validation

Python Validation

Python code was validated using Code institues Python validator

Only minor errors such as missing blank spacing or whitespace. These were rectified easily.

Javascript Validation

Javascript was validated using jshint

Apart from minor errors such as semicolans missing the validations was a success. All minor errors were delt with easily.

Lighthouse Testing

Home page

Lighthouse testing Lighthouse testing Most pages scored hight. The ligth house testing came up quite poor especially in the Preformance section and Best Practice.

Lighthouse final results desktop Lighthouse final results mobile

Age page

Lighthouse age page

Manual Testing

In addition to the other tests, I have conducted a manual check list for myself to carry out to make sure that everything is working as intended.

Status Navigation Bar - User Logged Out
Clicking the navbar logo loads the home page
That the navbar shows the tabs Home, Bookshelf, Login, Signup and Contact if the user is logged out
Clicking the Home tab on the navbar loads the home page
Clicking the Bookshelf tab on the navbar loads the bookshelf page
Clicking the Login tab on the navbar loads the login Page
Clicking the Signup tab on the navbar loads the signup page
Clicking the Contact tab on the navbar loads the contact page
Status Navigation Bar - User Logged In
Clicking the navbar logo loads the home page
That the navbar shows the tabs Home, Bookshelf, My Books, Logout and Contact if the user is logged in
That the navbar shows the username of the logged in user and that clicking this leads to the user My Books page
Clicking the Home tab on the navbar loads the home page
Clicking the Bookshelf tab on the navbar loads the bookshelf page
Clicking the My Books tab on the navbar loads the user's my books Page
Clicking the Logout tab on the navbar loads the logout page
Clicking the Contact tab on the navbar loads the contact page
Clicking user's username in the navbar loads the user's my books page
Status Footer - User Logged Out/In
Clicking the youtube icone loads the youtube home page in a new tab
Clicking the instagram icon loads the instagram home page in a new tab
Clicking the facebook icon loads the facebook home page in a new tab
Clicking the twitter icon loads the twitter home page in a new tab
Status Home Page - User Logged Out
That a Login and Signup button appear in the hero section
Clicking the Login button in the hero section of the home page loads the login page
Clicking the Signup button in the hero section of the home page loads the signup page
Status Home Page - User Logged In
That a Welcome text appears with the user's username in the hero section
That an 'add reviews' and 'Your reviews' button appears below the welcome text
That the 'Your reviews' button loads the user's reviews page
Status Age range Page
That the page reflects the age range chosen
That they are approved books.
That the book listing card shows the book image and an excerpt of the book blurb
Status Log In Page - User Logged Out
Clicking the sign up link above the user input loads the sign up page
That the username input field is required
That the password input field is required
That if the username does not match the password the user cannot log in and user feedback is provided
That if the correct credentials are given the user is logged in when the log in button is clicked
That when the user is logged in they are redirected to the the home page and an alert message informs the user that they logged in successfully
That when the user is logged in successfully their username will appear in the navbar indicating their logged in status
Status Log In Page - User Logged In
That the user cannot access the login tab from the navbar if they have logged in
Status Sign Up Page - User Logged Out
Clicking the log in link above the user input loads the log in page
That the username input field is required
That both password input fields is a required field
That if you provide a username and password that is too similiar that the user cannot sign up and user feedback is provided
That if your password doesn't match in both password fields, the user cannot sign up and user feedback is provided
That if the user provides a password less that 8 character, the user cannot sign up and user feedback is provided
That if you provide a good username and password but the email field does not contain a proper email address, the user cannot sign up and user feedback is given
That the email input field is optional
Clicking the Sign Up button signs the user up and logs the user in if the correct user information was provided for sign up
That when the user signs up, they are redirected to the home page and an alert message informs the user that they sisgned up successfully
That when the user signs up and is logged in successfully their username will appear in the navbar indicating their logged in status
Status Sign Up Page - User Logged In
That the user cannot access the signup tab from the navbar if they have logged in
Status Log Out Page - User Logged Out
That the user cannot access the log out tab from the navbar if they have logged out
Status Log Out Page - User Logged In
Clicking the logout button logs the user out
When the user logs out they are redirected to the home page and a message alerts the user that they have logged out
Once the user logs out the username in the navbar is removed
Status Add a review - User Logged In
That the Title input field is required
That the Book Author field is required
That the Age Range field is required
That the Genre Range field is required
That the Book Blurb field is required
That the review field is required
That the form cannot be submitted without all the required fields and user feedback is given if a user forgets a required field
That none of the input fields accept empty fields
That none of the fields accept just spaces in an input field
That when the form is submitted a book slug is automatically created from the title and book author input fields in the form
That when the book is added, the user is redirected back to the 'Your Reviews page and a message alert informs the user that they successfully added a book and it's waiting for approval
That when a book is added it is automatically set as unapproved (False) until changed otherwise (to True) by an admin
Status User Edit Review Page - User Logged Out
That if the user tries to access the edit review url they recieve a warning.
Status User Edit Review Page - User Logged In
That the user can see the book title of the review they are updating
That the user can see their username name in the posting as section
That the user can see the review input field is already prepoulated with the review as it currently is
That review input field is required and cannot be submitted empty or with just spaces
Clicking Update Review, updates the review, changes the status of the approval to False again, and redirects the user back to the My Books page
That the an alert message informs the user that their review has been updated and is flagged for approval
Status User Delete Review Page - User Logged Out
That if the user tries to access the delete review url that they will receive a error message.
Status User Delete Review Page - User Logged In
That the user can see the book title and review details of the the review they would like to delete
Clicking the Delete button redirects back to the My Books page
That an alert message informs the user that they successfully deleted their review
That the review is completely deleted and doesnt show up in the database or subsequently any place on the website
Status Contact Page- User Logged Out/In
That First Name input field is required
That Last Name input field is required
That Email input field is required
That Message input field is required
That none of the fields can be submitted blank
That the email field only accepts proper email syntax (@ symbol has to be present)
That none of the fields can accept just blank spaces
That user feedback is provided if none of the required criteria to sub,it the form are met
Clicking the Send button sends the email to the Dummy Email account set up via EmailJS, that the user is redirected to the contact page.
That an alert message informs the user that their message was sent successfully upon the user sending the message

Bugs

env.py deleting

I tried to open a new workspace by and then deleted the old workspaces which caused my env.py not to appear on my new workspace. I created an new env.py and it fixed the issue but by fixing it i lost of the work i had done.

Initial deployemnt

Error when deleting table from database

delete from database

Sticky footer.

Add a review form had a drop down for review author.

This bug allowed others to create a review in others name.

Heroku deployment issues.

H10 heroku bug

Deployment

Deployment to Heroku

1. Creating the Django Project

2. Create your Heroku app

3. Set up Environment Variables

4. Setting up settings.py

5. Heroku Deployment:

6. Final Deployment

In the IDE:

To fork the repository on GitHub

A copy of the GitHub Repository can be made by forking the GitHub account. Changes can be made on this copy without affecting the original repository.

  1. Log in to GitHub and locate the repository in question.
  2. Locate the Fork button which can be found in the top corner, right-hand side of the page, inline with the repository name.
  3. Click this button to create a copy of the original repository in your GitHub Account.

To clone the repository on GitHub

  1. Click on the code button which is underneath the main tab and repository name to the right.
  2. In the 'Clone with HTTPS' section, click on the clipboard icon to copy the URL.
  3. Open Git Bash in your IDE of choice.
  4. Change the current working directory to where you want the cloned directory to be made.
  5. Type git clone, and then paste the URL copied from GitHub.
  6. Press enter and the clone of your repository will be created.

Back to top

Credits

Back to top

Acknowledgements

This website was designed and developed in conjunction with the Full Stack Software Developer Diploma course (eccommerce) at the Code Institute. I would like to thank my family, my cohort facilitator, the members of our cohort, the Slack community and Code Institute for all their support.

Back to top