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"; + }} + /> + +