From 5d25258f20dafdb72075bc4562a37e6148f704a1 Mon Sep 17 00:00:00 2001 From: Saad AlKathiri <75491054+DevilCode0@users.noreply.github.com> Date: Thu, 27 Mar 2025 18:26:47 +0300 Subject: [PATCH] test --- .eslintrc.json | 3 + .gitignore | 36 + Build | 0 app/Components/AboutMe.tsx | 26 + app/Components/Header.tsx | 9 + app/Components/Projects.tsx | 138 + app/Components/SendMessage.tsx | 104 + app/Components/footer.tsx | 12 + app/Projects/Buildify/img/Picture1.png | Bin 0 -> 301744 bytes app/Projects/Buildify/img/Picture2.png | Bin 0 -> 15941 bytes app/Projects/Buildify/img/Picture3.png | Bin 0 -> 75730 bytes app/Projects/Buildify/img/Picture4.png | Bin 0 -> 111644 bytes app/Projects/Buildify/img/Picture5.png | Bin 0 -> 17411 bytes app/Projects/Buildify/img/Picture6.png | Bin 0 -> 27898 bytes app/Projects/Buildify/page.tsx | 122 + app/Projects/Library/img/Picture1.png | Bin 0 -> 871550 bytes app/Projects/Library/img/Picture10.png | Bin 0 -> 745878 bytes app/Projects/Library/img/Picture11.png | Bin 0 -> 2178289 bytes app/Projects/Library/img/Picture12.png | Bin 0 -> 1827685 bytes app/Projects/Library/img/Picture13.png | Bin 0 -> 1775002 bytes app/Projects/Library/img/Picture14.png | Bin 0 -> 1605559 bytes app/Projects/Library/img/Picture16.png | Bin 0 -> 1859801 bytes app/Projects/Library/img/Picture2.png | Bin 0 -> 2843483 bytes app/Projects/Library/img/Picture3.png | Bin 0 -> 1621500 bytes app/Projects/Library/img/Picture4.png | Bin 0 -> 571702 bytes app/Projects/Library/img/Picture5.png | Bin 0 -> 1639590 bytes app/Projects/Library/img/Picture6.png | Bin 0 -> 1663319 bytes app/Projects/Library/img/Picture7.png | Bin 0 -> 1816539 bytes app/Projects/Library/img/Picture8.png | Bin 0 -> 1746206 bytes app/Projects/Library/img/Picture9.png | Bin 0 -> 1782084 bytes app/Projects/Library/page.tsx | 136 + .../img/Screenshot 2024-06-21 004106.png | Bin 0 -> 97066 bytes .../img/Screenshot 2024-06-21 004132.png | Bin 0 -> 40846 bytes .../img/Screenshot 2024-06-21 004200.png | Bin 0 -> 49641 bytes .../img/Screenshot 2024-06-21 004223.png | Bin 0 -> 32934 bytes app/Projects/Portfolio/page.tsx | 110 + app/Projects/Server/page.tsx | 89 + app/Thumbs.db | Bin 0 -> 4096 bytes app/api/message/route.ts | 29 + app/favicon.ico | Bin 0 -> 15086 bytes app/globals.css | 24 + app/layout.tsx | 32 + app/opengraph-image.png | Bin 0 -> 82541 bytes app/page.tsx | 59 + app/robots.ts | 12 + app/sitemap.ts | 30 + app/svg/github-svgrepo-com.svg | 2 + app/svg/linkedin-svgrepo-com.svg | 2 + dbconfig/config.ts | 18 + dbconfig/models/message.ts | 14 + dockerfile | 17 + next.config.mjs | 4 + package-lock.json | 5153 +++++++++++++++++ package.json | 30 + postcss.config.mjs | 8 + public/next.svg | 1 + public/vercel.svg | 1 + tailwind.config.ts | 34 + tsconfig.json | 26 + 59 files changed, 6281 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 Build create mode 100644 app/Components/AboutMe.tsx create mode 100644 app/Components/Header.tsx create mode 100644 app/Components/Projects.tsx create mode 100644 app/Components/SendMessage.tsx create mode 100644 app/Components/footer.tsx create mode 100644 app/Projects/Buildify/img/Picture1.png create mode 100644 app/Projects/Buildify/img/Picture2.png create mode 100644 app/Projects/Buildify/img/Picture3.png create mode 100644 app/Projects/Buildify/img/Picture4.png create mode 100644 app/Projects/Buildify/img/Picture5.png create mode 100644 app/Projects/Buildify/img/Picture6.png create mode 100644 app/Projects/Buildify/page.tsx create mode 100644 app/Projects/Library/img/Picture1.png create mode 100644 app/Projects/Library/img/Picture10.png create mode 100644 app/Projects/Library/img/Picture11.png create mode 100644 app/Projects/Library/img/Picture12.png create mode 100644 app/Projects/Library/img/Picture13.png create mode 100644 app/Projects/Library/img/Picture14.png create mode 100644 app/Projects/Library/img/Picture16.png create mode 100644 app/Projects/Library/img/Picture2.png create mode 100644 app/Projects/Library/img/Picture3.png create mode 100644 app/Projects/Library/img/Picture4.png create mode 100644 app/Projects/Library/img/Picture5.png create mode 100644 app/Projects/Library/img/Picture6.png create mode 100644 app/Projects/Library/img/Picture7.png create mode 100644 app/Projects/Library/img/Picture8.png create mode 100644 app/Projects/Library/img/Picture9.png create mode 100644 app/Projects/Library/page.tsx create mode 100644 app/Projects/Portfolio/img/Screenshot 2024-06-21 004106.png create mode 100644 app/Projects/Portfolio/img/Screenshot 2024-06-21 004132.png create mode 100644 app/Projects/Portfolio/img/Screenshot 2024-06-21 004200.png create mode 100644 app/Projects/Portfolio/img/Screenshot 2024-06-21 004223.png create mode 100644 app/Projects/Portfolio/page.tsx create mode 100644 app/Projects/Server/page.tsx create mode 100644 app/Thumbs.db create mode 100644 app/api/message/route.ts create mode 100644 app/favicon.ico create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/opengraph-image.png create mode 100644 app/page.tsx create mode 100644 app/robots.ts create mode 100644 app/sitemap.ts create mode 100644 app/svg/github-svgrepo-com.svg create mode 100644 app/svg/linkedin-svgrepo-com.svg create mode 100644 dbconfig/config.ts create mode 100644 dbconfig/models/message.ts create mode 100644 dockerfile create mode 100644 next.config.mjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/Build b/Build new file mode 100644 index 0000000..e69de29 diff --git a/app/Components/AboutMe.tsx b/app/Components/AboutMe.tsx new file mode 100644 index 0000000..53ef4df --- /dev/null +++ b/app/Components/AboutMe.tsx @@ -0,0 +1,26 @@ +export default function AboutMe() { + return ( +
+

About me

+
+
+
+
+

+ A{" "} + + Software Engineer + +

+

With experience in

+
  • DevOps
  • +
  • FullStack Development
  • +
  • Application Dvelopment
  • +
  • Docker Containerization
  • +
  • 3D Designing
  • +
    +
    +
    +
    + ); +} diff --git a/app/Components/Header.tsx b/app/Components/Header.tsx new file mode 100644 index 0000000..056ba54 --- /dev/null +++ b/app/Components/Header.tsx @@ -0,0 +1,9 @@ +export default function Header() { + return ( +
    + + HOME + +
    + ); +} diff --git a/app/Components/Projects.tsx b/app/Components/Projects.tsx new file mode 100644 index 0000000..b918e0b --- /dev/null +++ b/app/Components/Projects.tsx @@ -0,0 +1,138 @@ +"use client"; +import React from "react"; +import { motion } from "framer-motion"; +import { useRouter } from "next/navigation"; + +export default function Projects() { + const [Select, setSelect] = React.useState("empty"); + const router = useRouter(); + return ( + +

    Projects

    +
    +
    +
    router.push("/Projects/Portfolio")} + className="m-4 p-3 border border-gray-700 rounded-md hover:bg-gray-800 cursor-pointer" + onMouseOver={() => { + setSelect("Portfolio"); + }} + > +

    June 2024

    +

    Portfolio page

    +

    + A beige to show my experience and skills +

    +
    +
    router.push("/Projects/Buildify")} + className="m-4 p-3 border border-gray-700 rounded-md hover:bg-gray-800 cursor-pointer" + onMouseOver={() => setSelect("Buildify")} + > +

    May 2024

    +

    Buildify

    +

    + My second graduation project for my bachelor's degree + It's an application for creating CVs and making + authentication links for your certificates +

    +
    +
    router.push("/Projects/Server")} + className="m-4 p-3 border border-gray-700 rounded-md hover:bg-gray-800 cursor-pointer" + onMouseOver={() => setSelect("Server")} + > +

    December 2022

    +

    Home Server

    +

    + A file server with ZFS redundant storage, hosting more than 30 + Docker +

    +
    +
    router.push("/Projects/Library")} + className="m-4 p-3 border border-gray-700 rounded-md hover:bg-gray-800 cursor-pointer" + onMouseOver={() => setSelect("Library")} + > +

    January 2022

    +

    Library store website

    +

    + A graduation project for my associate's degree. +

    +
    +
    + + + + + +
    +
    + ); +} diff --git a/app/Components/SendMessage.tsx b/app/Components/SendMessage.tsx new file mode 100644 index 0000000..956b4db --- /dev/null +++ b/app/Components/SendMessage.tsx @@ -0,0 +1,104 @@ +"use client"; +import axios from "axios"; +import React from "react"; +import { motion } from "framer-motion"; +export default function SendMessage() { + const [infomis, setinfomis] = React.useState(""); + async function handleSubmit(e: any) { + e.preventDefault(); + const name = e.target.name.value; + const email = e.target.email.value; + const subject = e.target.subject.value; + const body = e.target.body.value; + let error = false; + if (name === "") { + e.currentTarget.name.className = "inputEroor"; + error = true; + } + if (email === "") { + e.currentTarget.email.className = "inputEroor"; + error = true; + } + if (subject === "") { + e.currentTarget.subject.className = "inputEroor"; + error = true; + } + if (body === "") { + e.currentTarget.body.className = "inputEroor w-full"; + error = true; + } + if (error) { + return; + } + console.log(name, email, subject, body); + await axios + .post("/api/message", { name, email, subject, body }) + .catch((err) => { + console.log(err); + }) + .then((response: any) => { + if (response.data.success) { + e.target.name.value = ""; + e.target.email.value = ""; + e.target.subject.value = ""; + e.target.body.value = ""; + setinfomis("Message sent successfully"); + } + }); + } + return ( + +

    Send a message

    + { + e.currentTarget.className = "input"; + }} + /> + { + e.currentTarget.className = "input"; + }} + /> + { + e.currentTarget.className = "input"; + }} + /> + +