Docker image for the React based front-end for Outdoors at UVA's gear system.
388
gear-tracker.com
A gear inventory system for the Outdoors Club at UVA.
Currently supported on Google Chrome and Safari only.
Gear Tracker is meant to serve as an improved gear inventory system for the Outdoors Club at UVA, which currently keeps track of all of its gear and gear-checkouts on a Google Spreadsheet - an inefficient and suboptimal system. Gear Tracker is still being actively worked on.
Outdoors at UVa has over 1000 different pieces of equipment that members regularly ‘check out’ and borrow for a week at a time. Members come to ‘Gear Rooms’ - times when club officers make our gear storage spaces accessible to all members so that they may check gear out. During gear rooms, members pick out what gear they would like to check out, and list the numbers written on the gear to an officer, who then ‘checks out’ that gear under that member’s name. This application aims to help not only our general members by improving how they view gear, but it also aims to help the officers and Gearmasters with the pressure-ridden task of quickly checking out, checking in, and accessioning large amounts of gear in addition to helping the officers manage our inventory.
Gear Tracker is the first step in an effort to completely overhaul the Outdoors Club's current website, a complex piece of software that's critical to the functioning of UVA's largest student-run organization. To follow the current status of this effort, please visit this repository.
Database(s):
Back-End: Flask app served with uWSGI+nginx on a docker container running in an AWS EC2 instance. The Flask app is a RESTful JSON API which makes raw SQL queries (via a Python MySQL Client) to the AWS RDS instance mentioned above in addition to the Outdoors Club's MySQL database. HAProxy serves as an SSL Termination Proxy for the Flask App (Config file can be found here), and also takes care of text compression.
Front-End: ReactJS application running on a different docker container deployed on a different EC2 instance. Contains AJAX calls to the Flask back-end above to populate data tables as well as to make state-changing POST requests (if authenticated) for checking gear in/out. Uses Material UI Next. HAProxy serves as an SSL Termination Proxy for the React App (Config file can be found here), and also takes care of text compression.

To expedite the development/deployment cycle, a customized automated deployment system has been set up. Upon any pushes to GitHub, two automated image builds are triggered in their respective DockerHub repositories - these images are for the Flask back-end and React front-end containers. Upon successful image build(s), an AWS Lambda function is triggered that programmatically SSH's into the EC2 instances containing the Flask and React apps. The programmatic SSH commands take down, update, and redeploy the back-end and front-end containers.
Fields:
- Number
- ItemType (Can be a Foreign Key) - currently a Text Field.
- Details
- Condition
- Status
- Notes (Can be Foreign Key)
Gear Checkout (In AWS Aurora)
Fields:
- Checkout ID
- Gear Item (Foreign Key)
- Item Checkout Status (Can be foreign key to the status columb in Gear Item?)
- User/Member (Foreign Key)
- Date Checked Out
- Date Due
- Check Out Note
- Check In Note
Member (In Outdoors at UVa's MySQL database)
Fields:
- ID
- Email
- First Name
- Last Name
- Phone Number
- Gender
General Members:
Should be able to view the gear inventory in a table that displays the fields of gear items.
Should be able to search (autofill preferably) for gear with text input and be able to see a table of results with the same sorting and filtering options as above.
Should be able to click on any piece of gear and see a modal that shows the gear item’s details as well as information on who has it checked out (and for how long) if it is checked out.
Gearmasters and Officers
Should be able to do everything General Members can do (above).
Should be able to view all gear checked out by a specific member (searchable).
Should be able to view the checkout history and associated check in/out notes for any given piece of gear (searchable)
Accession/add new gear into the inventory individually and in bulk (e.g. with many copies of the same brand/model of gear).
Edit gear values
Should be able to easily checkout gear to members in bulk.
Should be able to easily check in gear from members in bulk.
Should be able to renew a member’s checked out gear (extend the due date)
View all checked out and overdue equipment
Be able to send automatic emails to members
In bulk
To Do:
-- This project is licensed under the terms of the MIT license.
Content type
Image
Digest
Size
339.3 MB
Last updated
about 8 years ago
docker pull zakinator123/gear-app-react