Saturday 31 October 2020

Sprint 20 More work on expenses

Completing the expenses workflow

Added a way for the treasurer to view expenses and mark them as noted.  After talking to the club treasurer it was decided that there shouldn't be two types of expense, so I consolidated by removing the fuel expense submission form the car.  I extended the trip expenses to provide a category, so now all expenses can be submitted from the same place, removing any confusion.

Here is the screen to submit the expenses:


And here is the screen that the treasurer can use to view expenses and mark them as noted.


Application Icons

I noticed that the application icons were not being displayed on some platforms.  On Windows based browsers, it was fine, but missing on MacOS, iOS and Android.

I found this great website that automatically generates all of the icons needed for each platform and all the supporting files.  It also had a test facility that check that everything was in place.  

Open Trialling

The open trialling has been going for nearly a month now and has been a really good source of feedback about the app.  All three section reps have created a trip and advertised it on the forum.  37 members have signed into the app.  Here are some statistics.

Business:

No of trips created: 5
No of groups: 10
No of members on trips: 25
No of cars: 19
No of club boats booked: 23

Transactional:

Requests: 3.3k
Dependency Hits: 38k




Sunday 25 October 2020

Sprint 19 Treasurer features

Deposits

Added a feature where groups can be set up as needing a deposit.  The treasurer can then approve the user once the deposit has been received.

Below, the 'beginners' group has been set up as needing a deposit.


The deposit icon will remain 'unlit' until the treasure marks as paid.


Here is the screen that the treasurer uses to mark a deposit as paid.



Expenses

Added two types of expenses:

  1. Fuel expenses.  These can be added to a vehicle by the diver
  2. Trip expenses.  These can be added to the trip by anyone that was on the trip
These will be then made available to the treasurer when doing the accounts for the trip.

Links in the description

Angular automatically sanitises any html that is injected into the page.  Here is an article about the security implications of this approach.  For simplicity, users can add html anchors to add links.



Add a tag to the additional details


Embeds a link into the additional details.


Friday 16 October 2020

Sprint 18 Bug fixing and fine tuning

Open Trialling

This month saw the open trialling of the application.  Section Reps created trips which they advertised on the club forum.  Members could then sign up for these 'imaginary' trips.  The forum threads were then left open for feedback.  

This has been a successful and valuable exercise.  As well as identifying and fixing a couple of bugs, I also identified a number of functional fine tunings that would make the app easier to use, simpler and more intuitive.

Fine Tunings

  • Links to trips on the access report.  This was requested my the equipment officer as it is now not as simple to just find the trip.
  • Move miscellaneous kit booking to the equipment booking tab.  This was requested by a couple of members and I agree that this location makes more sense.
  • Automatically add boat to car for the driver.  I noticed that drivers were not doing this additional step which would be the correct action most of the time.
  • Set general stars to the highest discipline specific stars.  There are a couple of members that have discipline specific star awards but no general awards.  This looks strange on general paddling trips so put in some logic address this.
  • Add 'Full' status bars to trip and groups that are full.  This was requested by a member who took the last place on a group.
  • Altered the working for travelling independently to only be used when no basin access is required.  This should encourage those travelling from non-nearby locations to still put there car into the car share.
Bugfixes

  • Login failed when user had a certain combination of star awards.  This was a straightforward coding bug.
  • User joined a trip but didn't display the updated trip.  This was a specific scenario that has now being fixed.

Saturday 3 October 2020

Sprint 17 Boat Image Uploads and Live Trialling

Boat Image Uploads

I've tried to keep this very simple for the time being.  It allows equipment officers to upload a single image for a boat and will replace an existing image.   This is to keep the image storage as small as possible.  I've also not included any image manipulation.  This will be the responsibility of the equipment officers to crop the images so that they have a 16:9 aspect ratio.  I felt that it would be better to let the officers do this manually and verify that the results show the boats correctly than rely on an automated crop.

Live Trialling

I've sent an email out to the section reps with instructions on how to create an imaginary trip.  The plan is for the reps to create a 'typical' trip that the members can sign up for and try out all the features.  The reps can then 'advertise' the trip on the forum so we can see how the application handles the trip planning process, identify an issues or missing features

I've set up an advertised an example imaginary trip and posted on the forum.  Awaiting the section reps' trips to be advertised. 

