- Trello Board Sprint 1.0
- Trello Board Sprint 2.0
- Trello Board Sprint 3.0
- Trello Board Sprint 4.0
- Trello Board Completion Stage
Visual Representation of my Solution
To create a CRUD application with utilisation of supporting tools, methodologies and technologies that encapsulate all core modules covered during training.
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.
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.
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.
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.
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.
You can see how the items from the 'doing' and 'things to be done' is being moved to 'done'.
This is how my Trello Board looked at the end of week 4.
- 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)
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.
Below is the HTML Coverage Report that was generated using the command "coverage html" on VSCode.
Here is the coverage report which was generated on Jenkins after the automated testing took place.
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.
The three main stuggles faced were getting session in Flask, flashed messages and pytest to work in the way I wanted it to.
- To overcome the problem with session, I copied my entire project onto my laptop and experimented with it.
- For flashed messages, I incorperated a code in html file from the search conducted to get it to work.
- Lastly, for pytest after thorough research and experimenting with my codes, I understood what had to be done.
Thenuja Viknarajah