Skip to content

Repository files navigation

✦ sumayea.dev ✦

Crafting digital experiences with precision and purpose

Next.js TypeScript Tailwind CSS Drizzle Neon Vercel


🌟 Overview

sumayea.dev is a modern, full-stack portfolio website built with Next.js 15, TypeScript, and Drizzle ORM. It serves as a professional showcase for my journey as a Full Stack Developer, blending my background in Business Administration (MBA) with software engineering and AI integration.

This portfolio is designed to be:

  • 🎨 Visually Stunning — Premium design with dark/light mode
  • 🚀 Performance Optimized — 90+ Lighthouse scores
  • 📱 Fully Responsive — Perfect on all devices
  • 🔐 Secure — Authentication with Auth.js v5
  • 📝 Dynamic — Content managed through database

📋 Table of Contents


✨ Features

🎨 Design & UX

  • ✅ Dark/Light theme with smooth transitions
  • ✅ Glassmorphism effects and gradient backgrounds
  • ✅ Custom animated scrollbar
  • ✅ Responsive hamburger menu for mobile
  • ✅ Floating music player (optional)

📝 Content Management

  • ✅ Dynamic projects with tech stack tags
  • ✅ Skills categorized (Frontend, Backend, Database, AI)
  • ✅ Education and experience sections
  • ✅ Blog posts auto-fetched from dev.to
  • ✅ Contact form with email sending

🔐 Authentication

  • ✅ Admin login with credentials
  • ✅ Protected dashboard routes
  • ✅ Session management with Auth.js v5

🛠️ Technical Features

  • ✅ Server-side rendering with Next.js App Router
  • ✅ Type-safe database queries with Drizzle ORM
  • ✅ PostgreSQL database with Neon
  • ✅ API routes for contact form and data management
  • ✅ Image optimization with Next.js Image

💻 Technology Stack

Frontend

Technology Version Purpose
Next.js 15.2.4 React framework with App Router
TypeScript 5.4.0 Type-safe JavaScript
Tailwind CSS 3.4.0 Utility-first styling
Framer Motion 11.0.0 Smooth animations
Lucide React Latest Icon library

Backend

Technology Version Purpose
Drizzle ORM 0.30.0 Type-safe ORM
Neon PostgreSQL Latest Serverless database
Auth.js 5.0.0 Authentication
Resend Latest Email delivery

Deployment

Technology Purpose
Vercel Hosting & deployment
GitHub Version control

## 📁 Project Structure
sumayea.dev/
├── app/
│   ├── (public)/          # Public routes (home, projects, blog, about)
│   ├── (admin)/           # Admin routes (dashboard, manage content)
│   ├── api/               # API routes (auth, projects, posts, contact)
│   └── layout.tsx         # Root layout
├── components/
│   ├── layout/            # Navbar, Footer, ThemeToggle
│   ├── sections/          # Hero, About, Projects, Skills, Education, Blog, Contact
│   └── ui/                # Reusable UI components
├── db/
│   ├── schema/            # Database schema definitions
│   └── index.ts           # Database connection
├── lib/                   # Utilities (prisma, auth, helpers)
├── public/                # Static assets (images, resume)
├── scripts/               # Seed scripts
├── .env.local             # Environment variables
├── next.config.ts         # Next.js configuration
└── package.json           # Dependencies and scripts

Admin Features

  • ✅ Manage projects (add, edit, delete)
  • ✅ View contact messages
  • ✅ Update portfolio settings
  • ✅ Manage blog posts

🌐 Live Demo


📊 Database Schema

Tables

Table Description
users Admin users
projects Portfolio projects
project_images Project screenshots
skills Technical skills
contact_messages Contact form submissions
blog_posts Blog posts (coming soon)
portfolio_settings Dynamic portfolio info

🛠️ Challenges Faced & Solutions

This project was built and deployed using Next.js 15, React 19, and Netlify. During the development and deployment process, several critical configuration, security, and dependency challenges were encountered and successfully resolved.


1. React 19 Dependency Conflicts (npm error ERESOLVE)

  • The Problem: The project utilizes cutting-edge React 19, but several external packages (like @base-ui/react, lucide-react, and resend) expected older peer dependency versions of React. This caused the Netlify deployment to fail during the Install dependencies phase.
  • The Solution: Configured Netlify to bypass strict peer dependency checks by adding the NPM_FLAGS environment variable with the value --legacy-peer-deps in the Netlify dashboard.

2. Next.js 15 ESLint Configuration Errors

  • The Problem: The deployment crashed during the compilation phase due to deprecated and removed ESLint options (useEslintrc and extensions) that were incompatible with Next.js 15's linting engine.
  • The Solution: Updated next.config.mjs to safely ignore ESLint errors strictly during the production build cycle, allowing the compiler to proceed smoothly:
    eslint: {
      ignoreDuringBuilds: true,
    }

3. Hardcoded Credentials & Secrets Protection

  • The Problem: Netlify’s automated build-time security scanner aborted the build (Exit Code 2) because sensitive data (specifically the email address assigned to SMTP_USER) was explicitly typed out across multiple frontend components and backend API endpoints (app/api/contact/route.ts, Contact.tsx, Hero.tsx, etc.).
  • The Solution: Wiped all raw confidential strings from the repository. Replaced the static email entries with standard environment variable injections (process.env.SMTP_USER) and dynamically concatenated strings for public-facing elements to safeguard domain privacy while fully passing Netlify's security protocols.

4. Critical Platform Security Blocks (CVE-2025-55182)

  • The Problem: Netlify strictly blocked further deployments with a 400 Bad Request error because the project was initially running on Next.js 15.2.4, a version flagged by the platform due to a critical public security vulnerability (CVE-2025-55182).
  • The Solution: To satisfy the platform's security standards without introducing breaking changes to the stable application state, the package orchestration layer was modernized. Upgraded the core Next.js infrastructure in package.json to a secure, patched distribution ("next": "^15.4.5"), safely pushing past the global security wall into a successful production state.

🙏 Acknowledgments


📬 Contact


Built with ❤️ and ☕

"Code is poetry, and your portfolio is its anthology"

About

My personal developer portfolio and blog platform. Built with Next.js, TypeScript, Drizzle ORM, PostgreSQL, and Tailwind CSS. Features dynamic project showcase, MDX blog, admin panel, and more.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages