Skip to content

MohamedTahaAmer/personal-website

Repository files navigation

MohamedAmer.tech

demo image

🌎 Live Demo

Explore the live Website on: MohamedAmer.tech

📝 Description

This is my personal website, where I share my experience, and hopefully coming out soon will start writing technical articles and share them on it as well. The website is a full-stack application built with Next.JS 14, React.JS, TypeScript, tRPC. For styling, It uses TailwindCSS and ShadCn component library. It uses PostgreSQL with Drizzle as ORM and the DB is hosted on Supabase. For rate limiting, it's using Upstash. Finally, the website is hosted on serverless architecture using Vercel.

Technologies Used

💡 Features

These are some features that are implemented in the website:

  • 🎁 Responsive on all devices and screen sizes.
  • 🚪 Rate limiting with Upstash using Redis.
  • 🧙‍♂️ Full-Stack type safety with TypeScript and tRPC.
  • 🧙‍♂️ Type-Safe Database queries with Drizzle.
  • 🧙‍♂️ Type-Safe environment variables with @t3-oss.
  • 🎨 Frontend using Next.JS, React.JS, TailwindCSS, and ShadCn component library.
  • 🔧 Backend using Next.JS App router.
  • 💬 Contact-Me form with checking Email validity and sending a confirmation email.
  • ✏️ User Interactive Forms with React-Hook-Form, Zod, and React-Query.
  • ☎️ SMTP and IMAP integration for sending and receiving emails.
  • 👓 Glass-looking Navbar, that hides on scroll down and shows on scroll up.
  • 🎉 Marquee of moving Technologies Icons.
  • 📢 Accessible user Notifications with Sonner.
  • 📦 Postgres DB hosted on Supabase.
  • 🌎 Hosting using serverless architecture with Vercel.

🔧 Make It Your Own

This project is open-source and you can use it as a template for your own personal website. Here are the steps to make it your own:

Step 1:

Download or clone this repo by using the link below:

git clone https://github.com/MohamedTahaAmer/personal-website.git

Step 2:

Execute the following command in the root directory of the downloaded repo in order to install dependencies:

npm install

Step 3:

Execute the following command in order to run the development server locally:

npm run dev

Step 4:

Open https://localhost:3000 with your browser to see the result. This will have Hot Module Reloading enabled, so you can see your changes in real-time.

🔒 Environment Variables

Environment variables[^10] can be used for configuration. They must be set before running the app.

The Website uses Supabase, Upstash as external services. You need to create an account on each of these services along with an email account in order to run the app.

Create a .env file in the root directory of the project and fill in the following environment variables:

DATABASE_URL=""
DATABASE_PREFIX=""
NEXT_PUBLIC_CV_LINK=""

UPSTASH_REDIS_REST_TOKEN=""
UPSTASH_REDIS_REST_URL=""

SMTP_GMAIL=""
GMAIL_APP_PASSWORD=""
MY_PERSONAL_GMAIL=""
DELAY_BETWEEN_SMTP_AND_IMAP=""

🚀 Deployment

Deploy to production (manual)

You can create an optimized production build with the following command:

npm run build

Deploy on Vercel (recommended)

The easiest way to deploy this Next.js app is to use the Vercel Platform.

💎 Acknowledgements