├── components ├── LazyMotion.jsx ├── ContactWrapper.jsx ├── LoginWrapper.jsx ├── StatsWrapper.jsx ├── NewsletterWrapper.jsx ├── PageTransitionWrapper.jsx ├── ClientPageTransition.jsx ├── Markdown.jsx ├── NavbarAuth.jsx ├── PageTransition.jsx ├── LoginForm.jsx ├── EventDescription.jsx └── RegisterForm.jsx ├── app ├── favicon.ico ├── (dashboard) │ └── dashboard │ │ ├── blogs │ │ ├── add │ │ │ └── page.jsx │ │ └── edit │ │ │ └── [id] │ │ │ └── page.jsx │ │ ├── positions │ │ ├── add │ │ │ └── page.jsx │ │ └── edit │ │ │ └── [id] │ │ │ └── page.jsx │ │ └── layout.jsx ├── api │ ├── auth │ │ ├── [...nextauth] │ │ │ └── route.jsx │ │ ├── verify │ │ │ └── route.js │ │ ├── logout │ │ │ └── route.js │ │ └── login │ │ │ └── route.jsx │ ├── logout │ │ └── route.js │ ├── email │ │ └── route.js │ ├── newsletter │ │ ├── digest │ │ │ └── route.js │ │ └── subscribe │ │ │ └── route.js │ ├── webvitals │ │ └── route.js │ ├── upload │ │ └── route.js │ ├── login │ │ └── route.jsx │ ├── Contact │ │ └── route.js │ ├── blogs │ │ ├── route.js │ │ └── [id] │ │ │ └── route.js │ ├── statistics │ │ ├── route.js │ │ └── [id] │ │ │ └── route.js │ ├── services │ │ ├── route.js │ │ └── [id] │ │ │ └── route.js │ ├── form │ │ └── route.js │ ├── events │ │ ├── route.js │ │ └── [id] │ │ │ └── route.js │ ├── projects │ │ ├── [id] │ │ │ └── route.js │ │ └── route.js │ ├── register │ │ └── route.js │ ├── linkedin │ │ ├── route.js │ │ └── [id] │ │ │ └── route.js │ ├── Components │ │ └── Azure.jsx │ └── positions │ │ └── route.js ├── (root) │ ├── (views) │ │ ├── Projects │ │ │ └── page.jsx │ │ ├── Services │ │ │ └── page.jsx │ │ ├── loading.js │ │ ├── Subscribe │ │ │ └── page.jsx │ │ ├── Events │ │ │ ├── page.jsx │ │ │ ├── [...id] │ │ │ │ ├── page.jsx │ │ │ │ ├── layout.jsx │ │ │ │ └── generate.jsx │ │ │ └── layout.jsx │ │ ├── Blog │ │ │ ├── layout.jsx │ │ │ ├── [...id] │ │ │ │ ├── page.jsx │ │ │ │ ├── actions.js │ │ │ │ ├── layout.jsx │ │ │ │ ├── BlogClientContent.jsx │ │ │ │ └── generate.jsx │ │ │ ├── page.jsx │ │ │ └── opengraph-image.jsx │ │ ├── Login │ │ │ └── page.jsx │ │ ├── Contact │ │ │ └── page.jsx │ │ ├── Register │ │ │ └── page.jsx │ │ ├── About │ │ │ └── page.jsx │ │ ├── experience │ │ │ └── page.jsx │ │ └── page.js │ └── layout.jsx ├── robots.js ├── auth.jsx ├── layout.js ├── fonts.jsx ├── markdown.css └── sitemap.js ├── public ├── image.png ├── resume.pdf ├── tarun.png ├── favicon.ico ├── favicon-16x16.png ├── favicon-32x32.png ├── apple-touch-icon.png ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── fonts │ ├── Poppins │ │ ├── Poppins-Bold.ttf │ │ ├── Poppins-Thin.ttf │ │ ├── Poppins-Black.ttf │ │ ├── Poppins-Italic.ttf │ │ ├── Poppins-Light.ttf │ │ ├── Poppins-Medium.ttf │ │ ├── Poppins-ExtraBold.ttf │ │ ├── Poppins-Regular.ttf │ │ ├── Poppins-SemiBold.ttf │ │ ├── Poppins-BlackItalic.ttf │ │ ├── Poppins-BoldItalic.ttf │ │ ├── Poppins-ExtraLight.ttf │ │ ├── Poppins-LightItalic.ttf │ │ ├── Poppins-ThinItalic.ttf │ │ ├── Poppins-MediumItalic.ttf │ │ ├── Poppins-SemiBoldItalic.ttf │ │ ├── Poppins-ExtraBoldItalic.ttf │ │ ├── Poppins-ExtraLightItalic.ttf │ │ └── OFL.txt │ ├── Tagesschrift │ │ ├── Tagesschrift-Regular.ttf │ │ └── OFL.txt │ ├── Space_Grotesk │ │ ├── static │ │ │ ├── SpaceGrotesk-Bold.ttf │ │ │ ├── SpaceGrotesk-Light.ttf │ │ │ ├── SpaceGrotesk-Medium.ttf │ │ │ ├── SpaceGrotesk-Regular.ttf │ │ │ └── SpaceGrotesk-SemiBold.ttf │ │ ├── SpaceGrotesk-VariableFont_wght.ttf │ │ ├── README.txt │ │ └── OFL.txt │ └── Playfair_Display │ │ ├── static │ │ ├── PlayfairDisplay-Black.ttf │ │ ├── PlayfairDisplay-Bold.ttf │ │ ├── PlayfairDisplay-Italic.ttf │ │ ├── PlayfairDisplay-Medium.ttf │ │ ├── PlayfairDisplay-Regular.ttf │ │ ├── PlayfairDisplay-BoldItalic.ttf │ │ ├── PlayfairDisplay-ExtraBold.ttf │ │ ├── PlayfairDisplay-SemiBold.ttf │ │ ├── PlayfairDisplay-BlackItalic.ttf │ │ ├── PlayfairDisplay-MediumItalic.ttf │ │ ├── PlayfairDisplay-ExtraBoldItalic.ttf │ │ └── PlayfairDisplay-SemiBoldItalic.ttf │ │ ├── PlayfairDisplay-VariableFont_wght.ttf │ │ ├── PlayfairDisplay-Italic-VariableFont_wght.ttf │ │ ├── README.txt │ │ └── OFL.txt ├── vercel.svg ├── window.svg ├── file.svg ├── medium.svg ├── linkedin.svg ├── site.webmanifest ├── twitter.svg ├── github.svg ├── globe.svg ├── instagram.svg └── next.svg ├── jsconfig.json ├── postcss.config.mjs ├── _utils ├── webVitasScript.jsx ├── slugify.js ├── Dashboard.jsx ├── DataFetching.jsx ├── auth.js ├── Mongodb.jsx ├── webVitals.jsx └── LocalStorage.jsx ├── eslint.config.mjs ├── .gitignore ├── package.json ├── next.config.mjs ├── .github └── workflows │ └── deployment_tarun-nayaka-r.yml ├── middleware.js └── _emailTemplates ├── template2.html └── template1.html /components/LazyMotion.jsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/app/favicon.ico -------------------------------------------------------------------------------- /public/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/image.png -------------------------------------------------------------------------------- /public/resume.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/resume.pdf -------------------------------------------------------------------------------- /public/tarun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/tarun.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/apple-touch-icon.png -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "@/*": ["./*"] 5 | } 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: ["@tailwindcss/postcss"], 3 | }; 4 | 5 | export default config; 6 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-Bold.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-Thin.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-Black.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-Italic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-Light.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-Medium.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-ExtraBold.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-Regular.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-SemiBold.ttf -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-BlackItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-BoldItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-ExtraLight.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-LightItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-ThinItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-MediumItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Poppins/Poppins-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Poppins/Poppins-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Tagesschrift/Tagesschrift-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Tagesschrift/Tagesschrift-Regular.ttf -------------------------------------------------------------------------------- /public/fonts/Space_Grotesk/static/SpaceGrotesk-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Space_Grotesk/static/SpaceGrotesk-Bold.ttf -------------------------------------------------------------------------------- /public/fonts/Space_Grotesk/static/SpaceGrotesk-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Space_Grotesk/static/SpaceGrotesk-Light.ttf -------------------------------------------------------------------------------- /public/fonts/Space_Grotesk/static/SpaceGrotesk-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Space_Grotesk/static/SpaceGrotesk-Medium.ttf -------------------------------------------------------------------------------- /public/fonts/Space_Grotesk/static/SpaceGrotesk-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Space_Grotesk/static/SpaceGrotesk-Regular.ttf -------------------------------------------------------------------------------- /public/fonts/Space_Grotesk/static/SpaceGrotesk-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Space_Grotesk/static/SpaceGrotesk-SemiBold.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-Black.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-Bold.ttf -------------------------------------------------------------------------------- /public/fonts/Space_Grotesk/SpaceGrotesk-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Space_Grotesk/SpaceGrotesk-VariableFont_wght.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-Italic.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-Medium.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-Regular.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/PlayfairDisplay-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/PlayfairDisplay-VariableFont_wght.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-BoldItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-ExtraBold.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-SemiBold.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-BlackItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-MediumItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/static/PlayfairDisplay-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/static/PlayfairDisplay-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /app/(dashboard)/dashboard/blogs/add/page.jsx: -------------------------------------------------------------------------------- 1 | // pages/editor.jsx 2 | import MarkdownEditor from "@/components/MarkDown"; 3 | 4 | export default function EditorPage() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /app/api/auth/[...nextauth]/route.jsx: -------------------------------------------------------------------------------- 1 | // import { handlers } from "./auth"; // Referring to the auth.ts we just created 2 | import { handlers } from "@/app/auth"; 3 | 4 | export const { GET, POST } = handlers; 5 | -------------------------------------------------------------------------------- /public/fonts/Playfair_Display/PlayfairDisplay-Italic-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FarhaKousar1601/MY_Portfolio/main/public/fonts/Playfair_Display/PlayfairDisplay-Italic-VariableFont_wght.ttf -------------------------------------------------------------------------------- /app/(root)/(views)/Projects/page.jsx: -------------------------------------------------------------------------------- 1 | import Projects from "@/components/Projects"; 2 | import React from "react"; 3 | 4 | const page = () => { 5 | return ( 6 |
7 | 8 |
9 | ); 10 | }; 11 | 12 | export default page; 13 | -------------------------------------------------------------------------------- /app/(root)/(views)/Services/page.jsx: -------------------------------------------------------------------------------- 1 | import Services from "@/components/Services"; 2 | 3 | const ServicesPage = () => { 4 | return ( 5 |
6 | 7 |
8 | ); 9 | }; 10 | 11 | export default ServicesPage; 12 | -------------------------------------------------------------------------------- /app/(root)/(views)/loading.js: -------------------------------------------------------------------------------- 1 | import Loading from "@/app/(dashboard)/dashboard/loading"; 2 | 3 | export default function AppRouterLoading() { 4 | // Note: The "use client" directive is not needed here 5 | // because this is a special Next.js file 6 | return ; 7 | } 8 | -------------------------------------------------------------------------------- /components/ContactWrapper.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import Contact from "@/components/Constact"; 5 | 6 | // This component acts as a client boundary wrapper for Contact 7 | export default function ContactWrapper() { 8 | return ; 9 | } 10 | -------------------------------------------------------------------------------- /components/LoginWrapper.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import LoginForm from "@/components/LoginForm"; 5 | 6 | // This component acts as a client boundary wrapper for LoginForm 7 | export default function LoginWrapper() { 8 | return ; 9 | } 10 | -------------------------------------------------------------------------------- /components/StatsWrapper.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import Statistics from "@/components/Statistics"; 5 | 6 | // This component acts as a client boundary wrapper for Statistics 7 | export default function StatsWrapper() { 8 | return ; 9 | } 10 | -------------------------------------------------------------------------------- /components/NewsletterWrapper.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import React from "react"; 3 | import NewsletterSubscribe from "@/components/NewsletterSubscribe"; 4 | 5 | const NewsletterWrapper = () => { 6 | return ; 7 | }; 8 | 9 | export default NewsletterWrapper; 10 | -------------------------------------------------------------------------------- /app/(dashboard)/dashboard/blogs/edit/[id]/page.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import MarkdownEditor from "@/components/MarkDown"; 4 | import { useParams } from "next/navigation"; 5 | 6 | export default function EditorPage() { 7 | const { id } = useParams(); 8 | 9 | return ; 10 | } 11 | -------------------------------------------------------------------------------- /app/(root)/(views)/Subscribe/page.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NewsLetterSubscribe from "@/components/NewsletterSubscribe"; 3 | 4 | const route = () => { 5 | return ( 6 |
7 | 8 |
9 | ); 10 | }; 11 | 12 | export default route; 13 | -------------------------------------------------------------------------------- /components/PageTransitionWrapper.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import PageTransition from "@/components/PageTransition"; 5 | 6 | // This component wraps the PageTransition component in a client boundary 7 | export default function PageTransitionWrapper() { 8 | return ; 9 | } 10 | -------------------------------------------------------------------------------- /app/(root)/(views)/Events/page.jsx: -------------------------------------------------------------------------------- 1 | import Events from "@/components/Events"; 2 | import NewsletterWrapper from "@/components/NewsletterWrapper"; 3 | import React from "react"; 4 | 5 | const pages = () => { 6 | return ( 7 |
8 | 9 | 10 |
11 | ); 12 | }; 13 | 14 | export default pages; 15 | -------------------------------------------------------------------------------- /public/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_utils/webVitasScript.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useEffect } from "react"; 4 | import initWebVitals, { WebVitalsTracker } from "./webVitals"; 5 | import { Suspense } from "react"; 6 | 7 | export default function WebVitalsScriptt() { 8 | return ( 9 | Loading...}> 10 | 11 | 12 | ); // This component doesn't render anything visible 13 | } 14 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { dirname } from "path"; 2 | import { fileURLToPath } from "url"; 3 | import { FlatCompat } from "@eslint/eslintrc"; 4 | 5 | const __filename = fileURLToPath(import.meta.url); 6 | const __dirname = dirname(__filename); 7 | 8 | const compat = new FlatCompat({ 9 | baseDirectory: __dirname, 10 | }); 11 | 12 | const eslintConfig = [...compat.extends("next/core-web-vitals")]; 13 | 14 | export default eslintConfig; 15 | -------------------------------------------------------------------------------- /public/medium.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/(root)/(views)/Blog/layout.jsx: -------------------------------------------------------------------------------- 1 | export const metadata = { 2 | title: "Blogs | Tarun Nayaka R", 3 | description: "Discover articles and insights from Tarun Nayaka R.", 4 | openGraph: { 5 | title: "Blogs | Tarun Nayaka R", 6 | description: "Discover articles and insights from Tarun Nayaka R.", 7 | type: "website", 8 | siteName: "Tarun Nayaka R", 9 | }, 10 | }; 11 | 12 | export default function BlogLayout({ children }) { 13 | return <>{children}; 14 | } 15 | -------------------------------------------------------------------------------- /app/(root)/(views)/Events/[...id]/page.jsx: -------------------------------------------------------------------------------- 1 | import EventContent from "./EventContent"; 2 | import { generateMetadata } from "./generate"; 3 | import NewsletterWrapper from "@/components/NewsletterWrapper"; 4 | 5 | // Export the generateMetadata function to be used by Next.js 6 | export { generateMetadata }; 7 | 8 | const page = () => { 9 | return ( 10 | <> 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default page; 18 | -------------------------------------------------------------------------------- /app/robots.js: -------------------------------------------------------------------------------- 1 | // app/robots.js 2 | export default function robots() { 3 | return { 4 | rules: { 5 | userAgent: "*", 6 | allow: "/", 7 | disallow: [ 8 | "/dashboard/", // Protect admin dashboard 9 | "/api/", // Protect API endpoints 10 | "/_next/", // Protect Next.js system files 11 | ], 12 | }, 13 | sitemap: `${ 14 | process.env.NEXT_PUBLIC_BASE_URL || "https://tarunnayaka.me" 15 | }/sitemap.xml`, 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /public/linkedin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tarun Nayaka R Portfolio", 3 | "short_name": "Portfolio", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#A855F7", 17 | "background_color": "#ffffff", 18 | "display": "standalone", 19 | "start_url": "/" 20 | } -------------------------------------------------------------------------------- /components/ClientPageTransition.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import dynamic from "next/dynamic"; 4 | import { Suspense } from "react"; 5 | 6 | // Dynamically import PageTransition with ssr: false 7 | const PageTransitionWrapper = dynamic( 8 | () => import("@/components/PageTransitionWrapper"), 9 | { 10 | ssr: false, 11 | } 12 | ); 13 | 14 | export default function ClientPageTransition() { 15 | return ( 16 | 17 | 18 | 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /app/(root)/(views)/Blog/[...id]/page.jsx: -------------------------------------------------------------------------------- 1 | import PageBlog from "./BlogContent"; 2 | import { generateMetadata } from "./generate"; 3 | 4 | // Export the generateMetadata function to be used by Next.js 5 | export { generateMetadata }; 6 | 7 | /** 8 | * Server Component - Blog Page 9 | * This is a server component that will be SSR'd, which improves SEO. 10 | * It passes the route params to the PageBlog component for data fetching. 11 | */ 12 | export default function Page({ params }) { 13 | return ; 14 | } 15 | -------------------------------------------------------------------------------- /app/(root)/(views)/Events/layout.jsx: -------------------------------------------------------------------------------- 1 | export const metadata = { 2 | title: "Events | Tarun Nayaka R", 3 | description: 4 | "Discover tech events and conferences hosted or attended by Tarun Nayaka R.", 5 | openGraph: { 6 | title: "Events | Tarun Nayaka R", 7 | description: 8 | "Discover tech events and conferences hosted or attended by Tarun Nayaka R.", 9 | type: "website", 10 | siteName: "Tarun Nayaka R", 11 | }, 12 | }; 13 | 14 | export default function EventsLayout({ children }) { 15 | return <>{children}; 16 | } 17 | -------------------------------------------------------------------------------- /components/Markdown.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import dynamic from "next/dynamic"; 4 | import React from "react"; 5 | import rehypePrismPlus from "rehype-prism-plus"; 6 | 7 | const MarkdownPreview = dynamic(() => import("@uiw/react-markdown-preview"), { 8 | ssr: false, 9 | }); 10 | 11 | export default function Markdown({ source }) { 12 | return ( 13 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /_utils/slugify.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Converts a string into a URL-friendly slug 3 | * @param {string} text - The text to slugify 4 | * @returns {string} - URL-friendly slug 5 | */ 6 | export function slugify(text) { 7 | return text 8 | .toString() 9 | .toLowerCase() 10 | .trim() 11 | .replace(/\s+/g, "-") // Replace spaces with - 12 | .replace(/[^\w\-]+/g, "") // Remove all non-word chars 13 | .replace(/\-\-+/g, "-") // Replace multiple - with single - 14 | .replace(/^-+/, "") // Trim - from start of text 15 | .replace(/-+$/, ""); // Trim - from end of text 16 | } 17 | -------------------------------------------------------------------------------- /app/api/auth/verify/route.js: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server"; 2 | 3 | export async function GET(request) { 4 | // Get the admin_session cookie 5 | const sessionCookie = request.cookies.get("admin_session"); 6 | 7 | // Check if the cookie exists 8 | if (!sessionCookie || !sessionCookie.value) { 9 | return NextResponse.json({ authenticated: false }, { status: 401 }); 10 | } 11 | 12 | // In a real app, you would verify the session token against a database 13 | // For this simple implementation, we just check if the token exists 14 | 15 | return NextResponse.json({ authenticated: true }); 16 | } 17 | -------------------------------------------------------------------------------- /app/api/auth/logout/route.js: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server"; 2 | 3 | export async function POST() { 4 | const response = NextResponse.json({ 5 | success: true, 6 | message: "Logged out successfully", 7 | }); 8 | 9 | // Clear the HTTP-only session cookie 10 | response.cookies.set({ 11 | name: "admin_session", 12 | value: "", 13 | expires: new Date(0), 14 | path: "/", 15 | }); 16 | 17 | // Clear the client-side cookie 18 | response.cookies.set({ 19 | name: "adminAccess", 20 | value: "", 21 | expires: new Date(0), 22 | path: "/", 23 | }); 24 | 25 | return response; 26 | } 27 | -------------------------------------------------------------------------------- /public/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/(root)/layout.jsx: -------------------------------------------------------------------------------- 1 | import Navbar from "@/components/Navbar"; 2 | import Footer from "@/components/Footer"; 3 | import ClientPageTransition from "@/components/ClientPageTransition"; 4 | import WebVitalsScriptt from "@/_utils/webVitasScript"; 5 | 6 | import { auth } from "../auth"; 7 | 8 | const Layout = async ({ children }) => { 9 | const session = await auth(); 10 | 11 | return ( 12 | <> 13 | 14 | 15 | 16 | {children} 17 |