A local tattoo shop in Canada hired me as their Tech Lead and primary developer for a new mobile app project. The app is geared towards tattoo artists and other body modification service providers (piercers, brow artists, scalp micro-pigmentation artists, etc.) The goal of the app is to help service providers and clients find each other. The app was designed by their in-house designer and my role was technical leadership and full stack development on the backend, the website, and Android.
Features of the Android app include:
- Ability for service providers to post a service listing (opening). This functionality is similar to Kijiji or Craigslist but for tattoo artists and other body modification service providers
- Allows service providers to create posts with multiple images. This functionality is similar to Instagram.
- Ability for clients to find artists by service and location on the Find tab. Clients can provide their location or choose from suggested locations to find service providers near them or in a supported city
- Ability for clients to follow artists via the “VIP” feature.
- Ability for artists to send broadcast announcement messages to all of their followers. This feature was a rewrite of a feature that another developer took several months to deliver but hadn’t quite worked as desired. At the time of writing this post, it is not live yet.
- Full stack features to support an invite-only artist onboarding flow, allowing service providers to only be allowed to sign up if they receive a one-time use link by another service provider on the platform. This exclusivity feature was specifically requested by the client to limit access to the app.
- Push notification configuration allows Android users to customize which notification categories they’d like to receive notifications for, if any.
- Allow users to customize their profiles including profile image, name, username, profile details, and pronouns
- Notification feed for clients and artists to stay in the loop with activity in the app (broadcasts, new posts, listings, etc.)
Technical features:
- Location-aware search queries to allow resources to be indexed by location and queried based on distance from a provided location, e.g. 50 km away. This allows users to choose a city and find service providers within a specific range of that city.
- Deep linking functionality on Android (verified app links) and iOS (universal links). This was implemented to support linking into posts, listings, and to support the exclusive invite-only artist onboarding flow.
- Push notifications functionality to alert artists when they have a new follower, as well as to alert followers when an artist they follow has created a new post, a new listing, or sends a broadcast message.
- Google Maps Platform implementation to support auto-complete lookup and rendering of maps
As the Technical Lead of the project, I owned the development of and was the primary contributor on the backend API’s, native Android app, website, and oversaw the development of the iOS app. I led a team of approximately 2-3 developers. I worked with the client to architect the solutions from a full stack perspective to find the best solution from a wide angle.
- System Design from a full stack perspective.
- Implemented CI/CD workflows (Continuous Integration, Continuous Deployment) to support automated testing and deployment for both the Android app, the backend services, and the website
- Automated deployments for the backend services and website
- Automated deployments to Firebase App Distribution on Android
- Semi-automated deployments to the Google Play Store including automated code signing
- Documentation and best practices: As the Tech Lead, I wrote best practices docs to support the other developers on the team. Documentation includes both manually- and technically-generated diagrams to help onboard developers.
- I created code generation tooling to remove the need to write boilerplate, and encourage consistent patterns.
- Overseeing the implementation of the iOS rewrite in Swift UI
- Service uptime monitoring to ensure production apps stay up and the team could respond to incidents
- Hiring developers to implement chat, iOS
I implemented all of the above-mentioned features myself, usually as the sole contributor. There are other features in the app that I did not develop: chat and the old broadcast functionality that leveraged chat, written by another developer that implemented a third-party service. I needed to rewrite the latter as it was not something that was suitable for the long-term.
Technologies I used for this project:
- Ruby on Rails
- Node.js
- native Android with Kotlin
- Postgres
- MongoDB
- Vue.js
- various API’s
When I left the project, the app on the Google Play Store had a 5-star average review.
Note: Featured artist lauren_epsom is a fabricated artist profile (think lorem ipsum). User, listing and post data is fabricated or uses image attribution. Images from Unsplash by photographers Taylor Harding, Daniel Gomez, Allef Vinicius, Annie Spratt, Clem Onojeghuo, Dylan Sauerwein, Jasmin Chew, JJ Jordan, Nathalie Stimpfl, Steven Erixon, Stories Ink, Seyi Ariyo. Images from Pexels by photographers Prime Cinematics, Chris F.