Email-Verify is a full-stack application that facilitates email verification using Gmail SMTP for sending emails. It is built with Express.js and Prisma on the backend, utilizing a PostgreSQL database. On the frontend, React and Tailwind is used to create a user-friendly interface for entering and checking verification codes.
(MY APPROACAH)
I used Express.js and Prisma on the backend to create a RESTful API for email verification. Express.js is a fast, unopinionated, and minimalist web framework for Node.js1 that simplifies server-side development. Prisma is a next-generation ORM for Node.js and TypeScript2 that provides a type-safe database client and hassle-free migrations. I used PostgreSQL as my relational database, which is a powerful, open source, and cross-platform system, I used React and Tailwind on the frontend to create a user-friendly interface for entering and checking verification codes. React is a free and open-source library for building user interfaces based on components4. Tailwind is a utility-first CSS framework for rapidly building custom designs5 without ever leaving the HTML.
(VISION & INNOVATION)
My vision was to create a full-stack application that facilitates email verification using Gmail SMTP for sending emails. I wanted to demonstrate my skills and knowledge of full-stack web development using modern technologies and frameworks. My innovation was to use Prisma as my ORM, which is a newer and more advanced alternative to traditional ORMs like Sequelize or Mongoose. Prisma offers a more intuitive data model, a type-safe database client, and a hassle-free migration system. I also used Tailwind as my CSS framework, which is a utility-first approach that gives me more flexibility and control over the design.
(CHALLENGES)
One of the challenges I faced was to set up and configure Gmail SMTP for sending emails. I had to learn how to use Nodemailer, a library that simplifies email sending from Node.js. I also had to enable less secure apps and display an unlock captcha on my Gmail account to allow SMTP access. Another challenge was to implement a verification code system that generates, sends, and validates unique codes for each email address. I had to learn how to use crypto, a built-in module that provides cryptographic functionality in Node.js. I also had to design a database schema that stores the email, code, and expiration date.
(PROBLEMS)
One of the problems I encountered was to handle errors and exceptions in the backend and frontend. I had to use try-catch blocks, async-await syntax, and custom error classes to handle different scenarios, such as invalid email, expired code, or network failure. I also had to provide appropriate feedback and error messages to the user on the frontend.
(USER-CENTRIC DESIGN)
N/A, Was a study project.
(USER NEEDS)
The user needs that I identified and addressed in my application are:
The need to verify their email address using a verification code sent by Gmail SMTP.
The need to enter and check their verification code on a user-friendly interface.
The need to receive feedback and error messages on the status of their verification process.
The need to have a responsive and compatible frontend that works on different devices and browsers.