ATFGunDB
ATFGunDB was a now defunct passion project that I used to track round counts on my firearms as well as costs. The code has been open sourced and can be found here.


Technology Used
Highlighting the core innovations of our application.
Go
Backend REST API was powered by Go and Gin
AWS
Lambda, S3, and SES were used for the infrastructure
Auth0
Handled authentication and JWT
Ionic/Capacitor
Cross-platform application was built with the Ionic framework
Front End
React, TailwindCSS, & ChartJS were used on the frontend
Laravel
Admin interface used Laravel
MongoDB
Round counts and range trips were handled in a NoSQL database
PostgreSQL
Admin backend and reporting interface used PostgreSQL
Project Overview
ATFGunDB is an application that tracks a user’s gun collection, ammo inventory, and round counts accumulated on guns to aid in preventative maintenance as well as tracking maintenance.
Utililizing Auth0 intitially presented some unique challenges on the mobile platform since iOS limits communicating user information with “3rd party services”. Additionally, extra care needed to be taken to ensure that we redirected back to the app properly upon successful login. On both iOS and Android an intent/url scheme had to be registered in the manifest/plist files.
A conscious decision to use Contexts inside React over Redux was made even though there was a non-trivial amount of state to manage because of the relatively linear nature of the data flow and because most of the components did require a rerender if data changed (such as tables of inventory or ChartJS charts).
A separate management interface was provided to allow administrative staff to monitor user activity and prevent any abuse as well as observe how well marketing efforts are paying off.
In conclusion, we were able to fully leverage current technology to provide a unique experience for the user as well as offer insight and control to the client.