Skip to content

Architecture

Trey Sturman edited this page Oct 25, 2022 · 17 revisions

Tools and Libraries

This will be a web-based application written in Go, using the go-gin framework.

Building this webapp will be handled entirely by Go's builder. Testing will be using Oracle's Virtual Box.

Individual Delegation

For this project, each collaborator is heading a general feature. These are flexible, and will contain overlap between different sections.

Dan: backend, database, passwords.

Trey: GUI, map.

Ethan: API, devices, layers.

Wilson: front-end and general support

Deployment

We will be using AWS for hosting and database needs. Specifically, Amazon CloudFront , Amazon Lambda, and Amazon DynamoDB. This is due to the costs of maintaining being so low, as well as gaining experience utilizing AWS.

Our url will be gomap.tech, with other pages being gomap.tech/signin, gomap.tech/settings, and gomap.tech/map. This is to account for a main page to help "sell" GoMap to new users as well as keeping the application itself attached to it.

Application Views

GoMap as an application will use 3 main views. The sign-in/#, the settings, and the map will all be their own page. Therefore, this application will be a mix of SPA (Single Page Architecture) and MPA (Single Page Architecture).

Sign-in/Sign-up

image

This page is the starting point for all users, old and new. Similar to the many other sign-in/sign-up pages, users # or # here.

Settings

image

This page is dedicated for all settings related to the user themselves. Options such as "change password" or "Request Script Verification" will be available here.

Map

This is the main feature of GoMap: the map. As such, there's a few things to break down.

Main Map

image

The map consists of a user-uploaded image as well as many "points" that travel down the map hierarchy: moving from map-to-smaller-map to eventually map-to-object. Navigation may be used with either the sidebar, which contains all acceptable "travel points", whether it's to a map or to an object, or using the "points" themselves, denoted on the user's map by clickable circles.

Object Selection

image

Upon navigating to an object, this what the user is greeted with: a user-uploaded image of the device, it's user-uploaded name, and it's standard IP/MAC address. As these objects (such as printers, wireless access points, etc.) have a static IP, these will always be coupled with the object.

From this view, the user has an option to run a verified script. For this example, there is only the standard ping, denoted by the name "ping", but more scripts are possible.

Running Script on Device

image

On selecting the option to run the desired script, the user is brought to this view. The result of the script is printed, accompanied by the image of the device.

Databases and Accessing Data

Database Schema

Database Schema

Common Queries

Creating table (will definitely be needed for the Users)

Viewing entries (needed when checking if username is taken)

Filtering entries (for searching specific usernames)

Deleting entries (if we decide to allow deleting of users)