Skip to content

Team AV - Scubamate is a scuba diving companion app, designed to aid divers, and diving instructors with administrative tasks, such as checking weather information, logging dives, and planning diving trips.

Notifications You must be signed in to change notification settings

Michael-Stroh/SCUBAMATE

 
 

Repository files navigation

Scubamate

SCUBAMATE

Overview

Scubamate is a scuba diving companion app, designed to aid divers, and diving instructors with administrative tasks, such as checking weather information, logging dives, and planning diving trips. Traditional methods involve using a dive book to write down the information of your dives which can become tedious when you forget this book at home, lose it or simply forget to bring a pen, thus Scubamate's main goal is to ease this process. It also aims to encourage new divers to get into diving and help people plan a new dive.

Deployment

Available At: https://www.scuba.thematthew.me
For Android APK: Click here!

Software Requirements Specification

Technology and Testing Frameworks
Client-Side: Ionic
Client-Side: Angular
For Android APK: Cordova
Server-Side: Lambda
Server-Side: API Gateway
Server-Side: DynamoDB
Server-Side: S3 Storage
Server-Side Deployment: Cloudfront
Unit and Integration Testing: Karma and Jasmine
Continuous Integrastion Testing: Circle CI
Performance Testing: K6
Scalability Testing: Gatling
Previous Versions
SRS Version 4: Overleaf - LaTex
SRS Version 3: Overleaf - LaTex
SRS Version 2: Overleaf - LaTex
SRS Version 1: Overleaf - LaTex

Relevent Documentation

Project Management Tools

Demo Video Links

Installation Instructions

Most of our project is done using AWS hosted resources such as Lambda, API Gateway, S3 for storage and DynamoDB.
Thus the only installation required is to download the master branch of the git which contains our front-end (Angular, Ionic and TypeScript) code, then run this command in the terminal:
$npm install
Then to run the application:
$ionic serve
The first compilation will take a few seconds and then it will automatically open in your browser on localhost:8100.

Mentors

Git Landing Page

Collaborators

Gisèle Nadine Marais

  • Github Account

  • Linkedin Account

  • giselenadine.github.io

  • Email : [email protected]

  • Responsibilities
    - SRS Document: Introduction
    - SRS Document: Domain Model
    - Lambda function for retrieval of Dive Types and Dive Sites
    - Designed and Implemented the DynamoDB database
    - Error checking for retrieval of Dive History and Login
    - Set-up S3 for storage of profile images
    - Merging branches on github
    - Edit Account Lambda functions
    - Edit Dive Lambda functions
    - SRS Document: Deployment Model
    - User Manual Document: Simple Deployment Model
    - Code Standards Document
    - Lookahead Lambda functions
    - Adding and Upgrading Instructors Lambda functions
    - Adding Dive Sites function
    - Verifying Courses and Instructors Lambda functions
    - Code Standards Document
    - Course Suggestion and Survey Lambda functions
    - Lambda functions for displaying Dive Sites and Dive Centres
    - Architectural Design Document: Architectural Design Diagram
    - Gamification
    - Bug Fixes Front-end

Jaime Matthew Tellie

  • Linkedin Account
  • u17021627.github.io
  • Email : [email protected]
  • Responsibilities
    - SRS Document: Trace-ability Matrix
    - SRS Document: Quality Requirements
    - Unit Testing
    - Integration Testing
    - Architectural Design Documment: Quality Requirements
    - Architectural Design Documment: Event-Driven Architecture
    - Weather extraction for functionality of application
    - Offline logging of dives
    - Architectural Design Documment: Technology Requirements
    - Testing Policy

Isobel Bosman

  • Github Account
  • Linkedin Account
  • u18020519.github.io
  • Email : [email protected]
  • Responsibilities
    - SRS Document: Functional Requirements.
    - SRS Document: Use Cases
    - Architectural Design Document: Architectural Design Diagram.
    - Lambda functions for adding and retrieving a new account.
    - Add new dive log lambda function.
    - Lambda function for retrieving a list of a diver's personal dive logs.
    - Retrieving a list of verified public dive logs Lambda function for the explore page
    - Adding and editing a new dive centre Lambda functions.
    - Adding courses and intructors to an existing dive centre Lambda functions.
    - Functionality for upgrading an account to an Admin role.
    - Adding an account to an existing dive centre Lambda function.

James Darren Jenkins-Ferrett

  • Linkedin Account
  • jamesjenkinsferrett.github.io
  • Email : [email protected]
  • Responsibilities
    - SRS Document: Introduction.
    - SRS Document: User Charactaristics and Overview.
    - Lambda function for Login (including server side password hashing, and unique access token generation).
    - Hashing password functionality in sign-up Lambda function.
    - Configuration of some of the endpoints in API-Gateway.
    - Editing of Demo videos.
    - SRS Document: Client-Server Architecture
    - Lambda Function and API Gateway for default checklist functionality
    - Lambda Function and API Gateway for custom checklist functionality
    - Deletion of an account
    - Email verification of an account
    - Adding of dive courses
    - AI predicting dive visibility

Carmen Janse van Rensburg

  • Linkedin Account
  • carmenjvr.github.io
  • Email : [email protected]
  • Responsibilities
    - Developing the front-end interface with Angular-Ionic.
    - Home page
    - Login and Signup pages
    - Explore page: public feed, dive sites and dive centres
    - Individual dive site and centre page with ability to view location weather and see location on google maps.
    - View, edit and log personal dives pages
    - Planning page: viewing dive sites and courses near you, suggested courses, checklist and visibility prediction.
    - Profile page functionality for Diver, Instructor, Admin and Super Admin.
    - Admin page with functionality for Admins and Super Admins.
    - Charts on Admin page to present the visualisation statistics.
    - Deploying website and mobile application
    - SRS Document: Functional Requirements
    - SRS Document: Use Cases
    - User Manual
    - Non-Function Testing: Usability

Testing Instructions

 Scubamate will make use of automated unit/integration testing software being Jasmine and Karma. By using Jasmine and Karma the unit/integration tests would always be performed to ensured that the system remains on a consistent standard. Jasmine as a frame work provides suites with essential functions such as describe(), taking the test case as a name and a function to be performed as the second parameter. Other functions to be included will be it() which is the more case specific function that handles the individual trial. Finally expect() is the last method used and concatenation with a matcher to test whether the case has succeeded or failed. 
 Run Unit Test: 
 $ng test 
The first compilation will take a few seconds and then it will automatically open in your browser on localhost:9876.

About

Team AV - Scubamate is a scuba diving companion app, designed to aid divers, and diving instructors with administrative tasks, such as checking weather information, logging dives, and planning diving trips.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 38.0%
  • JavaScript 27.2%
  • HTML 25.9%
  • SCSS 8.9%