|
| 1 | +## Project Purpose |
| 2 | + |
| 3 | +TrackIt was developed to allow simple, effective tracking of tickets. |
| 4 | + |
| 5 | +## UX |
| 6 | + |
| 7 | +### Strategy |
| 8 | + |
| 9 | +Site Objective: Provide platform to track tickets (Bugs and Feature Reqests). |
| 10 | + |
| 11 | +User Needs: Intuitive way to raise and track their issues through to completion |
| 12 | + |
| 13 | +Opportunities/Problems table used to determine the strategic priorities UX efforts should address (in this order): |
| 14 | + |
| 15 | +| Opportunity/Problem | Importance | Viability/Feasibility | |
| 16 | +| ---------------------------------- | :--------: | :-------------------: | |
| 17 | +| A. Track bugs and feature requests | 5 | 5 | |
| 18 | +| B. b | 5 | 5 | |
| 19 | +| C. c | 2 | 4 | |
| 20 | +| D. d | 1 | 2 | |
| 21 | + |
| 22 | +### Scope |
| 23 | + |
| 24 | +#### Functional Specifications |
| 25 | + |
| 26 | +In considering functional specifications, I researched existing ticket and bug trackers, including GitHub issues, placeholder. This helped to identify the key data fields and features users expect to see. |
| 27 | + |
| 28 | +Feature Set: |
| 29 | + |
| 30 | +- Tickets View: Filterable, sortable table of tickets. |
| 31 | +- Raise Ticket: Ability to raise a bug or feature. |
| 32 | +- Edit Ticket: Ability to edit own ticket if submitter, or any ticket if staff. |
| 33 | +- Cancel Ticket: Ability to cancel ticket if submitter, or any ticket if staff. |
| 34 | +- Kanban View: This popular agile tool provides tickets in a more visual way. |
| 35 | +- Dashboard View: Ability to see various charts at a glance. |
| 36 | + |
| 37 | +#### Content Requirements |
| 38 | + |
| 39 | +In order to provide the value of the above features, the following content is required: |
| 40 | + |
| 41 | +- Checkboxes for filtering |
| 42 | +- Dropdowns for sorting and for form input |
| 43 | + |
| 44 | +### Structure |
| 45 | + |
| 46 | +#### Interaction Design |
| 47 | + |
| 48 | +Consistency & Predictability: |
| 49 | + |
| 50 | +- A consistent colour scheme and navigation bar is present throughout the site |
| 51 | +- On smaller devices, navigation links collapse into 'burger' button |
| 52 | + |
| 53 | +Feedback: |
| 54 | + |
| 55 | +All interactive elements provide feedback to the user to encourage interaction and provide confirmation when actions are taken. |
| 56 | + |
| 57 | +- Checkbox labels change colour on hover. |
| 58 | +- Sort by dropdown has border transition on hover. |
| 59 | +- Each record in the table changes background colour and cursor on hover. |
| 60 | +- 'Like' button changes colour on hover. |
| 61 | +- Icons: medal, timer, water temp provide tooltip additional information on hover. |
| 62 | +- Navigation links change colour on hover. |
| 63 | +- Pagination links have background colour change on hover. |
| 64 | +- All buttons have border transition on hover. |
| 65 | +- All buttons have wave effect on click. |
| 66 | +- Form validation exists for relevant fields - field displays red 'Required' if invalid, green if valid. |
| 67 | +- 'Toast' messages are briefly displayed to show confirmation of user actions. |
| 68 | + |
| 69 | +#### Information Architecture |
| 70 | + |
| 71 | +The filtering and sorting panel is located on the left, a logical and intuitive position expected by users. |
| 72 | + |
| 73 | +Pagination |
| 74 | + |
| 75 | +Sections are on separate pages for to aide... |
| 76 | + |
| 77 | +### Skeleton |
| 78 | + |
| 79 | +#### Wireframes |
| 80 | + |
| 81 | +Two sets of wireframes were created in the early development stage to inform the structure and layout for different device sizes. |
| 82 | + |
| 83 | +[Desktop & Mobile Wireframes](placeholder) |
| 84 | + |
| 85 | +### Surface |
| 86 | + |
| 87 | +Colours: |
| 88 | + |
| 89 | +Fonts: |
| 90 | + |
| 91 | +### User Stories |
| 92 | + |
| 93 | +User stories: |
| 94 | + |
| 95 | +- User 1 - "As a user who |
| 96 | +- User 2 - "As a user who |
| 97 | +- User 3 - "As a user who |
| 98 | +- User 4 - "As a user who |
| 99 | +- User 5 - "As a user who |
| 100 | + |
| 101 | +How their needs are met: |
| 102 | + |
| 103 | +- User 1's needs are met by the ability to |
| 104 | +- User 2's needs are met by the ability to |
| 105 | +- User 3's needs are met by the ability to |
| 106 | +- User 4's needs are met by the ability to |
| 107 | +- User 5's needs are met by the ability to |
| 108 | + |
| 109 | +## Features |
| 110 | + |
| 111 | +### Existing Features |
| 112 | + |
| 113 | +- Feature 1: User can view brews and apply filters and sorting. Clicking on a brew reveals additional information, including brewer position, brew time, water temperature and process |
| 114 | +- Feature 2: User can contribute a brew. Range sliders and dropdown boxes were employed for input validation purposes, which is essential for effective filtering and sorting |
| 115 | +- Feature 3: User can edit an existing brew |
| 116 | +- Feature 4: User can delete an existing brew. On click of delete button, a modal is presented to ask for confirmation |
| 117 | +- Feature 5: User can 'like' a brew, which increments the likes count by 1 |
| 118 | + |
| 119 | +### Features Left to Implement |
| 120 | + |
| 121 | +- Potential Feature 1: |
| 122 | +- Potential Feature 2: |
| 123 | +- Potential Feature 3: |
| 124 | +- Potential Feature 4: |
| 125 | + |
| 126 | +## Database |
| 127 | + |
| 128 | +The relational SQL database sqLite was employed. |
| 129 | + |
| 130 | +### Tables |
| 131 | + |
| 132 | +The database has the following tables: |
| 133 | + |
| 134 | +| Field | Type | Description | |
| 135 | +| :------ | :------- | :---------------------------- | |
| 136 | +| \_id | ObjectId | ID is auto-created by MongoDB | |
| 137 | +| barista | String | Name of barista or user | |
| 138 | + |
| 139 | +## Technologies Used |
| 140 | + |
| 141 | +- [Autoprefixer CSS Online](https://autoprefixer.github.io/) : used to add vendor prefixes. |
| 142 | +- [Balsamiq](https://balsamiq.com/) : used to create wireframes. |
| 143 | +- [Bootstrap](https://bootstrap.com/) : used for responsive webpages. |
| 144 | +- [Chrome Developer Tools](https://developers.google.com/web/tools/chrome-devtools) : used extensively to ensure device responsiveness. |
| 145 | +- [CSS3](https://www.w3.org/Style/CSS/Overview.en.html) : styling language. |
| 146 | +- [Favicon Generator](https://www.favicon-generator.org) : used to create a 16x16 icon, displayed next to page title in browser. |
| 147 | +- [Git](https://git-scm.com/) : used for version control. |
| 148 | +- [GitHub](https://github.com) : used to host code repository and to deploy project (via GitHub Pages). |
| 149 | +- [Google Fonts](https://fonts.google.com/) : used for placeholder. |
| 150 | +- [HTML5](https://www.w3.org/html) : used for page structure. |
| 151 | +- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) : |
| 152 | +- [jQuery](https://jquery.com/) : used to select and manipulate HTML elements. |
| 153 | +- [Material Icons](https://material.io/) : used for icons and fonts. |
| 154 | +- [VSCode](https://code.visualstudio.com) : preferred code editor. |
| 155 | +- [W3C Validator](https://jigsaw.w3.org) : used to validate HTML & CSS. |
| 156 | + |
| 157 | +## Testing |
| 158 | + |
| 159 | +Extensive automatic and manual testing was conducted to ensure the site functions and looks well on all major browsers (Chrome, Firefox, Safari, Edge) and device sizes. |
| 160 | + |
| 161 | +### Automated Testing |
| 162 | + |
| 163 | +- placeholder |
| 164 | + |
| 165 | +### Desktop Testing (Manual) |
| 166 | + |
| 167 | +Brew Browser Page |
| 168 | + |
| 169 | +- placeholder |
| 170 | + |
| 171 | +Add Brew page |
| 172 | + |
| 173 | +- placeholder |
| 174 | + |
| 175 | +Edit Brew page |
| 176 | + |
| 177 | +- placeholder |
| 178 | + |
| 179 | +404 Error Page |
| 180 | + |
| 181 | +- When an incorrect URL is entered, 404 Page is displayed with image |
| 182 | +- Return home button takes user back to Home Page |
| 183 | +- Navigation buttons function |
| 184 | + |
| 185 | +### Mobile and Tablet Tests (Manual) |
| 186 | + |
| 187 | +The above Desktop Tests were also conducted on mobile and tablet devices (via Chrome DevTools). In addition, the following mobile and tablet-specific tests were run: |
| 188 | + |
| 189 | +Brew Browser Page (Mobile) |
| 190 | + |
| 191 | +- placeholder |
| 192 | + |
| 193 | +The following tests failed: |
| 194 | + |
| 195 | +| Issue No. | Test Name | Issue | Resolved? | Action Taken | |
| 196 | +| :-------- | :---------------------------------------------- | :--------------------------------------------------------------------------- | :-------- | :----------------------------------------------------------------------- | |
| 197 | +| 1 | Content is not squeezed or overlapping (Mobile) | Brew Browser table has overlapping horizontal content, even with small text. | Yes | Added materialise class 'hide-on-med-and-down' to bean and grinder icons | |
| 198 | + |
| 199 | +### Code Validation |
| 200 | + |
| 201 | +| Code | Result | |
| 202 | +| :-------------------------------------------------------------- | :----- | |
| 203 | +| CSS ([W3C](https://jigsaw.w3.org/css-validator/)) | PASS | |
| 204 | +| HTML ([W3C](https://validator.w3.org/)) | PASS | |
| 205 | +| Javascript with no major errors ([jshint](https://jshint.com/)) | PASS | |
| 206 | +| Python ([jshint](https://pep8online.com/)) | PASS | |
| 207 | + |
| 208 | +^ The following classes of errors were deemed not applicable, as the validator did not take into account Flask and Jinja templating: |
| 209 | + |
| 210 | +## Deployment |
| 211 | + |
| 212 | +### Heroku |
| 213 | + |
| 214 | +The application was deployed to Heroku, via the following steps: |
| 215 | + |
| 216 | +1. Heroku.com > Create new app > App name: aeropress-hub, Region: Europe |
| 217 | +2. Deploy > Deployment method > Link GitHub account |
| 218 | +3. Select repository 'milestone-4' |
| 219 | +4. Select branch: 'master' |
| 220 | +5. Set Config Vars: Heroku Settings > Config Vars: |
| 221 | + - IP: 0.0.0.0 |
| 222 | + - PORT: 5000 |
| 223 | + - !UPDATE! MONGO_URI: mongodb+srv://[user]:[password]@myfirstcluster-bgxgx.mongodb.net/aeropress?retryWrites=true&w=majority |
| 224 | +6. Manual Deploy > Deploy Branch (master) |
| 225 | +7. Heroku Website > Open App |
| 226 | + |
| 227 | +### Local Deployment |
| 228 | + |
| 229 | +1. 'Clone or download' repository from https://github.com/tdunn891/milestone-4, or from command line: |
| 230 | + |
| 231 | + `git clone https://github.com/tdunn891/milestone-4` |
| 232 | + |
| 233 | +2. If your IDE doesn't include a virtual environment, create one (see Python docs: [Creation of virtual environments](https://docs.python.org/3/library/venv.html): |
| 234 | + |
| 235 | + `python3 venv /path/to/new/virtual/environment` |
| 236 | + |
| 237 | +3. Activate virtual environment: |
| 238 | + |
| 239 | + `source /path/to/new/virtual/environment` |
| 240 | + |
| 241 | +4. Install dependencies in requirements.txt via 'pip': |
| 242 | + |
| 243 | + `pip -r requirements.txt` |
| 244 | + |
| 245 | +5. Run app: |
| 246 | + |
| 247 | + `python3 app.py` |
| 248 | + |
| 249 | +6. Go to Local Host in browser to view: |
| 250 | + |
| 251 | + `http://127.0.0.1:5500/` |
| 252 | + |
| 253 | +## Credits |
| 254 | + |
| 255 | +### Content |
| 256 | + |
| 257 | +### Media |
| 258 | + |
| 259 | +Images |
| 260 | +Icons |
| 261 | + |
| 262 | +### Acknowledgements |
| 263 | + |
| 264 | +Tutorials |
| 265 | + |
| 266 | +Big thanks to friends and family for help with testing and feedback. |
0 commit comments