Skip to content

Repository files navigation

✦ sumayea.dev ✦

Crafting digital experiences with precision and purpose

Next.jsTypeScriptTailwind CSSDrizzleNeonVercel


🌟 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

TechnologyVersionPurpose
Next.js15.2.4React framework with App Router
TypeScript5.4.0Type-safe JavaScript
Tailwind CSS3.4.0Utility-first styling
Framer Motion11.0.0Smooth animations
Lucide ReactLatestIcon library

Backend

TechnologyVersionPurpose
Drizzle ORM0.30.0Type-safe ORM
Neon PostgreSQLLatestServerless database
Auth.js5.0.0Authentication
ResendLatestEmail delivery

Deployment

TechnologyPurpose
VercelHosting & deployment
GitHubVersion 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

TableDescription
usersAdmin users
projectsPortfolio projects
project_imagesProject screenshots
skillsTechnical skills
contact_messagesContact form submissions
blog_postsBlog posts (coming soon)
portfolio_settingsDynamic 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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages