{"id":73375,"date":"2024-08-14T05:18:49","date_gmt":"2024-08-14T01:48:49","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/seamless-face-authentication-in-your-nextjs-app-with-faceio-55d7\/"},"modified":"2024-08-14T05:18:49","modified_gmt":"2024-08-14T01:48:49","slug":"seamless-face-authentication-in-your-nextjs-app-with-faceio-55d7","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/seamless-face-authentication-in-your-nextjs-app-with-faceio-55d7\/","title":{"rendered":"\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0686\u0647\u0631\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0634\u0645\u0627 \u0628\u0627 FACEIO"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u0645\u0627 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0631\u0622\u06cc\u0646\u062f \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f\u060c \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062d\u0633\u0627\u0628 FACEIO \u062a\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f\u062a\u0627\u0646\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0634\u06cc\u0631\u062c\u0647 \u0631\u0641\u062a\u0646\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u062e\u0648\u062f \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<p>Node.js \u0648 npm: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 Node.js \u0648 npm \u0631\u0627 \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u062a\u0648\u0633\u0639\u0647 \u062e\u0648\u062f \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0631\u0627 \u0627\u0632 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0631\u0633\u0645\u06cc Node.js \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<br \/>\nNext.js: \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Next.js \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u06cc\u06a9\u06cc \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0645\u0648\u0631\u062f \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>\u062d\u0633\u0627\u0628 FACEIO: \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 FACEIO \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 FACEIO \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 FACEIO \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0648 \u0627\u0639\u062a\u0628\u0627\u0631 \u0644\u0627\u0632\u0645 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 FACEIO<\/p>\n<p>1.\u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u062f\u06cc\u062f FACEIO \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f: \u0648\u0627\u0631\u062f \u06a9\u0646\u0633\u0648\u0644 FACEIO \u062e\u0648\u062f \u0634\u0648\u06cc\u062f \u0648 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u00ab\u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u062f\u06cc\u062f\u00bb \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>2.\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f: \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0645\u0627\u0646\u0646\u062f \u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 URL \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062a\u0645\u0627\u0633 (\u06a9\u0647 URL \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f) \u0631\u0627 \u067e\u0631 \u06a9\u0646\u06cc\u062f. \u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0641\u0631\u0645\u060c \u0631\u0648\u06cc \u00ab\u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u00bb \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>3.FACEIO_APP_ID \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f: \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u06cc\u06a9 FACEIO_APP_ID \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f. \u0627\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u062f\u063a\u0627\u0645 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0634\u0645\u0627<\/p>\n<p>1.\u0628\u0633\u062a\u0647 FACEIO NPM \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f: \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 Next.js \u062e\u0648\u062f\u060c \u0628\u0633\u062a\u0647 faceio-npm \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 npm \u06cc\u0627 yarn \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>2.\u06cc\u06a9 \u0645\u0624\u0644\u0641\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f: \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 Next.js \u062e\u0648\u062f\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 Components\/Dashboard.tsx (\u06cc\u0627 \u0647\u0631 \u0646\u0627\u0645 \u062f\u06cc\u06af\u0631\u06cc \u06a9\u0647 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc \u062f\u0647\u06cc\u062f) \u0628\u0627 \u06a9\u062f \u0632\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>\/\/ Dashboard.tsx<br \/>\nimport React from &#8220;react&#8221;;<br \/>\nimport { Card, CardHeader, CardTitle, CardContent } from &#8220;@\/components\/ui\/card&#8221;;<br \/>\nimport { Button } from &#8220;@\/components\/ui\/button&#8221;;<br \/>\nimport { FaUserCircle, FaLock, FaCode, FaChartBar, FaSignOutAlt } from &#8216;react-icons\/fa&#8217;;<\/p>\n<p>interface DashboardProps {<br \/>\n  userEmail: string;<br \/>\n  onLogout: () =&gt; void;<br \/>\n}<\/p>\n<p>const Dashboard: React.FC = ({ userEmail, onLogout }) =&gt; {<br \/>\n  return (<\/p>\n<p>            Welcome to FaceIO<br \/>\n            Email: {userEmail}<\/p>\n<p>             Logout<\/p>\n<p>          You have successfully logged in.<\/p>\n<p>      Facial Authentication for the Web<\/p>\n<p>               Secure &amp; Easy<\/p>\n<p>            Cross-browser, secure &amp; easy to implement. Passwordless Authentication SDKs powered by Face Recognition for Web Sites &amp; Apps.<\/p>\n<p>               Privacy-Focused<\/p>\n<p>            Your facial data is encrypted and securely stored. We prioritize user privacy and data protection.<\/p>\n<p>               Developer-Friendly<\/p>\n<p>            Easy integration with clear documentation. Get started quickly and implement facial authentication in your projects.<\/p>\n<p>               Analytics &amp; Insights<\/p>\n<p>            Gain valuable insights into user authentication patterns and improve your applications security.<\/p>\n<p>          Get Started \u2192<\/p>\n<p>          Integration Guide \u2192<\/p>\n<p>          FACEIO Console \u2192<\/p>\n<p>          Ready to implement facial authentication in your project?<br \/>\n          Check out our documentation and start securing your application today!<\/p>\n<p>  );<br \/>\n};<\/p>\n<p>export default Dashboard;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>3.\u0645\u0624\u0644\u0641\u0647 Dashboard.tsx \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 Login.tsx Component \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>\/* eslint-disable react-hooks\/exhaustive-deps *\/<br \/>\n&#8220;use client&#8221;;<br \/>\nimport {<br \/>\n  Card,<br \/>\n  CardContent,<br \/>\n  CardDescription,<br \/>\n  CardFooter,<br \/>\n  CardHeader,<br \/>\n  CardTitle,<br \/>\n} from &#8220;@\/components\/ui\/card&#8221;;<br \/>\nimport { Terminal } from &#8220;lucide-react&#8221;;<br \/>\nimport { MailIcon, CheckCircleIcon } from &#8220;lucide-react&#8221;;<br \/>\nimport { Alert, AlertDescription, AlertTitle } from &#8220;@\/components\/ui\/alert&#8221;;<br \/>\nimport { Input } from &#8220;@\/components\/ui\/input&#8221;;<br \/>\nimport { Label } from &#8220;@\/components\/ui\/label&#8221;;<br \/>\nimport { Button } from &#8220;.\/ui\/button&#8221;;<br \/>\nimport faceIO from &#8220;@faceio\/fiojs&#8221;;<br \/>\nimport { useEffect, useRef, useState } from &#8220;react&#8221;;<br \/>\nimport Link from &#8220;next\/link&#8221;;<br \/>\nimport { toast } from &#8220;sonner&#8221;;<br \/>\nimport Dashboard from &#8220;.\/Dashboard&#8221;;<\/p>\n<p>type Props = {};<\/p>\n<p>const Login: React.FC = ({}) =&gt; {<br \/>\n  const faceioRef = useRef(null);<br \/>\n  const [email, setEmail] = useState(&#8220;&#8221;);<br \/>\n  const [userLogin, setUserLogin] = useState(&#8220;&#8221;);<br \/>\n  const [isLoggedIn, setIsLoggedIn] = useState(false);<\/p>\n<p>  const publicKey = process.env.NEXT_PUBLIC_FACEIO_PUBLIC_ID as string;<\/p>\n<p>  const initialiseFaceio = async () =&gt; {<br \/>\n    try {<br \/>\n      faceioRef.current = new faceIO(publicKey);<br \/>\n      console.log(&#8220;FaceIO initialized successfully&#8221;);<br \/>\n    } catch (error) {<br \/>\n      console.log(error);<br \/>\n      handleError(error);<br \/>\n    }<br \/>\n  };<\/p>\n<p>  useEffect(() =&gt; {<br \/>\n    initialiseFaceio();<br \/>\n  }, []);<\/p>\n<p>  const handleRegister = async () =&gt; {<br \/>\n    try {<br \/>\n      if (!faceioRef.current) {<br \/>\n        console.error(&#8220;FaceIO instance is not initialized&#8221;);<br \/>\n        return;<br \/>\n      }<\/p>\n<p>      await faceioRef.current?.enroll({<br \/>\n        userConsent: false,<br \/>\n        locale: &#8220;auto&#8221;,<br \/>\n        payload: { email: `${email}` },<br \/>\n      });<br \/>\n      toast.success(&#8220;Successfully Registered user.&#8221;);<br \/>\n    } catch (error) {<br \/>\n      handleError(error);<br \/>\n      faceioRef.current?.restartSession();<br \/>\n    }<br \/>\n  };<\/p>\n<p>  const handleLogin = async () =&gt; {<br \/>\n    try {<br \/>\n      const authenticate = await faceioRef.current?.authenticate();<br \/>\n      console.log(&#8220;User authenticated successfully:&#8221;, authenticate);<br \/>\n      setUserLogin(authenticate.payload.email);<br \/>\n      setIsLoggedIn(true);<br \/>\n      toast.success(&#8220;Successfully logged in.&#8221;);<br \/>\n    } catch (error) {<br \/>\n      console.log(error);<br \/>\n      handleError(error);<br \/>\n    }<br \/>\n  };<\/p>\n<p>  const handleLogout = () =&gt; {<br \/>\n    setIsLoggedIn(false);<br \/>\n    setUserLogin(&#8220;&#8221;);<br \/>\n    toast.success(&#8220;Successfully logged out.&#8221;);<br \/>\n  };<\/p>\n<p>  function handleError(errCode: any) {<br \/>\n    const fioErrs = faceioRef.current?.fetchAllErrorCodes()!;<br \/>\n    switch (errCode) {<br \/>\n      case fioErrs.PERMISSION_REFUSED:<br \/>\n        toast.info(&#8220;Access to the Camera stream was denied by the end user&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.NO_FACES_DETECTED:<br \/>\n        toast.info(<br \/>\n          &#8220;No faces were detected during the enroll or authentication process&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.UNRECOGNIZED_FACE:<br \/>\n        toast.info(&#8220;Unrecognized face on this application&#8217;s Facial Index&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.MANY_FACES:<br \/>\n        toast.info(&#8220;Two or more faces were detected during the scan process&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.FACE_DUPLICATION:<br \/>\n        toast.info(<br \/>\n          &#8220;User enrolled previously (facial features already recorded). Cannot enroll again!&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.MINORS_NOT_ALLOWED:<br \/>\n        toast.info(&#8220;Minors are not allowed to enroll on this application!&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.PAD_ATTACK:<br \/>\n        toast.info(<br \/>\n          &#8220;Presentation (Spoof) Attack (PAD) detected during the scan process&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.FACE_MISMATCH:<br \/>\n        toast.info(<br \/>\n          &#8220;Calculated Facial Vectors of the user being enrolled do not matches&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.WRONG_PIN_CODE:<br \/>\n        toast.info(&#8220;Wrong PIN code supplied by the user being authenticated&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.PROCESSING_ERR:<br \/>\n        toast.info(&#8220;Server side error&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.UNAUTHORIZED:<br \/>\n        toast.info(<br \/>\n          &#8220;Your application is not allowed to perform the requested operation (eg. Invalid ID, Blocked, Paused, etc.). Refer to the FACEIO Console for additional information&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.TERMS_NOT_ACCEPTED:<br \/>\n        toast.info(<br \/>\n          &#8220;Terms &amp; Conditions set out by FACEIO\/host application rejected by the end user&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.UI_NOT_READY:<br \/>\n        toast.info(<br \/>\n          &#8220;The FACEIO Widget could not be (or is being) injected onto the client DOM&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.SESSION_EXPIRED:<br \/>\n        toast.info(<br \/>\n          &#8220;Client session expired. The first promise was already fulfilled but the host application failed to act accordingly&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.TIMEOUT:<br \/>\n        toast.info(<br \/>\n          &#8220;Ongoing operation timed out (eg, Camera access permission, ToS accept delay, Face not yet detected, Server Reply, etc.)&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.TOO_MANY_REQUESTS:<br \/>\n        toast.info(<br \/>\n          &#8220;Widget instantiation requests exceeded for freemium applications. Does not apply for upgraded applications&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.EMPTY_ORIGIN:<br \/>\n        toast.info(&#8220;Origin or Referer HTTP request header is empty or missing&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.FORBIDDDEN_ORIGIN:<br \/>\n        toast.info(&#8220;Domain origin is forbidden from instantiating fio.js&#8221;);<br \/>\n        break;<br \/>\n      case fioErrs.FORBIDDDEN_COUNTRY:<br \/>\n        toast.info(<br \/>\n          &#8220;Country ISO-3166-1 Code is forbidden from instantiating fio.js&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.SESSION_IN_PROGRESS:<br \/>\n        toast.info(<br \/>\n          &#8220;Another authentication or enrollment session is in progress&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n      case fioErrs.NETWORK_IO:<br \/>\n      default:<br \/>\n        toast.info(<br \/>\n          &#8220;Error while establishing network connection with the target FACEIO processing node&#8221;<br \/>\n        );<br \/>\n        break;<br \/>\n    }<br \/>\n  }<\/p>\n<p>  if (isLoggedIn) {<br \/>\n    return ;<br \/>\n  }<\/p>\n<p>  return (<\/p>\n<p>            Secure Workspace<\/p>\n<p>            Authenticate to access your personalized work environment<\/p>\n<p>              Work Email<\/p>\n<p>             setEmail(e.target.value)}<br \/>\n            \/&gt;<\/p>\n<p>              Access Workspace<\/p>\n<p>              Register New Account<\/p>\n<p>            Protected by FaceIO\u2122 Technology.<\/p>\n<p>              Learn about our security measures<\/p>\n<p>      {userLogin &amp;&amp; !isLoggedIn &amp;&amp; (<\/p>\n<p>              Workspace Access Granted<br \/>\n              Logged in as: {userLogin}<\/p>\n<p>      )}<\/p>\n<p>  );<br \/>\n};<\/p>\n<p>export default Login;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u00abNEXT_PUBLIC_FACEIO_PUBLIC_ID\u00bb \u0631\u0627 \u0628\u0627 FACEIO_APP_ID \u0648\u0627\u0642\u0639\u06cc \u06a9\u0647 \u0627\u0632 \u06a9\u0646\u0633\u0648\u0644 FACEIO \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0645\u0624\u0644\u0641\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 \u0631\u0627 \u062f\u0631 \u0635\u0641\u062d\u0647 Next.js \u062e\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f: \u062f\u0631 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c app\/page.tsx)\u060c \u0645\u0624\u0644\u0641\u0647 Home \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646 \u0631\u0627 \u0631\u0646\u062f\u0631 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>import { buttonVariants } from &#8220;@\/components\/ui\/button&#8221;;<br \/>\nimport { cn } from &#8220;@\/lib\/utils&#8221;;<br \/>\nimport Link from &#8220;next\/link&#8221;;<br \/>\nimport { FaUserShield, FaImage, FaCode, FaRobot } from &#8216;react-icons\/fa&#8217;;<\/p>\n<p>export default function Home() {<br \/>\n  const demos = [<br \/>\n    { title: &#8220;FACIO Web Authentication&#8221;, href: &#8220;\/faceio&#8221;, icon: FaUserShield },<br \/>\n    { title: &#8220;Image Processing&#8221;, href: &#8220;\/imageprocessing&#8221;, icon: FaImage },<br \/>\n    { title: &#8220;Code Generation&#8221;, href: &#8220;\/codegeneration&#8221;, icon: FaCode },<br \/>\n    { title: &#8220;AI Assistant&#8221;, href: &#8220;\/aiassistant&#8221;, icon: FaRobot },<br \/>\n  ];<\/p>\n<p>  return (<\/p>\n<p>          Explore cutting-edge technologies and innovative solutions<\/p>\n<p>          {demos.map((demo, index) =&gt; (<\/p>\n<p>              {demo.title}<\/p>\n<p>          ))}<\/p>\n<p>          Why Choose PixLab?<\/p>\n<p>            \u2728 Cutting-edge technologies<br \/>\n            \ud83d\ude80 High-performance solutions<br \/>\n            \ud83d\udd12 Advanced security features<br \/>\n            \ud83c\udf10 Seamless integrations<\/p>\n<p>          \u00a9 2024 PixLab. All rights reserved. Empowering innovation through technology.<\/p>\n<p>  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0647\u0645\u06cc\u0646! \u0627\u06a9\u0646\u0648\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 &#8220;Authenticate with Face&#8221; \u06a9\u0644\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u0646\u062f\u060c \u0648\u06cc\u062c\u062a FACEIO \u0638\u0627\u0647\u0631 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u06af\u0631\u0641\u062a\u0646 \u0648\u06cc\u062c\u062a FACEIO \u062f\u0631 \u0639\u0645\u0644 &#8211; \u062b\u0628\u062a \u0646\u0627\u0645<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648\u06cc\u062c\u062a FACEIO\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 GIF \u0627\u0632 \u0631\u0648\u0646\u062f \u062b\u0628\u062a \u0646\u0627\u0645 \u0628\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n<p>\u0627\u06cc\u0646 GIF \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u062b\u0628\u062a \u0686\u0647\u0631\u0647 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0631\u0627 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f. \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0686\u0647\u0631\u0647 \u062e\u0648\u062f \u0631\u0627 \u062b\u0628\u062a \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u062f\u0648\u0646 \u062f\u0631\u0632 \u062f\u0631 \u0644\u0627\u06af\u06cc\u0646 \u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p>\u06af\u0631\u0641\u062a\u0646 \u0648\u06cc\u062c\u062a FACEIO \u062f\u0631 \u0639\u0645\u0644<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648\u06cc\u062c\u062a FACEIO\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 GIF \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n<p>\u0627\u06cc\u0646 GIF \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f.<\/p>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc FACEIO<\/p>\n<p>\u062d\u0630\u0641 \u062b\u0628\u062a \u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc: \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u062b\u0628\u062a \u0646\u0627\u0645 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0632 \u062f\u0631\u06af\u06cc\u0631\u06cc \u0647\u0627\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u06cc\u0627 \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u062f.<br \/>\n\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0636\u062f \u062c\u0639\u0644: \u0628\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0648 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0644\u0627\u0634\u200c\u0647\u0627\u06cc \u062c\u0639\u0644 \u0686\u0647\u0631\u0647\u060c \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0642\u0637 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0648 \u0648\u0627\u0642\u0639\u06cc \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0631\u062f.<br \/>\n\u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0628\u0648\u062f\u0646 \u067e\u06cc\u0646 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u06a9\u0646\u06cc\u062f: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u067e\u06cc\u0646 \u200b\u200b\u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0627\u0633\u062a \u062a\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u063a\u06cc\u0631\u0645\u062c\u0627\u0632 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<br \/>\n\u0627\u0639\u0645\u0627\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc: \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0628\u06cc\u0634\u062a\u0631\u060c \u0646\u0645\u0648\u0646\u0647 \u0633\u0627\u0632\u06cc \u0648\u06cc\u062c\u062a FACEIO \u0631\u0627 \u0628\u0647 \u0646\u0627\u0645 \u0647\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 \u0648 \u06a9\u0634\u0648\u0631\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0634\u0645\u0627<\/p>\n<p>\u0627\u062f\u063a\u0627\u0645 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0686\u0646\u062f\u06cc\u0646 \u0645\u0632\u06cc\u062a \u062f\u0627\u0631\u062f:<\/p>\n<p>\u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a\u0647: \u0648\u06cc\u062c\u062a FACEIO \u06cc\u06a9 \u062c\u0631\u06cc\u0627\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0648 \u0634\u0647\u0648\u062f\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0648\u0631\u0648\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645: FACEIO \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647\u200c\u0647\u0627 \u0648 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062b\u0627\u0628\u062a\u06cc \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<br \/>\n\u0627\u062f\u063a\u0627\u0645 \u0622\u0633\u0627\u0646: \u0628\u0633\u062a\u0647 faceio-npm \u0641\u0631\u0622\u06cc\u0646\u062f \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 \u0631\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<br \/>\n\u0627\u0646\u062c\u0645\u0646 \u0627\u0646\u062c\u0645\u0646 FACEIO: \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u0632 \u0627\u0646\u062c\u0645\u0646 FACEIO \u06a9\u0645\u06a9 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0645\u0631\u0627\u062d\u0644 \u0630\u06a9\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u062c\u0631\u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u06cc\u0645\u0646 \u0648 \u06a9\u0627\u0631\u0628\u0631\u067e\u0633\u0646\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062e\u0648\u062f \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u06cc\u0641\u06cc\u062a \u06a9\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u062e\u0648\u062f \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0633\u0624\u0627\u0644 \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u06cc\u062f \u06cc\u0627 \u0628\u0647 \u06a9\u0645\u06a9 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0627 \u062a\u06cc\u0645 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc FACEIO \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06cc\u0627 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u062c\u0627\u0645\u0639 FACEIO \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u062f \u0645\u0646\u0628\u0639 \u06a9\u0627\u0645\u0644 \u0627\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0645\u062e\u0632\u0646 GitHub \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<div data-article-id=\"1958425\" id=\"article-body\">\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u0645\u0627 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0631\u0622\u06cc\u0646\u062f \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f\u060c \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062d\u0633\u0627\u0628 FACEIO \u062a\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f\u062a\u0627\u0646\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p><strong>\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/strong><\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0634\u06cc\u0631\u062c\u0647 \u0631\u0641\u062a\u0646\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u062e\u0648\u062f \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<ul>\n<li>\n<p><strong>Node.js \u0648 npm<\/strong>: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 Node.js \u0648 npm \u0631\u0627 \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u062a\u0648\u0633\u0639\u0647 \u062e\u0648\u062f \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0631\u0627 \u0627\u0632 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0631\u0633\u0645\u06cc Node.js \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>Next.js<\/strong>: \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Next.js \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u06cc\u06a9\u06cc \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0645\u0648\u0631\u062f \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>\n<strong>\u062d\u0633\u0627\u0628 FACEIO<\/strong>: \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 FACEIO \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 FACEIO \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 FACEIO \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0648 \u0627\u0639\u062a\u0628\u0627\u0631 \u0644\u0627\u0632\u0645 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p><strong>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 FACEIO<\/strong><\/p>\n<p>1.<strong>\u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u062f\u06cc\u062f FACEIO \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong>: \u0648\u0627\u0631\u062f \u06a9\u0646\u0633\u0648\u0644 FACEIO \u062e\u0648\u062f \u0634\u0648\u06cc\u062f \u0648 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u00ab\u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u062f\u06cc\u062f\u00bb \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l4wq0yjz32qm603gp3u.png\" alt=\"fac1\" loading=\"lazy\" width=\"800\" height=\"427\" title=\"\"><\/p>\n<p>2.<strong>\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f<\/strong>: \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0645\u0627\u0646\u0646\u062f \u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 URL \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062a\u0645\u0627\u0633 (\u06a9\u0647 URL \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f) \u0631\u0627 \u067e\u0631 \u06a9\u0646\u06cc\u062f. \u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0641\u0631\u0645\u060c \u0631\u0648\u06cc \u00ab\u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u00bb \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hts9kz9g7uu2dmhhcs0.png\" alt=\"fac2\" loading=\"lazy\" width=\"800\" height=\"428\" title=\"\"><\/p>\n<p>3.<strong>FACEIO_APP_ID \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<\/strong>: \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u06cc\u06a9 FACEIO_APP_ID \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f. \u0627\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5ubk5ptdgigew61dv87.png\" alt=\"fac3\" loading=\"lazy\" width=\"800\" height=\"427\" title=\"\"><\/p>\n<p><strong>\u0627\u062f\u063a\u0627\u0645 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0634\u0645\u0627<\/strong><\/p>\n<p>1.<strong>\u0628\u0633\u062a\u0647 FACEIO NPM \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/strong>: \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 Next.js \u062e\u0648\u062f\u060c \u0628\u0633\u062a\u0647 faceio-npm \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 npm \u06cc\u0627 yarn \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a0l6nq1tmpswabhxj1c.png\" alt=\"npm\" loading=\"lazy\" width=\"800\" height=\"266\" title=\"\"><\/p>\n<p>2.<strong>\u06cc\u06a9 \u0645\u0624\u0644\u0641\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong>: \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 Next.js \u062e\u0648\u062f\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 Components\/Dashboard.tsx (\u06cc\u0627 \u0647\u0631 \u0646\u0627\u0645 \u062f\u06cc\u06af\u0631\u06cc \u06a9\u0647 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc \u062f\u0647\u06cc\u062f) \u0628\u0627 \u06a9\u062f \u0632\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ Dashboard.tsx\nimport React from \"react\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"@\/components\/ui\/card\";\nimport { Button } from \"@\/components\/ui\/button\";\nimport { FaUserCircle, FaLock, FaCode, FaChartBar, FaSignOutAlt } from 'react-icons\/fa';\n\ninterface DashboardProps {\n  userEmail: string;\n  onLogout: () =&gt; void;\n}\n\nconst Dashboard: React.FC<dashboardprops> = ({ userEmail, onLogout }) =&gt; {\n  return (\n    <div classname=\"max-w-7xl mx-auto p-4 md:p-6 space-y-6\">\n      <card classname=\"w-full bg-black text-white\">\n        <cardheader classname=\"flex flex-col sm:flex-row items-start sm:items-center justify-between space-y-4 sm:space-y-0\">\n          <div>\n            <cardtitle classname=\"text-2xl sm:text-3xl font-bold\">Welcome to FaceIO<\/cardtitle>\n            <p classname=\"text-base sm:text-lg mt-2\">Email: {userEmail}<\/p>\n          <\/div>\n          <button variant=\"secondary\" size=\"sm\" onclick=\"{onLogout}\" classname=\"flex items-center w-full sm:w-auto justify-center mt-8\">\n            <fasignoutalt classname=\"mr-2\"\/> Logout\n          <\/button>\n        <\/cardheader>\n        <cardcontent>\n          <p classname=\"text-lg sm:text-xl mb-4\">You have successfully logged in.<\/p>\n        <\/cardcontent>\n      <\/card>\n\n      <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/seamless-face-authentication-in-your-nextjs-app-with-faceio-55d7\/#Facial_Authentication_for_the_Web\" >Facial Authentication for the Web<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/seamless-face-authentication-in-your-nextjs-app-with-faceio-55d7\/#Why_Choose_PixLab\" >Why Choose PixLab?<\/a><\/li><\/ul><\/nav><\/div>\n<h2 classname=\"text-xl sm:text-2xl font-bold text-center my-6\"><span class=\"ez-toc-section\" id=\"Facial_Authentication_for_the_Web\"><\/span>Facial Authentication for the Web<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n      <div classname=\"grid grid-cols-1 sm:grid-cols-2 gap-4 sm:gap-6\">\n        <card>\n          <cardheader>\n            <cardtitle classname=\"flex items-center text-base sm:text-lg\">\n              <fausercircle classname=\"mr-2\"\/> Secure &amp; Easy\n            <\/cardtitle>\n          <\/cardheader>\n          <cardcontent>\n            <p classname=\"text-sm sm:text-base\">Cross-browser, secure &amp; easy to implement. Passwordless Authentication SDKs powered by Face Recognition for Web Sites &amp; Apps.<\/p>\n          <\/cardcontent>\n        <\/card>\n\n        <card>\n          <cardheader>\n            <cardtitle classname=\"flex items-center text-base sm:text-lg\">\n              <falock classname=\"mr-2\"\/> Privacy-Focused\n            <\/cardtitle>\n          <\/cardheader>\n          <cardcontent>\n            <p classname=\"text-sm sm:text-base\">Your facial data is encrypted and securely stored. We prioritize user privacy and data protection.<\/p>\n          <\/cardcontent>\n        <\/card>\n\n        <card>\n          <cardheader>\n            <cardtitle classname=\"flex items-center text-base sm:text-lg\">\n              <facode classname=\"mr-2\"\/> Developer-Friendly\n            <\/cardtitle>\n          <\/cardheader>\n          <cardcontent>\n            <p classname=\"text-sm sm:text-base\">Easy integration with clear documentation. Get started quickly and implement facial authentication in your projects.<\/p>\n          <\/cardcontent>\n        <\/card>\n\n        <card>\n          <cardheader>\n            <cardtitle classname=\"flex items-center text-base sm:text-lg\">\n              <fachartbar classname=\"mr-2\"\/> Analytics &amp; Insights\n            <\/cardtitle>\n          <\/cardheader>\n          <cardcontent>\n            <p classname=\"text-sm sm:text-base\">Gain valuable insights into user authentication patterns and improve your applications security.<\/p>\n          <\/cardcontent>\n        <\/card>\n      <\/div>\n\n      <p>\n        <button variant=\"default\" size=\"lg\" classname=\"w-full sm:w-auto\">\n          Get Started \u2192\n        <\/button>\n        <button variant=\"outline\" size=\"lg\" classname=\"w-full sm:w-auto\">\n          Integration Guide \u2192\n        <\/button>\n        <button variant=\"secondary\" size=\"lg\" classname=\"w-full sm:w-auto\">\n          FACEIO Console \u2192\n        <\/button>\n      <\/p>\n\n      <card classname=\"mt-8 bg-gray-100\">\n        <cardcontent classname=\"text-center py-6\">\n          <p classname=\"text-base sm:text-lg font-semibold\">Ready to implement facial authentication in your project?<\/p>\n          <p classname=\"mt-2 text-sm sm:text-base\">Check out our documentation and start securing your application today!<\/p>\n        <\/cardcontent>\n      <\/card>\n    <\/div>\n  );\n};\n\nexport default Dashboard;\n<\/dashboardprops><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>3.<strong>\u0645\u0624\u0644\u0641\u0647 Dashboard.tsx \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 Login.tsx Component \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/strong>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/* eslint-disable react-hooks\/exhaustive-deps *\/\n\"use client\";\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@\/components\/ui\/card\";\nimport { Terminal } from \"lucide-react\";\nimport { MailIcon, CheckCircleIcon } from \"lucide-react\";\nimport { Alert, AlertDescription, AlertTitle } from \"@\/components\/ui\/alert\";\nimport { Input } from \"@\/components\/ui\/input\";\nimport { Label } from \"@\/components\/ui\/label\";\nimport { Button } from \".\/ui\/button\";\nimport faceIO from \"@faceio\/fiojs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport Link from \"next\/link\";\nimport { toast } from \"sonner\";\nimport Dashboard from \".\/Dashboard\";\n\ntype Props = {};\n\nconst Login: React.FC<props> = ({}) =&gt; {\n  const faceioRef = useRef<faceio null=\"\">(null);\n  const [email, setEmail] = useState(\"\");\n  const [userLogin, setUserLogin] = useState(\"\");\n  const [isLoggedIn, setIsLoggedIn] = useState(false);\n\n  const publicKey = process.env.NEXT_PUBLIC_FACEIO_PUBLIC_ID as string;\n\n  const initialiseFaceio = async () =&gt; {\n    try {\n      faceioRef.current = new faceIO(publicKey);\n      console.log(\"FaceIO initialized successfully\");\n    } catch (error) {\n      console.log(error);\n      handleError(error);\n    }\n  };\n\n  useEffect(() =&gt; {\n    initialiseFaceio();\n  }, []);\n\n  const handleRegister = async () =&gt; {\n    try {\n      if (!faceioRef.current) {\n        console.error(\"FaceIO instance is not initialized\");\n        return;\n      }\n\n      await faceioRef.current?.enroll({\n        userConsent: false,\n        locale: \"auto\",\n        payload: { email: `${email}` },\n      });\n      toast.success(\"Successfully Registered user.\");\n    } catch (error) {\n      handleError(error);\n      faceioRef.current?.restartSession();\n    }\n  };\n\n  const handleLogin = async () =&gt; {\n    try {\n      const authenticate = await faceioRef.current?.authenticate();\n      console.log(\"User authenticated successfully:\", authenticate);\n      setUserLogin(authenticate.payload.email);\n      setIsLoggedIn(true);\n      toast.success(\"Successfully logged in.\");\n    } catch (error) {\n      console.log(error);\n      handleError(error);\n    }\n  };\n\n  const handleLogout = () =&gt; {\n    setIsLoggedIn(false);\n    setUserLogin(\"\");\n    toast.success(\"Successfully logged out.\");\n  };\n\n  function handleError(errCode: any) {\n    const fioErrs = faceioRef.current?.fetchAllErrorCodes()!;\n    switch (errCode) {\n      case fioErrs.PERMISSION_REFUSED:\n        toast.info(\"Access to the Camera stream was denied by the end user\");\n        break;\n      case fioErrs.NO_FACES_DETECTED:\n        toast.info(\n          \"No faces were detected during the enroll or authentication process\"\n        );\n        break;\n      case fioErrs.UNRECOGNIZED_FACE:\n        toast.info(\"Unrecognized face on this application's Facial Index\");\n        break;\n      case fioErrs.MANY_FACES:\n        toast.info(\"Two or more faces were detected during the scan process\");\n        break;\n      case fioErrs.FACE_DUPLICATION:\n        toast.info(\n          \"User enrolled previously (facial features already recorded). Cannot enroll again!\"\n        );\n        break;\n      case fioErrs.MINORS_NOT_ALLOWED:\n        toast.info(\"Minors are not allowed to enroll on this application!\");\n        break;\n      case fioErrs.PAD_ATTACK:\n        toast.info(\n          \"Presentation (Spoof) Attack (PAD) detected during the scan process\"\n        );\n        break;\n      case fioErrs.FACE_MISMATCH:\n        toast.info(\n          \"Calculated Facial Vectors of the user being enrolled do not matches\"\n        );\n        break;\n      case fioErrs.WRONG_PIN_CODE:\n        toast.info(\"Wrong PIN code supplied by the user being authenticated\");\n        break;\n      case fioErrs.PROCESSING_ERR:\n        toast.info(\"Server side error\");\n        break;\n      case fioErrs.UNAUTHORIZED:\n        toast.info(\n          \"Your application is not allowed to perform the requested operation (eg. Invalid ID, Blocked, Paused, etc.). Refer to the FACEIO Console for additional information\"\n        );\n        break;\n      case fioErrs.TERMS_NOT_ACCEPTED:\n        toast.info(\n          \"Terms &amp; Conditions set out by FACEIO\/host application rejected by the end user\"\n        );\n        break;\n      case fioErrs.UI_NOT_READY:\n        toast.info(\n          \"The FACEIO Widget could not be (or is being) injected onto the client DOM\"\n        );\n        break;\n      case fioErrs.SESSION_EXPIRED:\n        toast.info(\n          \"Client session expired. The first promise was already fulfilled but the host application failed to act accordingly\"\n        );\n        break;\n      case fioErrs.TIMEOUT:\n        toast.info(\n          \"Ongoing operation timed out (eg, Camera access permission, ToS accept delay, Face not yet detected, Server Reply, etc.)\"\n        );\n        break;\n      case fioErrs.TOO_MANY_REQUESTS:\n        toast.info(\n          \"Widget instantiation requests exceeded for freemium applications. Does not apply for upgraded applications\"\n        );\n        break;\n      case fioErrs.EMPTY_ORIGIN:\n        toast.info(\"Origin or Referer HTTP request header is empty or missing\");\n        break;\n      case fioErrs.FORBIDDDEN_ORIGIN:\n        toast.info(\"Domain origin is forbidden from instantiating fio.js\");\n        break;\n      case fioErrs.FORBIDDDEN_COUNTRY:\n        toast.info(\n          \"Country ISO-3166-1 Code is forbidden from instantiating fio.js\"\n        );\n        break;\n      case fioErrs.SESSION_IN_PROGRESS:\n        toast.info(\n          \"Another authentication or enrollment session is in progress\"\n        );\n        break;\n      case fioErrs.NETWORK_IO:\n      default:\n        toast.info(\n          \"Error while establishing network connection with the target FACEIO processing node\"\n        );\n        break;\n    }\n  }\n\n  if (isLoggedIn) {\n    return <dashboard useremail=\"{userLogin}\" onlogout=\"{handleLogout}\"\/>;\n  }\n\n  return (\n    <div classname=\"min-h-screen bg-gradient-to-r from-cyan-500 to-blue-500 flex items-center justify-center p-4 w-full\">\n      <card classname=\"w-[400px] bg-white shadow-xl rounded-xl overflow-hidden\">\n        <cardheader classname=\"bg-gray-50 border-b p-6\">\n          <cardtitle classname=\"text-2xl font-bold text-gray-800\">\n            Secure Workspace\n          <\/cardtitle>\n          <carddescription classname=\"text-sm text-gray-600\">\n            Authenticate to access your personalized work environment\n          <\/carddescription>\n        <\/cardheader>\n        <cardcontent classname=\"p-6 space-y-4\">\n          <p>\n            <label htmlfor=\"email\" classname=\"text-sm font-medium text-gray-700\">\n              Work Email\n            <\/label>\n            <input id=\"email\" type=\"email\" placeholder=\"you@company.com\" classname=\"w-full px-3 py-2 border rounded-md\" onchange=\"{(e)\"\/> setEmail(e.target.value)}\n            \/&gt;\n          <\/p>\n          <p>\n            <button classname=\"w-full bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 rounded-md transition duration-300 ease-in-out\" onclick=\"{handleLogin}\">\n              Access Workspace\n            <\/button>\n            <button classname=\"w-full bg-gray-100 hover:bg-gray-200 text-gray-800 font-medium py-2 rounded-md transition duration-300 ease-in-out\" onclick=\"{handleRegister}\" disabled=\"{!email.includes(&quot;@&quot;)}\">\n              Register New Account\n            <\/button>\n          <\/p>\n        <\/cardcontent>\n        <cardfooter classname=\"bg-gray-50 border-t p-4\">\n          <p>\n            Protected by FaceIO\u2122 Technology.\n            <link href=\"https:\/\/faceio.net\/security-policy\" classname=\"text-blue-600 hover:underline ml-1\"\/>\n              Learn about our security measures\n            \n          <\/p>\n        <\/cardfooter>\n      <\/card>\n\n      {userLogin &amp;&amp; !isLoggedIn &amp;&amp; (\n        <div classname=\"fixed bottom-4 right-4 bg-green-100 border-l-4 border-green-500 text-green-700 p-4 rounded-md shadow-lg\">\n          <div classname=\"flex\">\n            \n            <div classname=\"ml-3\">\n              <p classname=\"text-sm font-medium\">Workspace Access Granted<\/p>\n              <p classname=\"text-xs mt-1\">Logged in as: {userLogin}<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n      )}\n    <\/div>\n  );\n};\n\nexport default Login;\n<\/faceio><\/props><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u00abNEXT_PUBLIC_FACEIO_PUBLIC_ID\u00bb \u0631\u0627 \u0628\u0627 FACEIO_APP_ID \u0648\u0627\u0642\u0639\u06cc \u06a9\u0647 \u0627\u0632 \u06a9\u0646\u0633\u0648\u0644 FACEIO \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffc85t8ta8zn70v5gzkoo.jpg\" alt=\"env\" loading=\"lazy\" width=\"800\" height=\"240\" title=\"\"><\/p>\n<ol>\n<li>\n<strong>\u0645\u0624\u0644\u0641\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 \u0631\u0627 \u062f\u0631 \u0635\u0641\u062d\u0647 Next.js \u062e\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f<\/strong>: \u062f\u0631 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c app\/page.tsx)\u060c \u0645\u0624\u0644\u0641\u0647 Home \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646 \u0631\u0627 \u0631\u0646\u062f\u0631 \u06a9\u0646\u06cc\u062f:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>import { buttonVariants } from \"@\/components\/ui\/button\";\nimport { cn } from \"@\/lib\/utils\";\nimport Link from \"next\/link\";\nimport { FaUserShield, FaImage, FaCode, FaRobot } from 'react-icons\/fa';\n\nexport default function Home() {\n  const demos = [\n    { title: \"FACIO Web Authentication\", href: \"\/faceio\", icon: FaUserShield },\n    { title: \"Image Processing\", href: \"\/imageprocessing\", icon: FaImage },\n    { title: \"Code Generation\", href: \"\/codegeneration\", icon: FaCode },\n    { title: \"AI Assistant\", href: \"\/aiassistant\", icon: FaRobot },\n  ];\n\n  return (\n    <div classname=\"max-h-screen  bg-gradient-to-br from-purple-700 via-blue-600 to-teal-500 text-white p-8 w-full\">\n      <div classname=\"max-w-6xl mx-auto\">\n        \n        <p classname=\"text-xl text-center mb-12 animate-fade-in-up\">\n          Explore cutting-edge technologies and innovative solutions\n        <\/p>\n\n        <p>\n          {demos.map((demo, index) =&gt; (\n            <link key=\"{demo.href}\" href=\"{demo.href}\" classname=\"{cn(\" buttonvariants=\"\" variant:=\"\" text-lg=\"\" font-semibold=\"\" flex=\"\" flex-col=\"\" items-center=\"\" justify-center=\"\" space-y-4=\"\" bg-white=\"\" bg-opacity-10=\"\" backdrop-filter=\"\" backdrop-blur-lg=\"\" rounded-xl=\"\" hover:bg-opacity-20=\"\" transition-all=\"\" duration-300=\"\" animate-fade-in=\"\" index=\"\"\/>\n              <demo.icon classname=\"text-4xl\"\/>\n              {demo.title}\n            \n          ))}\n        <\/p>\n\n        <div classname=\"mt-16 text-center animate-fade-in-up animate-delay-300\">\n          <h2 classname=\"text-3xl font-bold mb-4\"><span class=\"ez-toc-section\" id=\"Why_Choose_PixLab\"><\/span>Why Choose PixLab?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n          <ul classname=\"text-lg space-y-2\">\n            <li>\u2728 Cutting-edge technologies<\/li>\n            <li>\ud83d\ude80 High-performance solutions<\/li>\n            <li>\ud83d\udd12 Advanced security features<\/li>\n            <li>\ud83c\udf10 Seamless integrations<\/li>\n          <\/ul>\n        <\/div>\n\n        <footer classname=\"mt-16 text-center text-sm opacity-75 animate-fade-in-up animate-delay-500\">\n          \u00a9 2024 PixLab. All rights reserved. Empowering innovation through technology.\n        <\/footer>\n      <\/div>\n    <\/div>\n  );\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u06cc\u0646! \u0627\u06a9\u0646\u0648\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 &#8220;Authenticate with Face&#8221; \u06a9\u0644\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u0646\u062f\u060c \u0648\u06cc\u062c\u062a FACEIO \u0638\u0627\u0647\u0631 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><strong>\u06af\u0631\u0641\u062a\u0646 \u0648\u06cc\u062c\u062a FACEIO \u062f\u0631 \u0639\u0645\u0644 &#8211; \u062b\u0628\u062a \u0646\u0627\u0645<\/strong><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648\u06cc\u062c\u062a FACEIO\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 GIF \u0627\u0632 \u0631\u0648\u0646\u062f \u062b\u0628\u062a \u0646\u0627\u0645 \u0628\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4dakay694xwck0w10c2d.gif\" alt=\"\u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f\" loading=\"lazy\" width=\"640\" height=\"360\" data-animated=\"true\" title=\"\"><\/p>\n<p>\u0627\u06cc\u0646 GIF \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u062b\u0628\u062a \u0686\u0647\u0631\u0647 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0631\u0627 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f. \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0686\u0647\u0631\u0647 \u062e\u0648\u062f \u0631\u0627 \u062b\u0628\u062a \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u062f\u0648\u0646 \u062f\u0631\u0632 \u062f\u0631 \u0644\u0627\u06af\u06cc\u0646 \u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p><strong>\u06af\u0631\u0641\u062a\u0646 \u0648\u06cc\u062c\u062a FACEIO \u062f\u0631 \u0639\u0645\u0644<\/strong><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648\u06cc\u062c\u062a FACEIO\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 GIF \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnbamxdp54zn4v2wbm45.gif\" alt=\"\u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645\" loading=\"lazy\" width=\"640\" height=\"360\" data-animated=\"true\" title=\"\"><\/p>\n<p>\u0627\u06cc\u0646 GIF \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f.<\/p>\n<p><strong>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc FACEIO<\/strong><\/p>\n<ul>\n<li>\n<p><strong>\u062d\u0630\u0641 \u062b\u0628\u062a \u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc<\/strong>: \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u062b\u0628\u062a \u0646\u0627\u0645 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0632 \u062f\u0631\u06af\u06cc\u0631\u06cc \u0647\u0627\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u06cc\u0627 \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0636\u062f \u062c\u0639\u0644<\/strong>: \u0628\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0648 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0644\u0627\u0634\u200c\u0647\u0627\u06cc \u062c\u0639\u0644 \u0686\u0647\u0631\u0647\u060c \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0642\u0637 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0648 \u0648\u0627\u0642\u0639\u06cc \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0631\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0628\u0648\u062f\u0646 \u067e\u06cc\u0646 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u06a9\u0646\u06cc\u062f<\/strong>: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u067e\u06cc\u0646 \u200b\u200b\u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0627\u0633\u062a \u062a\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u063a\u06cc\u0631\u0645\u062c\u0627\u0632 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0639\u0645\u0627\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc<\/strong>: \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0628\u06cc\u0634\u062a\u0631\u060c \u0646\u0645\u0648\u0646\u0647 \u0633\u0627\u0632\u06cc \u0648\u06cc\u062c\u062a FACEIO \u0631\u0627 \u0628\u0647 \u0646\u0627\u0645 \u0647\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 \u0648 \u06a9\u0634\u0648\u0631\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0634\u0645\u0627<\/strong><\/p>\n<p>\u0627\u062f\u063a\u0627\u0645 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u0686\u0646\u062f\u06cc\u0646 \u0645\u0632\u06cc\u062a \u062f\u0627\u0631\u062f:<\/p>\n<ul>\n<li>\n<p><strong>\u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a\u0647<\/strong>: \u0648\u06cc\u062c\u062a FACEIO \u06cc\u06a9 \u062c\u0631\u06cc\u0627\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0648 \u0634\u0647\u0648\u062f\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0648\u0631\u0648\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645<\/strong>: FACEIO \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647\u200c\u0647\u0627 \u0648 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062b\u0627\u0628\u062a\u06cc \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u062f\u063a\u0627\u0645 \u0622\u0633\u0627\u0646<\/strong>: \u0628\u0633\u062a\u0647 faceio-npm \u0641\u0631\u0622\u06cc\u0646\u062f \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 \u0631\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0646\u062c\u0645\u0646 \u0627\u0646\u062c\u0645\u0646 FACEIO<\/strong>: \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u0632 \u0627\u0646\u062c\u0645\u0646 FACEIO \u06a9\u0645\u06a9 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/strong><\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0645\u0631\u0627\u062d\u0644 \u0630\u06a9\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u062c\u0631\u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u06cc\u0645\u0646 \u0648 \u06a9\u0627\u0631\u0628\u0631\u067e\u0633\u0646\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062e\u0648\u062f \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u06cc\u0641\u06cc\u062a \u06a9\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u062e\u0648\u062f \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0633\u0624\u0627\u0644 \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u06cc\u062f \u06cc\u0627 \u0628\u0647 \u06a9\u0645\u06a9 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0627 \u062a\u06cc\u0645 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc FACEIO \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06cc\u0627 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u062c\u0627\u0645\u0639 FACEIO \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u062f \u0645\u0646\u0628\u0639 \u06a9\u0627\u0645\u0644 \u0627\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0645\u062e\u0632\u0646 GitHub \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u0645\u0627 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0631\u0622\u06cc\u0646\u062f \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0686\u0647\u0631\u0647 FACEIO \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Next.js \u062e\u0648\u062f\u060c \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062d\u0633\u0627\u0628 FACEIO \u062a\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f\u062a\u0627\u0646\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0634\u06cc\u0631\u062c\u0647 \u0631\u0641\u062a\u0646\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":73376,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-73375","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/73375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=73375"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/73375\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/73376"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=73375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=73375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=73375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}