diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index bffb357..0000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "extends": "next/core-web-vitals"
-}
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..97e47a1
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,85 @@
+name: Deploy Next.js site to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ["main"]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v3
+ with:
+ version: 8
+ run_install: false
+
+ - name: Get pnpm store directory
+ shell: bash
+ run: |
+ echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
+
+ - name: Setup pnpm cache
+ uses: actions/cache@v4
+ with:
+ path: ${{ env.STORE_PATH }}
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
+
+ - name: Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: Setup Pages
+ uses: actions/configure-pages@v4
+ with:
+ # Automatically inject basePath in your Next.js configuration file and disable
+ # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
+ #
+ # You may remove this line if you want to manage the configuration yourself.
+ static_exports: true
+
+ - name: Build with Next.js
+ run: pnpm build
+
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./out
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/.gitignore b/.gitignore
index fd3dbb5..28caed9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,8 +3,13 @@
# dependencies
/node_modules
/.pnp
-.pnp.js
-.yarn/install-state.gz
+/.pnpm-store
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/versions
# testing
/coverage
@@ -24,9 +29,10 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+.pnpm-debug.log*
-# local env files
-.env*.local
+# env files (can opt-in for committing if needed)
+.env*
# vercel
.vercel
diff --git a/.gitpod.yml b/.gitpod.yml
deleted file mode 100644
index e43643f..0000000
--- a/.gitpod.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# This configuration file was automatically generated by Gitpod.
-# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml)
-# and commit this file to your remote git repository to share the goodness with others.
-
-# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart
-
-tasks:
- - init: npm install && npm run build
- command: npm run start
-
-
diff --git a/CNAME b/CNAME
deleted file mode 100644
index fcf5778..0000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-sayfullaheid.me
\ No newline at end of file
diff --git a/CONTENT_LICENSE b/CONTENT_LICENSE
new file mode 100644
index 0000000..0cb7d7e
--- /dev/null
+++ b/CONTENT_LICENSE
@@ -0,0 +1,20 @@
+Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
+
+This license applies to all original written blog content, articles, and media files
+(e.g., images, diagrams) in this repository, excluding source code.
+
+You are free to:
+
+- Share — copy and redistribute the material in any medium or format
+- Adapt — remix, transform, and build upon the material
+
+Under the following terms:
+
+- Attribution — You must give appropriate credit, provide a link to the license,
+ and indicate if changes were made. You may do so in any reasonable manner,
+ but not in any way that suggests the licensor endorses you or your use.
+- NonCommercial — You may not use the material for commercial purposes.
+- ShareAlike — If you remix, transform, or build upon the material,
+ you must distribute your contributions under the same license as the original.
+
+Full license text:
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8dadbc3
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Sayfullah Eid
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/README.md b/README.md
index 0dc9ea2..016a13c 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,199 @@
-This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+# Sayfullah Eid - Developer Portfolio
-## Getting Started
+A modern, responsive portfolio website built with Next.js 15, TypeScript, and Tailwind CSS. Features a clean design, blog functionality with MDX, and automatic deployment to GitHub Pages.
-First, run the development server:
+## ✨ Features
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
+- **🏠 Welcome Page** - Modern hero section with skills showcase and quick links
+- **💼 Experience Page** - Professional experience timeline with detailed achievements
+- **🚀 Projects Page** - Interactive project showcase with featured and regular projects
+- **📝 Blog** - MDX-powered blog with syntax highlighting and responsive design
+- **🌙 Dark/Light Theme** - Automatic theme switching with system preference support
+- **📱 Responsive Design** - Optimized for all device sizes
+- **⚡ Fast Performance** - Static site generation for optimal loading times
+- **🚀 Auto Deployment** - GitHub Actions workflow for automatic deployment to GitHub Pages
+
+## 🛠️ Tech Stack
+
+- **Framework**: Next.js 15 with App Router
+- **Language**: TypeScript
+- **Styling**: Tailwind CSS
+- **UI Components**: Shadcn/ui
+- **Blog**: MDX with gray-matter for frontmatter
+- **Icons**: Lucide React
+- **Deployment**: GitHub Pages
+- **Package Manager**: pnpm
+
+## 📁 Project Structure
+
+```
+├── app/ # Next.js app directory
+│ ├── blog/ # Blog pages
+│ ├── experience/ # Experience page
+│ ├── projects/ # Projects page
+│ ├── layout.tsx # Root layout
+│ └── page.tsx # Home page
+├── components/ # Reusable components
+│ ├── ui/ # Shadcn/ui components
+│ ├── nav-menu.tsx # Navigation component
+│ └── mdx-components.tsx # MDX component mappings
+├── content/ # Content directory
+│ └── blog/ # Blog post MDX files
+├── lib/ # Utility functions
+│ ├── blog.ts # Blog utilities
+│ └── utils.ts # General utilities
+├── .github/workflows/ # GitHub Actions
+└── public/ # Static assets
+```
+
+## 🚀 Getting Started
+
+### Prerequisites
+
+- Node.js 18+
+- pnpm (recommended) or npm
+
+### Installation
+
+1. **Clone the repository**
+
+ ```bash
+ git clone https://github.com/FusionStreak/FusionStreak.github.io.git
+ cd FusionStreak.github.io
+ ```
+
+2. **Install dependencies**
+
+ ```bash
+ pnpm install
+ ```
+
+3. **Run the development server**
+
+ ```bash
+ pnpm dev
+ ```
+
+4. **Open in browser**
+ Navigate to [http://localhost:3000](http://localhost:3000)
+
+## 📝 Adding Content
+
+### Adding Blog Posts
+
+Create new MDX files in the `content/blog/` directory:
+
+```markdown
+---
+title: "Your Post Title"
+date: "2024-01-15"
+excerpt: "A brief description of your post"
+author: "Your Name"
+tags: ["tag1", "tag2", "tag3"]
+featured: true
+readTime: "5 min read"
+---
+
+# Your Post Title
+
+Your content here using Markdown/MDX syntax...
+```
+
+### Adding Experience
+
+Edit the `experiences` array in `app/experience/page.tsx`:
+
+```typescript
+const experiences: Experience[] = [
+ {
+ id: "new-id",
+ title: "Your Job Title",
+ company: "Company Name",
+ location: "Location",
+ startDate: "2024-01",
+ endDate: undefined, // or "2024-12" for past roles
+ description: "Job description...",
+ achievements: ["Achievement 1", "Achievement 2"],
+ technologies: ["React", "TypeScript", "Node.js"],
+ website: "https://company.com"
+ },
+ // ... existing experiences
+];
```
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+### Adding Projects
+
+Edit the `projects` array in `app/projects/page.tsx`:
+
+```typescript
+const projects: Project[] = [
+ {
+ id: "new-project",
+ title: "Project Name",
+ description: "Short description",
+ longDescription: "Detailed description...",
+ technologies: ["Next.js", "TypeScript"],
+ githubUrl: "https://github.com/username/repo",
+ liveUrl: "https://project-demo.com",
+ featured: true,
+ createdAt: "2024-01-15",
+ status: "completed"
+ },
+ // ... existing projects
+];
+```
+
+## 🎨 Customization
+
+### Updating Personal Information
-You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file.
+1. **Update metadata** in `app/layout.tsx`
+2. **Modify hero section** in `app/page.tsx`
+3. **Update social links** in `app/page.tsx`
+4. **Change skills** in `app/page.tsx`
+
+### Styling
+
+- **Colors**: Modify CSS variables in `app/globals.css`
+- **Components**: Customize Shadcn/ui components in `components/ui/`
+- **Layout**: Adjust the main layout in `app/layout.tsx`
+
+## 🚀 Deployment
+
+### Automatic Deployment (Recommended)
+
+The repository includes a GitHub Actions workflow that automatically deploys to GitHub Pages when you push to the main branch.
+
+1. **Enable GitHub Pages** in your repository settings
+2. **Set source** to "GitHub Actions"
+3. **Push to main branch** - deployment will trigger automatically
+
+### Manual Deployment
+
+```bash
+# Build the static site
+pnpm build
+
+# The output will be in the 'out' directory
+# Upload the contents to your hosting provider
+```
-This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
+## 📦 Scripts
-## Learn More
+- `pnpm dev` - Start development server
+- `pnpm build` - Build for production
+- `pnpm start` - Start production server
+- `pnpm lint` - Run ESLint
-To learn more about Next.js, take a look at the following resources:
+## 🛡️ Licensing
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+This repository uses a dual-license model:
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
+- **Code** (in `/app`, `/components`, etc.): Licensed under the [MIT License](./LICENSE)
+- **Content** (in `/content`, `/public`, etc.): Licensed under [CC BY-NC 4.0](./CONTENT_LICENSE)
-## Deploy on Vercel
+If you want to reuse or republish parts of the content commercially, please contact me for permission.
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+---
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
+Built with ❤️ by [Sayfullah Eid](https://github.com/FusionStreak)
diff --git a/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx
new file mode 100644
index 0000000..7f1cccd
--- /dev/null
+++ b/app/blog/[slug]/page.tsx
@@ -0,0 +1,139 @@
+import { notFound } from "next/navigation";
+import { Card, CardContent } from "@/components/ui/card";
+import { Badge } from "@/components/ui/badge";
+import { Button } from "@/components/ui/button";
+import { Separator } from "@/components/ui/separator";
+import { Calendar, Clock, User, ArrowLeft, Share2 } from "lucide-react";
+import Link from "next/link";
+import { getPostBySlug, getAllSlugs } from "@/lib/blog";
+import { MDXContent } from "@/components/mdx-content";
+
+interface BlogPostPageProps {
+ params: Promise<{
+ slug: string;
+ }>;
+}
+
+export async function generateStaticParams() {
+ const slugs = getAllSlugs();
+ return slugs.map((slug) => ({
+ slug,
+ }));
+}
+
+export async function generateMetadata({ params }: BlogPostPageProps) {
+ const { slug } = await params;
+ const post = await getPostBySlug(slug);
+
+ if (!post) {
+ return {
+ title: 'Post Not Found',
+ };
+ }
+
+ return {
+ title: `${post.title} | Sayfullah Eid`,
+ description: post.excerpt,
+ };
+}
+
+export default async function BlogPostPage({ params }: BlogPostPageProps) {
+ const { slug } = await params;
+ const post = await getPostBySlug(slug);
+
+ if (!post) {
+ notFound();
+ }
+
+ return (
+
+
+
+
+ Want to work together?
+
+ I'm always interested in new opportunities and collaborations.
+
+
+
+
+ Feel free to reach out if you'd like to discuss potential opportunities or just want to connect.
+ You can find my contact information in the footer or reach out through my social media profiles.
+
+ A passionate full-stack developer who loves building innovative solutions and sharing knowledge through code.
+
+
+
+
+
+
+
+
+ {/* Social Links */}
+
+
+
+
+
+
+
+ {/* Skills Section */}
+
+
+ Technical Skills
+
+ Technologies and tools I work with
+
+
+
+
+
+
Frontend
+
+ React
+ Next.js
+ TypeScript
+ Tailwind CSS
+
+
+
+
Backend
+
+ Node.js
+ Python
+ PostgreSQL
+ MongoDB
+
+
+
+
Tools & DevOps
+
+ Git
+ Docker
+ AWS
+ Vercel
+
+
+
+
+
+
+ {/* Quick Links */}
+
+
+
+ Latest Projects
+
+ Check out my recent work and side projects
+
+
+
+
+
+
+
+
+
+ Professional Experience
+
+ Learn about my professional journey and roles
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/projects/Projects.jsx b/app/projects/Projects.jsx
deleted file mode 100644
index d8ef0d4..0000000
--- a/app/projects/Projects.jsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import React from "react";
-import { Container, Typography, Box, Divider, List, ListItem, Chip, Card, CardContent, ListItemText, CardActions, Button, Tooltip } from "@mui/material";
-import { EmojiEvents, ChevronRight } from "@mui/icons-material";
-import Grid from "@mui/material/Grid";
-import { Icons } from "../icons";
-
-export default function Projects({ projects }) {
-
- return (
-
- {projects.map((info, idx) => {
- return (
-
-
-
-
- {info.name} | {info.role}
-
-
- {
- info.date ? {info.date.month} {info.date.year} : {info.start.month} {info.start.year} - {info.end.month} {info.end.year}
- }
-
-
- {info.org}
-
-
-
-
- {Object.keys(info.awards).map((award) => {
- return } label={award} color="warning" variant="outlined" />
- })}
-
- {info.notes.map((note) => {
- return (
-
- {note}
- )
- })}
-
-
-
-
- {info.skills.map((skill) => {
- return (
-
- )
- })}
-
-
-
- {Object.keys(info.urls).length !== 0 ?
-
- {Object.keys(info.urls).map((url) => {
- return (
- }
- color="secondary"
- variant="text"
- target={'_blank'}
- href={info.urls[url]}>
- {url}
-
- )
- })}
-
-
- : null}
-
- )
- })}
-
- )
-}
\ No newline at end of file
diff --git a/app/projects/page.js b/app/projects/page.js
deleted file mode 100644
index 6c72d29..0000000
--- a/app/projects/page.js
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * List of project as objects
- *
- * Template
- * ```js
- * {
- * name: string,
- * role: string,
- * notes: string[],
- * urls: {name: string,...},
- * date: {month: string, year: number},
- * org: string,
- * skills: string[],
- * awards: string[]
- * }
- * ```
- */
-
-'use client'
-
-import { useEffect, useState } from "react";
-import Projects from "./Projects";
-import { Container, Box, Typography } from "@mui/material";
-
-const projects = [
- {
- name: "LEO Satelite Routing and Load Balancing",
- role: "Team Lead",
- notes: [
- "Designing new load-balancing mechanisms for use in Low Eart Orbit networks",
- "Extending the functionality of LEOSIM, a Python platform for simulating LEO networks",
- "Implementing load-balancing designs in LEOSIM"
- ],
- urls: {},
- start: { month: "September", year: 2023 },
- end: { month: "April", year: 2024 },
- org: "Capstone Project | Carleton University",
- skills: ["Python", "NumPy", "Docker", "Git"],
- awards: {}
- },
- {
- name: "GoodStreams",
- role: "Team Lead",
- notes: [
- "Designed general structure of the website",
- "Implemented backend functionality to communicate with MoviesDatabase API",
- "Designed the database to store user information"
- ],
- urls: {
- "GitHub": "https://github.com/FusionStreak/GoodStreams"
- },
- date: { month: "April", year: 2023 },
- org: "Web Programming Project | Algonquin College",
- skills: ["php", "javascript", "Git", "HTML", "CSS"],
- awards: {}
- },
- {
- name: "foodpad",
- role: "Frontend Developer",
- notes: [
- "Implemented a prototype application to help track groceries and food waste, using React",
- "Developed the front-end of the demo site, based on the designs from my colleagues."
- ],
- urls: {
- "Devpost": "https://devpost.com/software/foodpad",
- "GitHub": "https://github.com/ke-noel/foodpad"
- },
- date: { month: "January", year: 2022 },
- org: "McHacks 9 | MLH",
- skills: ["ReactJS", "Figma"],
- awards: { "Top 5 Hacks": "One of the top 5 hacks at McHacks 9", "Tree Hugger": "Award for the hack that best promoted sustainability" }
- },
- {
- name: "PlagueSim",
- role: "Lead Developer",
- notes: [
- "Designed the general structure of the application through the use of UML diagrams",
- "Implemented core data structures and functionality in Java"
- ],
- urls: {
- "GitHub": "https://github.com/FusionStreak/MST_TermProject"
- },
- date: { month: "December", year: 2021 },
- org: "Data Structures Project | Carleton University",
- skills: ["Java", "Data Structures"],
- awards: []
- },
- {
- name: "harmonia",
- role: "Frontend Developer",
- notes: [
- "Developed a cognitive memory game using JavaScript that integrated with a Slack app, to perform daily check-ins on employee mental health"
- ],
- urls: {
- "Devpost": "https://devpost.com/software/harmonia",
- "GitHub": "https://github.com/banaru4/Harmonia"
- },
- date: { month: "January", year: 2020 },
- org: "ConUHacks V | MLH",
- skills: ["Javascript", "Slack"],
- awards: { "Sun Life Financial": "Award for the app that best helped support mental health in the workplace" }
- },
- {
- name: "Orion",
- role: "Developer",
- notes: [
- "Developed Python web-app, that processed building footprint data to show where solar roofing was possible",
- "Used Pandas to clean the incoming data"
- ],
- urls: {
- "GitHub": "https://github.com/ogp-summit-hackathon-sommet-pgo/Orion"
- },
- date: { month: "May", year: 2019 },
- org: "Ottawa Summit | Open Government Partnetship",
- skills: ["Python", "Pandas", "Flask", "NumPy"],
- awards: []
- },
- {
- name: "RoboRavens",
- role: "Programmer",
- notes: [
- "Developed C/C++ code for a robot to complete a set of challenges"
- ],
- urls: {},
- date: { month: "January", year: 2018 },
- org: "Team 4783 | FIRST Robotics",
- skills: ["FIRST", "C++", "Embedded Systems"],
- awards: []
- }
-]
-
-export default function Page() {
-
- return (
-
-
-
- Projects
-
-
-
- )
-}
\ No newline at end of file
diff --git a/app/projects/page.tsx b/app/projects/page.tsx
new file mode 100644
index 0000000..fc094e1
--- /dev/null
+++ b/app/projects/page.tsx
@@ -0,0 +1,260 @@
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
+import { Badge } from "@/components/ui/badge";
+import { Button } from "@/components/ui/button";
+import { Github, ExternalLink, Calendar } from "lucide-react";
+import Link from "next/link";
+
+interface Project {
+ id: string;
+ title: string;
+ description: string;
+ longDescription: string;
+ technologies: string[];
+ githubUrl?: string;
+ liveUrl?: string;
+ imageUrl?: string;
+ featured: boolean;
+ createdAt: string;
+ status: "completed" | "in-progress" | "planning";
+}
+
+// You can easily extend this array to add more projects
+const projects: Project[] = [
+ {
+ id: "1",
+ title: "E-Commerce Platform",
+ description: "A full-stack e-commerce solution with admin dashboard and payment integration.",
+ longDescription: "Built a comprehensive e-commerce platform featuring user authentication, product catalog, shopping cart, order management, and Stripe payment integration. Includes an admin dashboard for inventory management and order tracking.",
+ technologies: ["Next.js", "TypeScript", "Prisma", "PostgreSQL", "Stripe", "Tailwind CSS"],
+ githubUrl: "https://github.com/yourusername/ecommerce-platform",
+ liveUrl: "https://your-ecommerce-demo.vercel.app",
+ imageUrl: "/placeholder-project-1.jpg",
+ featured: true,
+ createdAt: "2024-01-15",
+ status: "completed"
+ },
+ {
+ id: "2",
+ title: "Task Management App",
+ description: "A collaborative task management application with real-time updates.",
+ longDescription: "Developed a collaborative task management application with features like drag-and-drop kanban boards, real-time collaboration, team management, and deadline tracking. Built with modern React patterns and real-time WebSocket communication.",
+ technologies: ["React", "Node.js", "Socket.io", "MongoDB", "Express", "Material-UI"],
+ githubUrl: "https://github.com/yourusername/task-manager",
+ liveUrl: "https://task-manager-demo.netlify.app",
+ imageUrl: "/placeholder-project-2.jpg",
+ featured: true,
+ createdAt: "2023-11-20",
+ status: "completed"
+ },
+ {
+ id: "3",
+ title: "Weather Dashboard",
+ description: "A responsive weather dashboard with location-based forecasts and data visualization.",
+ longDescription: "Created a weather dashboard that provides current weather conditions, 5-day forecasts, and interactive charts. Features geolocation support, search functionality, and responsive design with dark/light theme support.",
+ technologies: ["React", "Chart.js", "OpenWeather API", "CSS Modules", "Axios"],
+ githubUrl: "https://github.com/yourusername/weather-dashboard",
+ liveUrl: "https://weather-dashboard-demo.vercel.app",
+ imageUrl: "/placeholder-project-3.jpg",
+ featured: false,
+ createdAt: "2023-09-10",
+ status: "completed"
+ },
+ {
+ id: "4",
+ title: "AI Chat Application",
+ description: "An AI-powered chat application with multiple conversation models.",
+ longDescription: "Building an intelligent chat application that integrates with various AI models. Features include conversation history, multiple AI personalities, message export, and customizable chat interfaces.",
+ technologies: ["Next.js", "OpenAI API", "Vercel AI SDK", "Prisma", "SQLite", "Shadcn/ui"],
+ githubUrl: "https://github.com/yourusername/ai-chat-app",
+ imageUrl: "/placeholder-project-4.jpg",
+ featured: true,
+ createdAt: "2024-02-01",
+ status: "in-progress"
+ },
+ {
+ id: "5",
+ title: "Portfolio Website",
+ description: "This very website - a modern portfolio built with Next.js and MDX.",
+ longDescription: "Designed and developed this portfolio website using Next.js, TypeScript, and MDX for the blog. Features include dark/light theme, responsive design, blog functionality, and optimized performance.",
+ technologies: ["Next.js", "TypeScript", "MDX", "Tailwind CSS", "Shadcn/ui"],
+ githubUrl: "https://github.com/FusionStreak/FusionStreak.github.io",
+ liveUrl: "https://fusionstreak.github.io",
+ imageUrl: "/placeholder-project-5.jpg",
+ featured: false,
+ createdAt: "2024-01-01",
+ status: "completed"
+ }
+];
+
+const statusColors = {
+ completed: "bg-green-500",
+ "in-progress": "bg-yellow-500",
+ planning: "bg-blue-500"
+};
+
+export default function ProjectsPage() {
+ const featuredProjects = projects.filter(project => project.featured);
+ const otherProjects = projects.filter(project => !project.featured);
+
+ return (
+
+
+
+ My Projects
+
+
+ A collection of projects I've worked on, showcasing my skills and passion for development.
+
+ )
+}
+
+function PaginationItem({ ...props }: React.ComponentProps<"li">) {
+ return
+}
+
+type PaginationLinkProps = {
+ isActive?: boolean
+} & Pick, "size"> &
+ React.ComponentProps<"a">
+
+function PaginationLink({
+ className,
+ isActive,
+ size = "icon",
+ ...props
+}: PaginationLinkProps) {
+ return (
+
+ )
+}
+
+function PaginationPrevious({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+ Previous
+
+ )
+}
+
+function PaginationNext({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ Next
+
+
+ )
+}
+
+function PaginationEllipsis({
+ className,
+ ...props
+}: React.ComponentProps<"span">) {
+ return (
+
+
+ More pages
+
+ )
+}
+
+export {
+ Pagination,
+ PaginationContent,
+ PaginationLink,
+ PaginationItem,
+ PaginationPrevious,
+ PaginationNext,
+ PaginationEllipsis,
+}
diff --git a/components/ui/separator.tsx b/components/ui/separator.tsx
new file mode 100644
index 0000000..275381c
--- /dev/null
+++ b/components/ui/separator.tsx
@@ -0,0 +1,28 @@
+"use client"
+
+import * as React from "react"
+import * as SeparatorPrimitive from "@radix-ui/react-separator"
+
+import { cn } from "@/lib/utils"
+
+function Separator({
+ className,
+ orientation = "horizontal",
+ decorative = true,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+export { Separator }
diff --git a/components/ui/tabs.tsx b/components/ui/tabs.tsx
new file mode 100644
index 0000000..497ba5e
--- /dev/null
+++ b/components/ui/tabs.tsx
@@ -0,0 +1,66 @@
+"use client"
+
+import * as React from "react"
+import * as TabsPrimitive from "@radix-ui/react-tabs"
+
+import { cn } from "@/lib/utils"
+
+function Tabs({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function TabsList({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function TabsTrigger({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function TabsContent({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+export { Tabs, TabsList, TabsTrigger, TabsContent }
diff --git a/content/blog/getting-started-nextjs-15.mdx b/content/blog/getting-started-nextjs-15.mdx
new file mode 100644
index 0000000..56a7651
--- /dev/null
+++ b/content/blog/getting-started-nextjs-15.mdx
@@ -0,0 +1,67 @@
+---
+title: "Getting Started with Next.js 15"
+date: "2024-01-15"
+excerpt: "Learn how to build modern web applications with Next.js 15, the latest version of the popular React framework."
+author: "Sayfullah Eid"
+tags: ["Next.js", "React", "Web Development", "JavaScript"]
+featured: true
+readTime: "5 min read"
+---
+
+# Getting Started with Next.js 15
+
+Next.js 15 brings exciting new features and improvements that make building React applications even more enjoyable. In this post, we'll explore the key features and how to get started.
+
+## What's New in Next.js 15
+
+### Enhanced App Router
+The App Router has been further refined with better performance and developer experience. The new features include:
+
+- **Improved routing performance**
+- **Better error handling**
+- **Enhanced middleware capabilities**
+
+### React 19 Support
+Next.js 15 comes with full support for React 19, bringing:
+
+- New concurrent features
+- Improved server components
+- Better hydration strategies
+
+## Setting Up a New Project
+
+Getting started with Next.js 15 is straightforward:
+
+```bash
+npx create-next-app@latest my-app
+cd my-app
+npm run dev
+```
+
+This will create a new Next.js application with all the latest features enabled by default.
+
+## Key Features to Explore
+
+### Server Components
+Server Components allow you to render components on the server, reducing the JavaScript bundle size sent to the client.
+
+### Streaming
+Take advantage of streaming to improve perceived performance by sending parts of your page as they become ready.
+
+### Enhanced Image Optimization
+The Image component has been improved with better performance and new features for responsive images.
+
+## Best Practices
+
+When working with Next.js 15, keep these best practices in mind:
+
+1. **Use Server Components by default** - Only use Client Components when you need interactivity
+2. **Leverage the App Router** - Take advantage of the new routing capabilities
+3. **Optimize images** - Use the built-in Image component for better performance
+4. **Implement proper error boundaries** - Handle errors gracefully in your application
+
+## Conclusion
+
+Next.js 15 represents a significant step forward in React development. With its improved performance, better developer experience, and new features, it's an excellent choice for building modern web applications.
+
+Start exploring these features in your next project and see how they can improve your development workflow and application performance.
diff --git a/content/blog/responsive-uis-tailwind.mdx b/content/blog/responsive-uis-tailwind.mdx
new file mode 100644
index 0000000..b1ba8be
--- /dev/null
+++ b/content/blog/responsive-uis-tailwind.mdx
@@ -0,0 +1,123 @@
+---
+title: "Building Responsive UIs with Tailwind CSS"
+date: "2024-01-10"
+excerpt: "Master the art of creating beautiful, responsive user interfaces using Tailwind CSS utility classes."
+author: "Sayfullah Eid"
+tags: ["Tailwind CSS", "CSS", "UI/UX", "Web Design"]
+featured: true
+readTime: "7 min read"
+---
+
+# Building Responsive UIs with Tailwind CSS
+
+Tailwind CSS has revolutionized how we approach styling in modern web development. Its utility-first approach allows for rapid prototyping and consistent design systems.
+
+## Why Tailwind CSS?
+
+### Utility-First Approach
+Instead of writing custom CSS, you compose designs using utility classes:
+
+```html
+
+ Beautiful card component
+
+```
+
+### Responsive Design Made Easy
+Tailwind's responsive prefixes make it simple to create adaptive layouts:
+
+```html
+
+
+
+```
+
+## Essential Concepts
+
+### Spacing System
+Tailwind uses a consistent spacing scale based on 0.25rem increments:
+
+- `p-1` = 0.25rem padding
+- `p-4` = 1rem padding
+- `p-8` = 2rem padding
+
+### Color Palette
+The framework provides a comprehensive color system with various shades:
+
+- `bg-blue-100` (light blue)
+- `bg-blue-500` (medium blue)
+- `bg-blue-900` (dark blue)
+
+## Building a Card Component
+
+Let's create a responsive card component:
+
+```html
+