Git Product home page Git Product logo

tadhgnolan-not-read-it_resub's Introduction

Not Read It

Device Mockup Image

by Tadhg Nolan

Live Site

Table of Contents

  1. Intro
  2. Technologies
  3. Features
  4. Testing
  5. Credits
  6. Deployment

Intro

  • Not Read It is a socail media website similar to Reddit.

Design

UX

An Agile methodology was used in planning the project utilising Github's Project kanban. Issues were used to create user stories. When work began on a user story, it was moved to the "In Progress" column. When the task is complete, it is moved to the "Done" column. A collumn named Future Features is used for prospective features for the website and for any features that were not complete by the project deadline.

UI

Wireframe Images


Wireframe Image 1

Wireframe Image 1

Wireframe Image 1


Entity Relationship Diagram


ERD Image

User Stories

  • View Post List: As a Site User I can view a list of posts so that I can select one to read. #2
  • Open a Post: As a Site User I can click on a post so that I can read the full text. #3
  • Manage Posts: As a Site User / Admin I can create, read, update and delete posts so that I can manage my content on the website. #5
  • Account Registration: As a Site User I can register an account so that I can comment and like. #8
  • Site Navigation: As a Site User I can easily navigate the site using the navbar or get back to the home page by clicking the logo. #14
  • Select Category: As a Site User / Admin I can select a topic category when creating a post. #15
  • Categories: As a Site Admin I can create, view, update and delete categories on the website. #16

Technologies

Languages

Other Technologies and Libraries

Features

Existing Features:

Registration Page - allows new users to register an account with username and password.

Registration Page Image

Login Page - registered user can login.

Login Page Image

Home Page - usersers can view list of posts.

Home Page Image

Add post - registered users can add new posts, enter a title and select a category from a drop down menu.

Add Post Page

Update post - registered users can update their existing posts.

Update Post Page

Delete post - registered users can delete their existing posts.

Delete Post Functionality Image

Admin functionality - admins can add, update and delete categories.

Admin Functionality Image

Features Left to Implement

Like / Unlike: As a Site User I can like or unlike a post so that I can interact with the content.

View Likes: As a Site User / Admin I can view the number of likes on each post so that I can see which is the most popular or viral.

Comment on a Post: As a Site User I can leave comments on a post so that I can be involved in the conversation.

Approve Comments: As a Site Admin I can approve or disapprove comments so that I can filter out objectionable comments.

View Comments: As a Site User / Admin I can view comments on an individual post so that I can read the conversation.

Category List: As a Site User I can view a list of categories so that I can view posts within.

Testing

Manual testing

  • Manually testing each each path.

Manual Test of post paths


Manual Test Image


  • Repeated real world testing performed with:

Google Pixel 3aXL (2160 × 1080px)


Pixel 3aXL Image 1 Pixel 3aXL Image 2


Nokia 3 (720 x 1280)


Nokia 3 Image 1 Nokia 3 Image 2


Lenovo Ideapad Duet Chromebook (1080 x 1200px)


Laptop mode

Chromebook Laptop Mode Image 1 Chromebook Laptop Mode Image 2

Tablet mode

Chromebook Tablet Mode Image 1 Chromebook Tablet Mode Image 2


Desktop PC (1920 x 1080px + 2560 × 1440) representing a mixture of age plus hardware capability & were readily available.


1920 x 1080px

1920 x 1080px Image 1 1920 x 1080px Image 2


2560 x 1440px

2560 x 1440px Image 1 2560 x 1440px Image 2


In Chrome Dev Tools, tested repeatedly with all available presets

This functionality testing involved:

  • Verifying all navbar & other links functioned as expected.

iPhone X


iPhone X Image


Samsung Galaxy S20 Ultra


Samsung Galaxy S20 Ultra Image


iPhone 6/7/8


iPhone 6/7/8 Image


  • Using Chrome Dev Tools Elements tab to test out small styling changes before adding.

Dev Tool Styling Image 1

Dev Tool Styling Image 2

  • Checking that fonts scaled correctly for each display size.

Font Scaling Image

  • Checking for overflow.

Checked for overflow using Unicorn Revealer

Overflow Image

Validator Testing

Initiallyfound one HTML error, missing lang element in HTML Tag. Resolved Issue. Remaining errors due to Django.

HTML Validator Image 1 HTML Validator Image 2

CSS Validator Image

Lighthouse Score

Lighthouse Score Image

Unfixed Bugs

CSS MIME bug. Unable to resolve

Mime Bug Image

Removed DISABLE_COLLECTSTATIC config vars from Heroku which removed one of the errors. Error may be a conflict with WhiteNoise. Previously used Cloudinary, but removed any reference from settings and removed from env.py when error occured.

The live deployed application can be found at not read it.

Heroku Deployment

This project uses Heroku, a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

Deployment steps are as follows, after account setup:

  • Select New in the top-right corner of your Heroku Dashboard, and select Create new app from the dropdown menu.
  • Your app name must be unique, and then choose a region closest to you (EU or USA), and finally, select Create App.
  • From the new app Settings, click Reveal Config Vars, and set the following key/value pairs:
    • DATABASE_URL (this comes from the Resources tab, you can get your own Postgres Database using the Free Hobby Tier)
    • SECRET_KEY (this can be any random secret key)

Heroku needs two additional files in order to deploy properly.

  • requirements.txt
  • Procfile

You can install this project's requirements (where applicable) using: pip3 install -r requirements.txt. If you have your own packages that have been installed, then the requirements file needs updated using: pip3 freeze --local > requirements.txt

The Procfile can be created with the following command: echo web: gunicorn notreadit.wsgi > Procfile

For Heroku deployment, follow these steps to connect your GitHub repository to the newly created app:

Either:

  • Select "Automatic Deployment" from the Heroku app.

Or:

  • In the Terminal/CLI, connect to Heroku using this command: heroku login -i
  • Set the remote for Heroku: heroku git:remote -a <app_name> (replace app_name with your app, without the angle-brackets)
  • After performing the standard Git add, commit, and push to GitHub, you can now type: git push heroku main

The frontend terminal should now be connected and deployed to Heroku.

Local Deployment

Gitpod IDE was used to write the code for this project.

To make a local copy of this repository, you can clone the project by typing the follow into your IDE terminal:

  • git clone https://github.com/tadhgnolan/not-read-it.git

You can install this project's requirements (where applicable) using: pip3 install -r requirements.txt.

Alternatively, if using Gitpod, you can click below to create your own workspace using this repository.

Open in Gitpod

Additionally, you'll need to create your own env.py file with the following keys:

  • SECRET_KEY (can be any secret value)
  • DATABASE_URL (this comes from the "Resources" tab on your Heroku app)

Credits

  • A social media site designed by Tadhg Nolan

Content

  • Django Blog Used and modified code from this Github repository.

Sites Used

Special Thanks

  • Cormac Nolan - Feedback and advice.
  • Tim Nelson - Mentor.

tadhgnolan-not-read-it_resub's People

Contributors

tadhgnolan avatar

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.