Flora-King / Kosi_app

0 stars 1 forks source link

KOSI

Table of contents

  1. Helpful links
  2. Introduction
  3. UX Design
  4. Features
  5. User Stories
  6. Templates
  7. Technologies used
  8. Testing
  9. Deployment
  10. References

Helpful links


INTRODUCTION

Kosi is a website app aimed at those looking to book courses. In this instance,

This website app provides an opportunity to users looking for short IT and computer programming courses.

TARGETED USERS:

SCOPE

The scope for the Kosi web app is:

UX DESIGN

The Kosi web app has been built with a simple but highly impactful design.

Kosi web app appearance on all devices

Wireframes

Below are the wireframes I created to aid the initial concept layout planning.

Navbar Wireframe

Register page wireframe

Login page - wireframe

Course List page wireframe

Course content page wireframe

Colour palette used

I chose to use the colour palette below in order to give my web app a simple but trendy look so as to expand its appeal.

Colour palette

Data Schema

The Diagram illustrates the data relationship between the three main entities /models on which the Kosi web app is founded.

ERD Diagram

FEATURES

To achieve the goals and scope of this project, I have implemented the following features

  1. Navigation

Navbar and Footer

  1. Registration

Register Page

  1. Logging in

Log in page

  1. Creating a review and adding a rating

Newly created review awaiting approval

  1. Viewing content

Course List

Course content

  1. Updating reviews and star ratings

Reviews when logged in

Updating a review awaiting approval

Review update completed

  1. Deleting reviews

Ready to delete a review

Review successfully deleted

  1. Viewing notifications/messages
Actions Message
Successful log in Successfully signed in as username
Successful sign up successfully signed in as username
log out successfully logged out
adding a review Review awaiting check
Successful updating a review Review Updated!
Unsuccessful updating of a review Error updating review!
deleting a review Review deleted

USER STORIES

REF No USER STORY TITLE USER STORY DESCRIPTION PRIORITY STATUS SCOPE
18 User login process As a site user I can log into the website so that I can add or update my reviews MUST HAVE DONE IN
10 Account registration As a site user I can register an account so that I can have access to personal profile MUST HAVE DONE IN
15 manage course content As a site admin I can create, read, update, and delete course content so that all the course content is up to date MUST HAVE DONE IN
16 create draft course content As a site admin I can create draft courses so that I can complete writing content later SHOULD HAVE DONE IN
6 View course details As a site user I can view course details so that I can view full course details SHOULD HAVE DONE IN
4 course list pagination As a site user I can navigate easily through the course list so that I can see all courses on different pages of the website SHOULD HAVE DONE IN
11 add a star rating As a site user I can add rating stars against any course so that I share my star rating for a course MUST HAVE DONE IN
12 add a review As a site user I can add a review against any course so that I can share my experience MUST HAVE DONE IN
17 approve posted reviews As a site admin I can approve or disapprove posted reviews so that I can remove subjective or rude commentary MUST HAVE DONE IN
14 view reviews As all users we can view course recommendations details against each course so that we can read reviews left by other users MUST HAVE DONE IN
13 view star ratings As all users we can view star ratings against each course so that we can view courses by star rating MUST HAVE DONE IN
7 Register for a course As a site user I can register for a course so that I can attend that course COULD HAVE NOT DONE Future
8 View my booked courses As a site user I can view courses I have booked/registered for so that I am aware of my course schedule COULD HAVE NOT DONE Future

TEMPLATES

Templates created for this web app include

TECHNOLOGIES USED

TESTING

Usability testing

Responsive testing

Responsive Testing

Lighthouse Test Results

Lighthouse report for Desktop - on Login page

Lighthouse report for mobile - on Login page

Lighthouse report for mobile - on Register page

Lighthouse report for Desktop - on Register page

Lighthouse report for Desktop - on Courses page

Lighthouse report for mobile - on Courses page

Lighthouse report for mobile - on Courses page with perfomace issues

Code Validation

W3C HTML Validator

W3C HTML Validator

The HTML validator also showed a warning regarding a [hr] tag that I used to create a separators between the course content and the reviews container. This doesn’t affect my code and therefore I have left it in.

hr tag information

W3C CSS Validator

CSS Validation results

JS Hint

JavaScript code validation results

CI Python Linter

CI Python Linter results

Features Testing

All features have been tested as part of the User stories testing.

For a detailed view of the manual testing carried out for all the user stories, see the MANUALTESTING.md file

