What is my tech stack? And Why.

What is my tech stack? And Why.

Here are the tech I used for my products:

BlackMagic.so Stack

  • ReactJS for frontend
  • Tailwind CSS + Tailwind UI for UI
  • Charts & Visualization: the "recharts" npm package, and some custom made charts
  • SharpJS: Server side image processing (profile image/banner)
  • NextJS for static page generations
  • ExpressJS for API, deploy on AWS EC2
  • MySQL for database, deploy on AWS RDS
  • Vercel for the main frontend app
  • AWS for some other infrastructure setup
  • Cloudflare Pages for frontend deployment
  • Twitter API (Elevated Access): I use both V1 and V2 API
  • Mailgun for transactional emails
  • Some UI components I made are available for download here: https://tonydinh.gumroad.com/l/magic-components
  • Some notable NPM packages I used on the frontend:
    • @dnd-kit for drag/drop
    • @reonomy/react-confetti-explosion for the confettis
    • react-parallax-tilt for the 3D effect in the landing page
  • The browser extensions: I use this template: (using manifest v2).
  • iOS app: it's a native app (Swift/UIKit) with webview.
  • Android app: it's a native app (Kotlin) with webview.

DevUtils.app Stack

  • It's NOT Electron
  • Swift
  • AppKit
  • Xcode
  • AWS Lambda Serverless for License server (NodeJS)
  • NextJS for frontend
  • Deploy on S3
  • ExpressJS
  • AWS lambda function (via serverless.com)
  • MySQL
  • License Server is an in-house system that support the license model I’m running

Xnapper.com Stack

  • It's NOT an electron app
  • Swift
  • AppKit
  • Xcode
  • Gumroad for payment & license key
  • NextJS for web app


Most of the tech I choose are because I have experience in using and operating those, so I can focus more on building and less on googling.

Some exceptions are covered in the FAQs below.


Why ExpressJS server for the APIs if you're also using Vercel/NextJS?

→ I don't want to be bound by NextJS's limitations, and I have a good boilerplate setup for ExpressJS that I use for almost all of my apps.

Why MySQL and not MongoDB/PostgreSQL/SQL Server/etc?

→ I have more experience with MySQL.

Why not electron for DevUtils?

→ Because Electron apps are slow.

Why AWS but not GCP?

→ Because I have free AWS credits to spend.

👋 Like what you read here?

Hello there, I'm Tony Dinh.


I quit my high paying job to work on my side projects with a mission to make a living from my apps and live an independent life. 🌴

❤️ Thanks for reading!