Boat Image Uploads Update

Switched to using an image cropper component to ensure that images are uploaded as 16:9 aspect ratio.

To use this I needed to be able to convert from a data URI to an IFormFile (Blob).  This article contains function code to do this. 

For the test I used a blank image.

Friday 25 September 2020

Sprint 16 Adding groups, cancel trips and booking non club boats

Adding Groups

Two feature requests were made to extend groups so that new groups could be added and/or groups could have unlimited numbers.  I decided to just implement the add a group feature as this would effectively give unlimited groups.

Cancel Trip

This is a feature that I hope wouldn't be used, but is required in the cases that the weather is not good or other out of our control events that require the trip to be cancelled.

Booking a non-club boat

I've added non-club (SBOAC) boats to the inventory so that they can be booked.  A confirmation pops up to remind the member that they need to pre-arrange bookings of these craft.

Uploading Pictures

I've decided to use Azure Storage to store pictures rather than use a 3rd party image storage and manipulation service.  I'll design it is such a way that this can be replaced at a later date if necessary.  I want to stay within the Azure ecosystem to keep the deployment simple with terraform.


Saturday 19 September 2020

Sprint 15 Forum integration, Private Trips and Miscellaneous Kit

Forum Integration

First of all I needed to introduce login redirect so that once the member has logged in, it would automatically redirect to the page specified by the link. This was achieved quite simply by storing the url and then routing to it after a successful login.

The next step was to isolate specific parts of the system so that they are self contained and didn't leak into each other.  When a data load failed, rather than redirect to the trips page, it would redirect to an error landing page that said 'try again later'.

Finally, I needed to restrict the trips page to just the club officials.  This would then force members to look at the forum to find out about new trips.  Instead of this being the logged in home page, a new console page was created to provide default links to the isolated parts of the system.

Private Trips

Private trips are a cut-down version of club trips.  The differences are as follows:

  • Members cannot join a private trip, they are added by the organiser
  • Managing groups is not provided in private trips
  • Providing additional trip information is not provided in private trips
  • Car share is provided so that basin access can be requested

Screen to create a new private trip:


Once the private trip has been created, the organiser can then add members in as participants:




Miscellaneous Kit

After discussing this with one of the equipment officers, we decided to handle this with a free text field that the participant can edit. A new field has been added to the participant notes edit form.

And displayed on the participant summary:


What next

The next step is to do a full club trial with this version of the application.  This will be a forum integrated test where I ask the club reps to create 'imaginary' trips that can then be advertised on the forum and all club members can sign up for.  This will be taking the trialling to the next level and ironing out any issues with the app or the processes.

Friday 4 September 2020

Sprint 14 Inventory Management

Inventory Management

Back in 2017 I created demo called BoatInventory which I showed to people at the kayaking club.  It was purely a database application where people could search our boat inventory.  I got some good feedback and people thinking about how a booking system could work.  Well, around 3 years later, I've finally added this functionality to BoatTrippy to make the demo obsolete! 

A key part of this functionality is the Inventory Management that the Equipment Officers can use to manage the boats.  Here are the new features:

Add New Inventory Item

Update an existing Inventory Item

Retire an Inventory Item

Fault Management

Also I've completed the fault / damage reporting and resolution workflows.  This now allows any member to report a fault, but only the equipment officers to mark as in repair and then resolve the report.  

There are two ways this can be used. 1) Mark as in repair which will stop people booking the boat until resolved.  This is for more serious faults that make the boat temporarily unsuitable for trips.  2) Resolve without marking as in repair. This is where the fault doesn't stop the boat being used on a trip.   

Integrated / embedded usage

This week I had a conversation with the club chair about the potential issue of the members not reading messages on the forum as they spend more time on the new application.  This is a valid point as the app is not intended to be used for general messages and discussions, particularly around club nights and SBOAC issues.

My intention is for the application to be used 'from the forum' rather than 'instead of the forum'.  I'll be doing some work in the next sprint to ensure that each of the workflows work from a single route (url) which can be reached from the forum.  

This means that we will remove the menu at the top of the application.  The parts of the application will only be accessible from direct links and login will redirect to these direct links.  If someone logs onto the app directly, they will land on their profile page where officers will have access to their console.  standard members. Any failures will be routed to a standard failure page where the user can report this to admin.