GithubHelp home page GithubHelp logo

sfia_project_1's Introduction

Index

Brief

ERD and Diagrams

Sprints & Planning

Testing Methadology

My Deployment Method

Visual Representation of my Solution

Retrospective

Authors

The Product Brief

To create a CRUD application with utilisation of supporting tools, methodologies and technologies that encapsulate all core modules covered during training.

Solution

I created a blogging site using Flask and Bootstrap for Front-End and Python, Jinja and SQL for the Back-End. The website is for users to voice their opinion on matters online without the worry of being judged. Users also have access to see the posts written by others on the site but are only able to edit and delete their own work.

ERD and Diagrams

Initial Entity Relationship Diagrams

Initial ERD

My initial idea was to make a site for users to come and plan their outfits. But after pitching my idea to my trainer (Syed) and thorough research, I realised it would be difficult to get the user to upload images onto the site as that would require extra effort from the user.

As I wanted to keep my idea simple and user friendly, I decided to build a blog instead. The relationship between the user to post is 1 to Many as one user can create many posts. As I required two tables and user isn't considered one, I added a tag table, which had a 1 to Many relationship with the posts. As for each post, many tags can be added.

Final Entity Relationship Diagrams

Final ERD

Risk Assessment

Risk Assessment Table

Risk Assessment Table Risk Assessment Table Part 2

Kanban / Requirements / Product Backlog

As seen below I have created a priority list where all the requirements of the project are listed, I used a colour labelling method On Trello to make sure that each requirement had its own importance category.

Kanban Labels

User Stories (Users and Developers)

The user stories were also done in trello to be an indication to me of what I want to aim for and provide to the user. It improved my planning and encouraged me to stay on the right path without drifting into complexity. In addition to the image of my user stories, I attached the key for my sprints.
UserStories Labels

Trello Board

This is my Trello Board at the beginning. I based the sprints on our weekly target goals for the project so each sprint lasted a week. Trello Image Before

Trello Board (Sprint 1)

Trello Image

Trello Board (Sprint 2)

Sprint 2 Image

Trello Board (Sprint 3)

Sprint 3

Trello Board (Sprint 4)

You can see how the items from the 'doing' and 'things to be done' is being moved to 'done'. Sprint 4

Completion

This is how my Trello Board looked at the end of week 4. Completion

List of Technologies Used

  • MySQL for Application Database
  • Python - Coding in Flask
  • Flask - Framework
  • Jenkins - CI Server
  • Testing - Pytest
  • Github Project - Version Control System
  • Trello Board - Project Tracking Board
  • Google Cloud Platform Services (MySQL DB, Compute Engine, firewall)

Testing Methodology

I decided to use pytest to run my tests, mostly checking database and url is functioning correctly. I automated testing and deployment using Jenkins. I made sure the test was done first before the application was deployed as a service.

Testing Report (Pytest Generated HTML)

Below is the HTML Coverage Report that was generated using the command "coverage html" on VSCode. HTML Coverage Report HTML Coverage Report

Testing Report (Generated after automated Jenkins Test)

Here is the coverage report which was generated on Jenkins after the automated testing took place. Jenkins Coverage Report

Deployment

Deployment Pipeline The Deployment pipeline for this Flask application was done using Git/Github for version control and automating that process using webhooks with Jenkins, the process would then go into automatically triggering the testing phase which I did using Pytest on a VM running Jenkins, after the tests Jenkins will be triggered into the build process - where if the testing was successful, Jenkins will then build and deploy the app as a service.

Front End Visual Representation of my Solution

Homepage before login

HomePage

Homepage after login

HomePage

View Post (Clicked into)

Advert View

Abouts Page

Abouts Page

Login Page

Login Page

Register Page

Register Page

User Registered!

Register new user

User Logged in

User Logged In

Viewing User created Ad (Users can only edit and update their own ads)

User Ad view

Create Adverts Page

Create Ad Page

Create Tag

Create Tag

Deleted Account

Deleted Acc

Retrospect

The three main stuggles faced were getting session in Flask, flashed messages and pytest to work in the way I wanted it to.

  1. To overcome the problem with session, I copied my entire project onto my laptop and experimented with it.
  2. For flashed messages, I incorperated a code in html file from the search conducted to get it to work.
  3. Lastly, for pytest after thorough research and experimenting with my codes, I understood what had to be done.

Authors

Thenuja Viknarajah

sfia_project_1's People

Contributors

thenu97 avatar

Watchers

James Cloos avatar  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.