

Address Book
Under DevelopmentAddress Book is a full-stack application for managing personal and business contacts. I developed it with Next.js in Typescript, and I used Supabase's managed database, authentication, and storage infrastructure for the backend. Address Book supports importing and exporting contacts via the vCard standard and sharing contacts through QR codes. The latest vCard specification (v4.0) was published over 10 years ago and was never fully adopted by major tech corporations, like Apple (v3.0) and Google (v2.1). Despite this fragmentation, I was interested in learning about the benefits and limitations of the only major contact file format I'm aware of. To parse vCards during import, I modified the script of node-vcard. To generate vCards for export, I reverse-engineered my modified version of the node-vcard script. The vCard standard supports multiple contacts in a single VCF file, so I added the ability for users to both import and export multiple contacts at once. A contact manager seemed like a solid use for QR codes, so I used node-qrcode, which is called via a Next.js API route. For now, the application only allows QR code sharing (export), but I plan to add an import method as well. This will require additional validation to ensure the contents of the QR code are, in fact, valid vCard fields. I exclusively used Firebase for the backend of our web applications at my previous work. I learned firsthand about the challenges of using a NoSQL database with an ever-expanding number of collections, relationships, and queries - it was a constant battle to stay under Firestore's 200 composite index limit! For this project, I knew I wanted to dive into SQL. When making the jump from Firebase, Supabase seemed like the no-brainer choice to help me gain experience with PostgreSQL, while not feeling hindered by backend challenges such as authentication and user management.
View Project