Bugs and issues encountered

  1. The animations on the register and login pages didn't work when app was first deployed to Heroku.

    • solution - added logo image to cloudinary and wrote added cloudinary link to CSS code for background image

Animations did not load deployed to Heroku

  1. CSS style text was visible on course content page

    • solution -manually removed the style text in admin site

style code visible on front end app

  1. There were bad/low accessibility mainly due to images not having alt text

    • solution - added title and alt text in meta data of each image in cloudinary

Accessibility issues

  1. JavaScript console error

JavaScript console bug

Unresolved errors/issues

DEPLOYMENT

  1. Create Repository and set up project in GitHub

    • Create repository in GitHub using provided Code institute template
    • Create Project board and add automated workflow
    • Create user story template and apply it to create user stories
    • Add detailed acceptance criteria to all user stories and priority labels
    • Define the layout of the webapp using wireframing
    • Create tasks against each user story [in separate word document for reference and progress management during build]
  2. Initial setup of the project in gitpod

    • Install Django using (pip3 install 'django<4') command
    • Create project using (django-admin startproject Kosi .) command
    • create new app using (python3 manage.py startapp Kosi_app) command
    • Add new app to installed apps in settings.py
    • Add the following supporting libraries: postgres and psycopg2 - using (pip3 install psycopg2-binary) command
    • Create requirements.txt file - using (pip3 freeze --local > requirements.txt) command
    • Install webserver using (pip3 install gunicorn) command
    • Create the Procfile
    • Create env.py file and make sure it is part of .gitignore file content
      • Add all to requirements.txt
      • Make migrations and migrate
      • Runserver to test set up and commit changes
  3. Set up external Database in ElephantSQL

    • Create account in ElephantSQL using GitHub login details
    • Create new instance with Europe as region
    • Take note of the url for use later when setting up Heroku app
  4. Set up Cloudinary storage for my images

    • Create Cloudinary account using GitHub login details
    • Take note of API and Secret key for use later
  5. Create Heroku app

    • Log into Heroku and create new app
    • Set Europe as region and connect Heroku app to GitHub repository for this project
  6. Connect remote database to Heroku app

    • From the Reveal config vars tab under settings module in Heroku, I added the keys below:
      • Elephant SQL database url,
      • Cloudinary storage url,
      • Postgres url,
      • Secret key,
      • Allowed host value,
      • Disablecollectstatic value
  7. Continue development in gitpod workspace

    • In settings.py file

      • Under installed apps, add Cloudinary app, postgres, crispy forms, summernote, et al.
      • Amend default database url to point to database_url value already set up in Heroku
    • Following the MTV [Models, Templates and Views] architectural guidance

      • Create views in the a views.py file
      • Create a models.py file and add models relating to the views
      • Create admin.py to manage the created models and views
      • Create templates folders and proceed to amend code as needed
      • Create forms.py file
      • Create a urls.py file and add urls relating to the above
      • Create static folder in the root directory to house CSS, js and images folders
      • Add JavaScript code for edit and delete buttons on reviews
      • Create superuser details to access admin site
    • Add all to requirements.txt

    • Make migrations and migrate

    • Runserver to test set up and commit changes

  8. Access admin site and create course content in admin site

    • Add course content
    • check front end web app to ensure course data is presented as needed
      • Add all to requirements.txt
      • Make migrations and migrate
      • Runserver to test set up and commit changes
  9. Continue to amend/tweak code in templates, urls and models in line with scope

    • Add all to requirements.txt
    • Make migrations and migrate
    • Runserver to test set up and commit changes
  10. Deploy to Heroku

    • Ensure all code is structured and runs as desired
    • Change DEBUG value to False
      • Add all to requirements.txt
      • Make migrations and migrate
      • Runserver to test set up and commit changes
    • Log into Heroku app
    • Delete value for DiSABLECOLLECTABLESTATICS
    • Navigate to deploy tab and choose desired deployment method - manual or automatic
      • at this point, I chose to use manual deployment in order to monitor any rising errors before final deployment
  11. Final deployment to Heroku

    • Ensure all code is structured and runs as desired
    • Confirm there are no outstanding migrations
    • Change DEBUG value to False
      • add all code to requirements.txt file
      • make migrations and migrate
      • runserver to test set up and commit changes
    • Log into Heroku app
    • Comfirm the DiSABLECOLLECTABLESTATICS value has been deleted
    • Navigate to deploy tab and choose desired deployment method - manual or automatic
    • Deploy manually to ensure all okay
    • Change the deployment mentod to automatic

REFERENCES