├── .dockerignore ├── .env.example ├── .eslintrc.json ├── .gitignore ├── .husky └── pre-commit ├── .npmrc ├── .prettierrc.json ├── .vscode └── settings.json ├── README.md ├── components ├── Avatar │ └── index.tsx ├── BlogPost │ ├── BlogPostGrid.tsx │ ├── BlogPostGridItem.tsx │ ├── BlogPostList.tsx │ ├── BlogPostListItem.tsx │ ├── FeaturedBlogPost.tsx │ └── index.tsx ├── Button │ └── index.tsx ├── Callout │ └── index.tsx ├── Caption │ └── index.tsx ├── Card │ ├── Base.tsx │ ├── Contact.tsx │ ├── LearningPath.tsx │ ├── Profile.tsx │ ├── TargetAudience.tsx │ └── index.tsx ├── Code │ ├── Pre.tsx │ └── index.tsx ├── DropdownMenu │ ├── HamburgerButton.tsx │ ├── MenuItems.tsx │ └── index.tsx ├── DroppableServices │ ├── Draggable.tsx │ ├── Droppable.tsx │ └── index.tsx ├── Embed │ └── index.tsx ├── Emoji │ └── index.tsx ├── Favicon │ └── index.tsx ├── Footer │ └── index.tsx ├── Header │ └── index.tsx ├── Icon │ ├── ArrowRightUp.tsx │ ├── ChevronLeft.tsx │ ├── ChevronRight.tsx │ ├── Close.tsx │ ├── DarkMode.tsx │ ├── Github.tsx │ ├── LightMode.tsx │ ├── LinkedIn.tsx │ ├── Medium.tsx │ ├── Rss.tsx │ ├── Twitter.tsx │ └── index.tsx ├── Layout │ ├── ContentWrapper.tsx │ ├── PageLayout.tsx │ └── index.tsx ├── Link │ └── index.tsx ├── Logo │ └── index.tsx ├── MediumFollowers │ └── index.tsx ├── Modal │ ├── Base.tsx │ ├── Contact.tsx │ └── index.tsx ├── NavigationMenu │ └── index.tsx ├── Option │ └── index.tsx ├── Overhead │ └── index.tsx ├── Picture │ ├── Blog.tsx │ ├── Carousel.tsx │ ├── Single.tsx │ └── index.tsx ├── PortalRender │ └── index.tsx ├── Project │ ├── ProjectPreview.tsx │ └── index.tsx ├── SearchInput │ └── index.tsx ├── Skeleton │ └── index.tsx ├── SocialProfiles │ └── index.tsx ├── SubscribeRSS │ └── index.tsx ├── Table │ └── index.tsx ├── TextDecoration │ ├── SparkSvg.tsx │ ├── UnderlineSvg.tsx │ └── index.tsx ├── ThemeProvider │ └── index.tsx ├── ThemeToggle │ └── index.tsx ├── Toast │ └── index.tsx ├── Tooltip │ └── index.tsx ├── TrendingTopics │ └── index.tsx ├── TwitterChip │ └── index.tsx └── VisuallyHidden │ └── index.tsx ├── config ├── content.config.ts ├── navigation.config.ts ├── profiles.config.ts ├── seo.config.ts ├── services.config.ts └── stitches.config.ts ├── content ├── blog │ ├── 3-tips-to-write-better-code-as-junior-developer │ │ ├── alex-kotliarskyi-ourQHRTE2IM-unsplash.jpg │ │ └── index.mdx │ ├── a-case-for-progressive-web-apps-why-you-cant-ignore-them │ │ ├── 0_tOD7Au2gMYLe5D4p.jpeg │ │ └── index.mdx │ ├── adopting-a-no-code-mindset │ │ ├── adopting-no-code.png │ │ └── index.mdx │ ├── an-introduction-to-service-worker-side-templating │ │ ├── SWST-App.jpeg │ │ ├── index.mdx │ │ └── service-worker-rendering-cover.jpeg │ ├── an-often-overlooked-advantage-of-fiverr │ │ ├── 0__8rht8XbdZ1Kod8wJ.jpg │ │ ├── 1__j2h99GHsZGacdLckliQE2w.png │ │ └── index.mdx │ ├── async-await-for-beginners-understanding-asynchronous-code-in-javascript │ │ ├── 1__I5gIa6aTae0RhlQzC0CDrQ.png │ │ ├── 1__fSe3vhLykkG4fWXi54sBBg.png │ │ └── index.mdx │ ├── es-modules-all-you-need-to-know │ │ ├── ej-li-fCyfgmnTj4o-unsplash.jpg │ │ └── index.mdx │ ├── generating-dynamic-og-images-with-vercel-og │ │ ├── dynamic-og-image-next-js.png │ │ ├── index.mdx │ │ ├── shubham-dhage-Hatkch_piQM-unsplash.jpg │ │ └── static-og-image-next-js.png │ ├── generating-stitches-variants-for-theme-colors │ │ ├── index.mdx │ │ └── stitches-color-palette-variants-banner.png │ ├── how-to-add-netlify-redirects-to-a-gatsby-site │ │ ├── 0__NUMywiwxz5KPJBcr.jpg │ │ └── index.mdx │ ├── how-to-build-a-floating-menu-with-lexical-react │ │ ├── index.mdx │ │ ├── lexical-floating-menu-component.png │ │ ├── lexical-floating-menu-screenshot.jpg │ │ ├── lexical-floating-menu-setup.png │ │ └── lexical-floating-menu.gif │ ├── how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment │ │ ├── how-to-build-gatsby-portfolio-cover.png │ │ ├── index-js-layout-added.png │ │ ├── index.mdx │ │ ├── netlify-deployment-720p.gif │ │ ├── screenshot.png │ │ └── static-site-generator.png │ ├── how-to-build-a-text-editor-like-notion │ │ ├── 1__CsyyrDAk1vei6qrGVZtGSA.png │ │ ├── 1__FwMgJ660ehUK1SZgYLYjMA.gif │ │ ├── 1__gg4NH3JJRtioqNutwJf__DQ.gif │ │ ├── index.mdx │ │ ├── notion-clone-cover.png │ │ └── notion-clone-medium-short.gif │ ├── how-to-build-a-text-editor-with-lexical-and-react │ │ ├── index.mdx │ │ ├── lexical-nodes.png │ │ ├── lexical-react-rich-text-demo.gif │ │ ├── lexical-setup.png │ │ ├── lexical-text-editor-react-tutorial.png │ │ ├── lexical-toolbar-disabled.png │ │ └── lexical-toolbar.png │ ├── how-to-find-the-caret-inside-a-contenteditable-element │ │ ├── get-caret-position-contenteditable.png │ │ └── index.mdx │ ├── how-to-plan-and-organize-a-react-project-by-building-a-weather-app │ │ ├── Components.png │ │ ├── Weather-app-react-js-open-weather-map-api.gif │ │ ├── how-to-organize-react-project-build-1.png │ │ ├── how-to-organize-react-project-build-2.png │ │ ├── how-to-organize-react-project-build-3.png │ │ ├── how-to-organize-react-project-build-4.png │ │ ├── how-to-organize-react-project-folder-structure.png │ │ ├── how-to-organize-react-project-functional-vs-class-based-components.png │ │ ├── how-to-organize-react-project-using-css-modules.png │ │ ├── index.mdx │ │ └── weather-app-banner.png │ ├── how-to-succeed-on-fiverr-a-dead-simple-strategy │ │ ├── 0__6mh4KyyryG7OMM0Y.jpg │ │ ├── 1__Y02wQ0r5D1UONExF0sFwFQ.png │ │ ├── 1__gfH0a16jn3y63LN8RKIh4Q.png │ │ ├── 1__sR16YIjQgtM__kK5hza1sWQ.png │ │ └── index.mdx │ ├── i-tried-freelancing-on-fiverr-3-lessons-ive-learned │ │ ├── 0__wSKMBAgK4EezZYXx.jpg │ │ ├── 0__x71xoXlJu4zGjSIF.jpg │ │ └── index.mdx │ ├── progressive-web-apps-in-2020-which-challenges-to-overcome │ │ ├── 0__bKRA8XgsY41zuvTK.jpg │ │ ├── App-Lifecycle.png │ │ ├── Overview-Problems-And-Challenges-Of-Progressive-Web-Apps-2020.png │ │ ├── PWA-vs-Flutter-Google-Trends.png │ │ ├── Platform-Specific-UI-Pattern-iOS-Android-Navigation-Bar.png │ │ ├── Project-Fugu-Progressive-Web-Apps-Chromium-Tracker.png │ │ ├── Samsung-App-Store-PWA.png │ │ └── index.mdx │ ├── quitting-job-for-side-project │ │ ├── andrew-neel-fqoYO9MjLLQ-unsplash.jpg │ │ └── index.mdx │ ├── tagged-template-literals-how-tools-like-styled-components-work │ │ ├── index.mdx │ │ └── styled.jsx.png │ ├── things-that-helped-me-doing-deep-work │ │ ├── index.mdx │ │ └── ruben-ramirez-xhKG01FN2uk-unsplash.jpg │ ├── using-the-new-next-12-image-component │ │ ├── index.mdx │ │ └── robert-shunev-mS1nlYbq1kA-unsplash.jpg │ ├── what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web │ │ ├── abstraction-layer-project-fugu.png │ │ ├── google-unsplash.png │ │ ├── index.mdx │ │ └── project-fugu-tracker.png │ └── why-open-source-projects-are-your-best-marketing │ │ ├── index.mdx │ │ ├── open-source-as-freelancer.png │ │ └── why-open-source-is-your-best-marketing-screenshot.png └── projects │ ├── lazy │ ├── Lazy-1.png │ ├── Lazy-2.png │ └── index.mdx │ └── notion-clone │ ├── index.mdx │ ├── notion-clone-app.png │ └── notion-clone-cover.png ├── hooks ├── useDebounce.tsx ├── useHasMounted.tsx ├── useSearchIndex.tsx ├── useThemeValue.tsx └── useVisibilityOnScroll.tsx ├── lib ├── api │ ├── common │ │ └── response.ts │ ├── github │ │ └── collaborators.ts │ ├── medium │ │ └── followers.ts │ └── og │ │ └── styles │ │ ├── BackgroundCanvas.tsx │ │ ├── BlogPostContent.tsx │ │ ├── ProfileContent.tsx │ │ └── index.tsx ├── mdx │ ├── blog.tsx │ ├── common │ │ ├── getAllMdxFiles.ts │ │ ├── getCompiledMdx.ts │ │ ├── getMdxFilePath.ts │ │ └── setEsbuildExecutable.ts │ └── projects.tsx └── rss │ └── generateRssFeed.ts ├── lint-staged.config.js ├── next-env.d.ts ├── next-sitemap.config.js ├── next.config.js ├── package.json ├── pages ├── 404.tsx ├── _app.tsx ├── _document.tsx ├── api │ ├── github │ │ └── collaborators.ts │ ├── medium │ │ └── followers.ts │ └── og │ │ └── index.tsx ├── blog │ ├── [slug].tsx │ └── index.tsx ├── imprint.tsx ├── index.tsx ├── projects │ └── [slug].tsx ├── services.tsx └── transparency.tsx ├── public ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── fonts │ ├── BreeSerifLight.woff │ ├── BreeSerifLight.woff2 │ ├── BreeSerifRegular.woff │ ├── BreeSerifRegular.woff2 │ └── NotoSans-Regular.ttf ├── images │ ├── avatar.jpg │ ├── logo-k.png │ ├── portrait-sitting.jpg │ └── portrait.jpg ├── mstile-150x150.png ├── safari-pinned-tab.svg └── site.webmanifest ├── sections ├── AboutPage │ └── Hero.tsx ├── BlogPage │ ├── Hero.tsx │ └── Listing.tsx ├── BlogPostPage │ ├── Banner.tsx │ ├── Footer.tsx │ └── Hero.tsx ├── HomePage │ ├── Hero.tsx │ ├── Introduction.tsx │ ├── LatestPosts.tsx │ └── LatestProjects.tsx └── ServicesPage │ ├── About.tsx │ ├── Contact.tsx │ ├── Hero.tsx │ └── Services.tsx ├── tsconfig.json └── utils ├── date ├── formatDate.ts └── useCurrentTimestamp.ts ├── fetcher.ts ├── generateColorPaletteVariants.ts ├── generateRandom.ts ├── generateTweetUrl.ts ├── getBaseUrl.ts ├── getEmailAddress.ts ├── getGithubFileUrl.ts ├── normalizeName.ts ├── router ├── getQueryParam.ts ├── redirectTo.ts └── setQueryParam.ts └── sort.ts /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/.dockerignore -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | GITHUB_PERSONAL_ACCESS_TOKEN=XXX -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/.eslintrc.json -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/.gitignore -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | legacy-peer-deps=true 2 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/.prettierrc.json -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/README.md -------------------------------------------------------------------------------- /components/Avatar/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Avatar/index.tsx -------------------------------------------------------------------------------- /components/BlogPost/BlogPostGrid.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/BlogPost/BlogPostGrid.tsx -------------------------------------------------------------------------------- /components/BlogPost/BlogPostGridItem.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/BlogPost/BlogPostGridItem.tsx -------------------------------------------------------------------------------- /components/BlogPost/BlogPostList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/BlogPost/BlogPostList.tsx -------------------------------------------------------------------------------- /components/BlogPost/BlogPostListItem.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/BlogPost/BlogPostListItem.tsx -------------------------------------------------------------------------------- /components/BlogPost/FeaturedBlogPost.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/BlogPost/FeaturedBlogPost.tsx -------------------------------------------------------------------------------- /components/BlogPost/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/BlogPost/index.tsx -------------------------------------------------------------------------------- /components/Button/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Button/index.tsx -------------------------------------------------------------------------------- /components/Callout/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Callout/index.tsx -------------------------------------------------------------------------------- /components/Caption/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Caption/index.tsx -------------------------------------------------------------------------------- /components/Card/Base.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Card/Base.tsx -------------------------------------------------------------------------------- /components/Card/Contact.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Card/Contact.tsx -------------------------------------------------------------------------------- /components/Card/LearningPath.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Card/LearningPath.tsx -------------------------------------------------------------------------------- /components/Card/Profile.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Card/Profile.tsx -------------------------------------------------------------------------------- /components/Card/TargetAudience.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Card/TargetAudience.tsx -------------------------------------------------------------------------------- /components/Card/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Card/index.tsx -------------------------------------------------------------------------------- /components/Code/Pre.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Code/Pre.tsx -------------------------------------------------------------------------------- /components/Code/index.tsx: -------------------------------------------------------------------------------- 1 | export { Pre } from './Pre'; 2 | -------------------------------------------------------------------------------- /components/DropdownMenu/HamburgerButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/DropdownMenu/HamburgerButton.tsx -------------------------------------------------------------------------------- /components/DropdownMenu/MenuItems.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/DropdownMenu/MenuItems.tsx -------------------------------------------------------------------------------- /components/DropdownMenu/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/DropdownMenu/index.tsx -------------------------------------------------------------------------------- /components/DroppableServices/Draggable.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/DroppableServices/Draggable.tsx -------------------------------------------------------------------------------- /components/DroppableServices/Droppable.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/DroppableServices/Droppable.tsx -------------------------------------------------------------------------------- /components/DroppableServices/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/DroppableServices/index.tsx -------------------------------------------------------------------------------- /components/Embed/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Embed/index.tsx -------------------------------------------------------------------------------- /components/Emoji/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Emoji/index.tsx -------------------------------------------------------------------------------- /components/Favicon/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Favicon/index.tsx -------------------------------------------------------------------------------- /components/Footer/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Footer/index.tsx -------------------------------------------------------------------------------- /components/Header/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Header/index.tsx -------------------------------------------------------------------------------- /components/Icon/ArrowRightUp.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/ArrowRightUp.tsx -------------------------------------------------------------------------------- /components/Icon/ChevronLeft.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/ChevronLeft.tsx -------------------------------------------------------------------------------- /components/Icon/ChevronRight.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/ChevronRight.tsx -------------------------------------------------------------------------------- /components/Icon/Close.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/Close.tsx -------------------------------------------------------------------------------- /components/Icon/DarkMode.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/DarkMode.tsx -------------------------------------------------------------------------------- /components/Icon/Github.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/Github.tsx -------------------------------------------------------------------------------- /components/Icon/LightMode.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/LightMode.tsx -------------------------------------------------------------------------------- /components/Icon/LinkedIn.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/LinkedIn.tsx -------------------------------------------------------------------------------- /components/Icon/Medium.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/Medium.tsx -------------------------------------------------------------------------------- /components/Icon/Rss.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/Rss.tsx -------------------------------------------------------------------------------- /components/Icon/Twitter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/Twitter.tsx -------------------------------------------------------------------------------- /components/Icon/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Icon/index.tsx -------------------------------------------------------------------------------- /components/Layout/ContentWrapper.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Layout/ContentWrapper.tsx -------------------------------------------------------------------------------- /components/Layout/PageLayout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Layout/PageLayout.tsx -------------------------------------------------------------------------------- /components/Layout/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Layout/index.tsx -------------------------------------------------------------------------------- /components/Link/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Link/index.tsx -------------------------------------------------------------------------------- /components/Logo/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Logo/index.tsx -------------------------------------------------------------------------------- /components/MediumFollowers/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/MediumFollowers/index.tsx -------------------------------------------------------------------------------- /components/Modal/Base.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Modal/Base.tsx -------------------------------------------------------------------------------- /components/Modal/Contact.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Modal/Contact.tsx -------------------------------------------------------------------------------- /components/Modal/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Modal/index.tsx -------------------------------------------------------------------------------- /components/NavigationMenu/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/NavigationMenu/index.tsx -------------------------------------------------------------------------------- /components/Option/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Option/index.tsx -------------------------------------------------------------------------------- /components/Overhead/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Overhead/index.tsx -------------------------------------------------------------------------------- /components/Picture/Blog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Picture/Blog.tsx -------------------------------------------------------------------------------- /components/Picture/Carousel.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Picture/Carousel.tsx -------------------------------------------------------------------------------- /components/Picture/Single.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Picture/Single.tsx -------------------------------------------------------------------------------- /components/Picture/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Picture/index.tsx -------------------------------------------------------------------------------- /components/PortalRender/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/PortalRender/index.tsx -------------------------------------------------------------------------------- /components/Project/ProjectPreview.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Project/ProjectPreview.tsx -------------------------------------------------------------------------------- /components/Project/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Project/index.tsx -------------------------------------------------------------------------------- /components/SearchInput/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/SearchInput/index.tsx -------------------------------------------------------------------------------- /components/Skeleton/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Skeleton/index.tsx -------------------------------------------------------------------------------- /components/SocialProfiles/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/SocialProfiles/index.tsx -------------------------------------------------------------------------------- /components/SubscribeRSS/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/SubscribeRSS/index.tsx -------------------------------------------------------------------------------- /components/Table/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Table/index.tsx -------------------------------------------------------------------------------- /components/TextDecoration/SparkSvg.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/TextDecoration/SparkSvg.tsx -------------------------------------------------------------------------------- /components/TextDecoration/UnderlineSvg.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/TextDecoration/UnderlineSvg.tsx -------------------------------------------------------------------------------- /components/TextDecoration/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/TextDecoration/index.tsx -------------------------------------------------------------------------------- /components/ThemeProvider/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/ThemeProvider/index.tsx -------------------------------------------------------------------------------- /components/ThemeToggle/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/ThemeToggle/index.tsx -------------------------------------------------------------------------------- /components/Toast/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Toast/index.tsx -------------------------------------------------------------------------------- /components/Tooltip/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/Tooltip/index.tsx -------------------------------------------------------------------------------- /components/TrendingTopics/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/TrendingTopics/index.tsx -------------------------------------------------------------------------------- /components/TwitterChip/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/TwitterChip/index.tsx -------------------------------------------------------------------------------- /components/VisuallyHidden/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/components/VisuallyHidden/index.tsx -------------------------------------------------------------------------------- /config/content.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/config/content.config.ts -------------------------------------------------------------------------------- /config/navigation.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/config/navigation.config.ts -------------------------------------------------------------------------------- /config/profiles.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/config/profiles.config.ts -------------------------------------------------------------------------------- /config/seo.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/config/seo.config.ts -------------------------------------------------------------------------------- /config/services.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/config/services.config.ts -------------------------------------------------------------------------------- /config/stitches.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/config/stitches.config.ts -------------------------------------------------------------------------------- /content/blog/3-tips-to-write-better-code-as-junior-developer/alex-kotliarskyi-ourQHRTE2IM-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/3-tips-to-write-better-code-as-junior-developer/alex-kotliarskyi-ourQHRTE2IM-unsplash.jpg -------------------------------------------------------------------------------- /content/blog/3-tips-to-write-better-code-as-junior-developer/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/3-tips-to-write-better-code-as-junior-developer/index.mdx -------------------------------------------------------------------------------- /content/blog/a-case-for-progressive-web-apps-why-you-cant-ignore-them/0_tOD7Au2gMYLe5D4p.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/a-case-for-progressive-web-apps-why-you-cant-ignore-them/0_tOD7Au2gMYLe5D4p.jpeg -------------------------------------------------------------------------------- /content/blog/a-case-for-progressive-web-apps-why-you-cant-ignore-them/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/a-case-for-progressive-web-apps-why-you-cant-ignore-them/index.mdx -------------------------------------------------------------------------------- /content/blog/adopting-a-no-code-mindset/adopting-no-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/adopting-a-no-code-mindset/adopting-no-code.png -------------------------------------------------------------------------------- /content/blog/adopting-a-no-code-mindset/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/adopting-a-no-code-mindset/index.mdx -------------------------------------------------------------------------------- /content/blog/an-introduction-to-service-worker-side-templating/SWST-App.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/an-introduction-to-service-worker-side-templating/SWST-App.jpeg -------------------------------------------------------------------------------- /content/blog/an-introduction-to-service-worker-side-templating/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/an-introduction-to-service-worker-side-templating/index.mdx -------------------------------------------------------------------------------- /content/blog/an-introduction-to-service-worker-side-templating/service-worker-rendering-cover.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/an-introduction-to-service-worker-side-templating/service-worker-rendering-cover.jpeg -------------------------------------------------------------------------------- /content/blog/an-often-overlooked-advantage-of-fiverr/0__8rht8XbdZ1Kod8wJ.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/an-often-overlooked-advantage-of-fiverr/0__8rht8XbdZ1Kod8wJ.jpg -------------------------------------------------------------------------------- /content/blog/an-often-overlooked-advantage-of-fiverr/1__j2h99GHsZGacdLckliQE2w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/an-often-overlooked-advantage-of-fiverr/1__j2h99GHsZGacdLckliQE2w.png -------------------------------------------------------------------------------- /content/blog/an-often-overlooked-advantage-of-fiverr/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/an-often-overlooked-advantage-of-fiverr/index.mdx -------------------------------------------------------------------------------- /content/blog/async-await-for-beginners-understanding-asynchronous-code-in-javascript/1__I5gIa6aTae0RhlQzC0CDrQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/async-await-for-beginners-understanding-asynchronous-code-in-javascript/1__I5gIa6aTae0RhlQzC0CDrQ.png -------------------------------------------------------------------------------- /content/blog/async-await-for-beginners-understanding-asynchronous-code-in-javascript/1__fSe3vhLykkG4fWXi54sBBg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/async-await-for-beginners-understanding-asynchronous-code-in-javascript/1__fSe3vhLykkG4fWXi54sBBg.png -------------------------------------------------------------------------------- /content/blog/async-await-for-beginners-understanding-asynchronous-code-in-javascript/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/async-await-for-beginners-understanding-asynchronous-code-in-javascript/index.mdx -------------------------------------------------------------------------------- /content/blog/es-modules-all-you-need-to-know/ej-li-fCyfgmnTj4o-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/es-modules-all-you-need-to-know/ej-li-fCyfgmnTj4o-unsplash.jpg -------------------------------------------------------------------------------- /content/blog/es-modules-all-you-need-to-know/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/es-modules-all-you-need-to-know/index.mdx -------------------------------------------------------------------------------- /content/blog/generating-dynamic-og-images-with-vercel-og/dynamic-og-image-next-js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/generating-dynamic-og-images-with-vercel-og/dynamic-og-image-next-js.png -------------------------------------------------------------------------------- /content/blog/generating-dynamic-og-images-with-vercel-og/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/generating-dynamic-og-images-with-vercel-og/index.mdx -------------------------------------------------------------------------------- /content/blog/generating-dynamic-og-images-with-vercel-og/shubham-dhage-Hatkch_piQM-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/generating-dynamic-og-images-with-vercel-og/shubham-dhage-Hatkch_piQM-unsplash.jpg -------------------------------------------------------------------------------- /content/blog/generating-dynamic-og-images-with-vercel-og/static-og-image-next-js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/generating-dynamic-og-images-with-vercel-og/static-og-image-next-js.png -------------------------------------------------------------------------------- /content/blog/generating-stitches-variants-for-theme-colors/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/generating-stitches-variants-for-theme-colors/index.mdx -------------------------------------------------------------------------------- /content/blog/generating-stitches-variants-for-theme-colors/stitches-color-palette-variants-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/generating-stitches-variants-for-theme-colors/stitches-color-palette-variants-banner.png -------------------------------------------------------------------------------- /content/blog/how-to-add-netlify-redirects-to-a-gatsby-site/0__NUMywiwxz5KPJBcr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-add-netlify-redirects-to-a-gatsby-site/0__NUMywiwxz5KPJBcr.jpg -------------------------------------------------------------------------------- /content/blog/how-to-add-netlify-redirects-to-a-gatsby-site/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-add-netlify-redirects-to-a-gatsby-site/index.mdx -------------------------------------------------------------------------------- /content/blog/how-to-build-a-floating-menu-with-lexical-react/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-floating-menu-with-lexical-react/index.mdx -------------------------------------------------------------------------------- /content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu-component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu-component.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu-screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu-screenshot.jpg -------------------------------------------------------------------------------- /content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu-setup.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-floating-menu-with-lexical-react/lexical-floating-menu.gif -------------------------------------------------------------------------------- /content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/how-to-build-gatsby-portfolio-cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/how-to-build-gatsby-portfolio-cover.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/index-js-layout-added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/index-js-layout-added.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/index.mdx -------------------------------------------------------------------------------- /content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/netlify-deployment-720p.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/netlify-deployment-720p.gif -------------------------------------------------------------------------------- /content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/screenshot.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/static-site-generator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-portfolio-with-gatsby-from-scratch-to-deployment/static-site-generator.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-like-notion/1__CsyyrDAk1vei6qrGVZtGSA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-like-notion/1__CsyyrDAk1vei6qrGVZtGSA.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-like-notion/1__FwMgJ660ehUK1SZgYLYjMA.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-like-notion/1__FwMgJ660ehUK1SZgYLYjMA.gif -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-like-notion/1__gg4NH3JJRtioqNutwJf__DQ.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-like-notion/1__gg4NH3JJRtioqNutwJf__DQ.gif -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-like-notion/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-like-notion/index.mdx -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-like-notion/notion-clone-cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-like-notion/notion-clone-cover.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-like-notion/notion-clone-medium-short.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-like-notion/notion-clone-medium-short.gif -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-with-lexical-and-react/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-with-lexical-and-react/index.mdx -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-nodes.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-react-rich-text-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-react-rich-text-demo.gif -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-setup.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-text-editor-react-tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-text-editor-react-tutorial.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-toolbar-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-toolbar-disabled.png -------------------------------------------------------------------------------- /content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-build-a-text-editor-with-lexical-and-react/lexical-toolbar.png -------------------------------------------------------------------------------- /content/blog/how-to-find-the-caret-inside-a-contenteditable-element/get-caret-position-contenteditable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-find-the-caret-inside-a-contenteditable-element/get-caret-position-contenteditable.png -------------------------------------------------------------------------------- /content/blog/how-to-find-the-caret-inside-a-contenteditable-element/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-find-the-caret-inside-a-contenteditable-element/index.mdx -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/Components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/Components.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/Weather-app-react-js-open-weather-map-api.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/Weather-app-react-js-open-weather-map-api.gif -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-1.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-2.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-3.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-build-4.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-folder-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-folder-structure.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-functional-vs-class-based-components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-functional-vs-class-based-components.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-using-css-modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/how-to-organize-react-project-using-css-modules.png -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/index.mdx -------------------------------------------------------------------------------- /content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/weather-app-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-plan-and-organize-a-react-project-by-building-a-weather-app/weather-app-banner.png -------------------------------------------------------------------------------- /content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/0__6mh4KyyryG7OMM0Y.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/0__6mh4KyyryG7OMM0Y.jpg -------------------------------------------------------------------------------- /content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/1__Y02wQ0r5D1UONExF0sFwFQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/1__Y02wQ0r5D1UONExF0sFwFQ.png -------------------------------------------------------------------------------- /content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/1__gfH0a16jn3y63LN8RKIh4Q.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/1__gfH0a16jn3y63LN8RKIh4Q.png -------------------------------------------------------------------------------- /content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/1__sR16YIjQgtM__kK5hza1sWQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/1__sR16YIjQgtM__kK5hza1sWQ.png -------------------------------------------------------------------------------- /content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/how-to-succeed-on-fiverr-a-dead-simple-strategy/index.mdx -------------------------------------------------------------------------------- /content/blog/i-tried-freelancing-on-fiverr-3-lessons-ive-learned/0__wSKMBAgK4EezZYXx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/i-tried-freelancing-on-fiverr-3-lessons-ive-learned/0__wSKMBAgK4EezZYXx.jpg -------------------------------------------------------------------------------- /content/blog/i-tried-freelancing-on-fiverr-3-lessons-ive-learned/0__x71xoXlJu4zGjSIF.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/i-tried-freelancing-on-fiverr-3-lessons-ive-learned/0__x71xoXlJu4zGjSIF.jpg -------------------------------------------------------------------------------- /content/blog/i-tried-freelancing-on-fiverr-3-lessons-ive-learned/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/i-tried-freelancing-on-fiverr-3-lessons-ive-learned/index.mdx -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/0__bKRA8XgsY41zuvTK.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/0__bKRA8XgsY41zuvTK.jpg -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/App-Lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/App-Lifecycle.png -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Overview-Problems-And-Challenges-Of-Progressive-Web-Apps-2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Overview-Problems-And-Challenges-Of-Progressive-Web-Apps-2020.png -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/PWA-vs-Flutter-Google-Trends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/PWA-vs-Flutter-Google-Trends.png -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Platform-Specific-UI-Pattern-iOS-Android-Navigation-Bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Platform-Specific-UI-Pattern-iOS-Android-Navigation-Bar.png -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Project-Fugu-Progressive-Web-Apps-Chromium-Tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Project-Fugu-Progressive-Web-Apps-Chromium-Tracker.png -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Samsung-App-Store-PWA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/Samsung-App-Store-PWA.png -------------------------------------------------------------------------------- /content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/progressive-web-apps-in-2020-which-challenges-to-overcome/index.mdx -------------------------------------------------------------------------------- /content/blog/quitting-job-for-side-project/andrew-neel-fqoYO9MjLLQ-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/quitting-job-for-side-project/andrew-neel-fqoYO9MjLLQ-unsplash.jpg -------------------------------------------------------------------------------- /content/blog/quitting-job-for-side-project/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/quitting-job-for-side-project/index.mdx -------------------------------------------------------------------------------- /content/blog/tagged-template-literals-how-tools-like-styled-components-work/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/tagged-template-literals-how-tools-like-styled-components-work/index.mdx -------------------------------------------------------------------------------- /content/blog/tagged-template-literals-how-tools-like-styled-components-work/styled.jsx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/tagged-template-literals-how-tools-like-styled-components-work/styled.jsx.png -------------------------------------------------------------------------------- /content/blog/things-that-helped-me-doing-deep-work/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/things-that-helped-me-doing-deep-work/index.mdx -------------------------------------------------------------------------------- /content/blog/things-that-helped-me-doing-deep-work/ruben-ramirez-xhKG01FN2uk-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/things-that-helped-me-doing-deep-work/ruben-ramirez-xhKG01FN2uk-unsplash.jpg -------------------------------------------------------------------------------- /content/blog/using-the-new-next-12-image-component/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/using-the-new-next-12-image-component/index.mdx -------------------------------------------------------------------------------- /content/blog/using-the-new-next-12-image-component/robert-shunev-mS1nlYbq1kA-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/using-the-new-next-12-image-component/robert-shunev-mS1nlYbq1kA-unsplash.jpg -------------------------------------------------------------------------------- /content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/abstraction-layer-project-fugu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/abstraction-layer-project-fugu.png -------------------------------------------------------------------------------- /content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/google-unsplash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/google-unsplash.png -------------------------------------------------------------------------------- /content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/index.mdx -------------------------------------------------------------------------------- /content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/project-fugu-tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web/project-fugu-tracker.png -------------------------------------------------------------------------------- /content/blog/why-open-source-projects-are-your-best-marketing/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/why-open-source-projects-are-your-best-marketing/index.mdx -------------------------------------------------------------------------------- /content/blog/why-open-source-projects-are-your-best-marketing/open-source-as-freelancer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/why-open-source-projects-are-your-best-marketing/open-source-as-freelancer.png -------------------------------------------------------------------------------- /content/blog/why-open-source-projects-are-your-best-marketing/why-open-source-is-your-best-marketing-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/blog/why-open-source-projects-are-your-best-marketing/why-open-source-is-your-best-marketing-screenshot.png -------------------------------------------------------------------------------- /content/projects/lazy/Lazy-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/projects/lazy/Lazy-1.png -------------------------------------------------------------------------------- /content/projects/lazy/Lazy-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/projects/lazy/Lazy-2.png -------------------------------------------------------------------------------- /content/projects/lazy/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/projects/lazy/index.mdx -------------------------------------------------------------------------------- /content/projects/notion-clone/index.mdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/projects/notion-clone/index.mdx -------------------------------------------------------------------------------- /content/projects/notion-clone/notion-clone-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/projects/notion-clone/notion-clone-app.png -------------------------------------------------------------------------------- /content/projects/notion-clone/notion-clone-cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/content/projects/notion-clone/notion-clone-cover.png -------------------------------------------------------------------------------- /hooks/useDebounce.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/hooks/useDebounce.tsx -------------------------------------------------------------------------------- /hooks/useHasMounted.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/hooks/useHasMounted.tsx -------------------------------------------------------------------------------- /hooks/useSearchIndex.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/hooks/useSearchIndex.tsx -------------------------------------------------------------------------------- /hooks/useThemeValue.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/hooks/useThemeValue.tsx -------------------------------------------------------------------------------- /hooks/useVisibilityOnScroll.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/hooks/useVisibilityOnScroll.tsx -------------------------------------------------------------------------------- /lib/api/common/response.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/api/common/response.ts -------------------------------------------------------------------------------- /lib/api/github/collaborators.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/api/github/collaborators.ts -------------------------------------------------------------------------------- /lib/api/medium/followers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/api/medium/followers.ts -------------------------------------------------------------------------------- /lib/api/og/styles/BackgroundCanvas.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/api/og/styles/BackgroundCanvas.tsx -------------------------------------------------------------------------------- /lib/api/og/styles/BlogPostContent.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/api/og/styles/BlogPostContent.tsx -------------------------------------------------------------------------------- /lib/api/og/styles/ProfileContent.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/api/og/styles/ProfileContent.tsx -------------------------------------------------------------------------------- /lib/api/og/styles/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/api/og/styles/index.tsx -------------------------------------------------------------------------------- /lib/mdx/blog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/mdx/blog.tsx -------------------------------------------------------------------------------- /lib/mdx/common/getAllMdxFiles.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/mdx/common/getAllMdxFiles.ts -------------------------------------------------------------------------------- /lib/mdx/common/getCompiledMdx.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/mdx/common/getCompiledMdx.ts -------------------------------------------------------------------------------- /lib/mdx/common/getMdxFilePath.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/mdx/common/getMdxFilePath.ts -------------------------------------------------------------------------------- /lib/mdx/common/setEsbuildExecutable.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/mdx/common/setEsbuildExecutable.ts -------------------------------------------------------------------------------- /lib/mdx/projects.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/mdx/projects.tsx -------------------------------------------------------------------------------- /lib/rss/generateRssFeed.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lib/rss/generateRssFeed.ts -------------------------------------------------------------------------------- /lint-staged.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/lint-staged.config.js -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/next-env.d.ts -------------------------------------------------------------------------------- /next-sitemap.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/next-sitemap.config.js -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/next.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/package.json -------------------------------------------------------------------------------- /pages/404.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/404.tsx -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/_app.tsx -------------------------------------------------------------------------------- /pages/_document.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/_document.tsx -------------------------------------------------------------------------------- /pages/api/github/collaborators.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/api/github/collaborators.ts -------------------------------------------------------------------------------- /pages/api/medium/followers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/api/medium/followers.ts -------------------------------------------------------------------------------- /pages/api/og/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/api/og/index.tsx -------------------------------------------------------------------------------- /pages/blog/[slug].tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/blog/[slug].tsx -------------------------------------------------------------------------------- /pages/blog/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/blog/index.tsx -------------------------------------------------------------------------------- /pages/imprint.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/imprint.tsx -------------------------------------------------------------------------------- /pages/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/index.tsx -------------------------------------------------------------------------------- /pages/projects/[slug].tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/projects/[slug].tsx -------------------------------------------------------------------------------- /pages/services.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/services.tsx -------------------------------------------------------------------------------- /pages/transparency.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/pages/transparency.tsx -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/browserconfig.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/browserconfig.xml -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/fonts/BreeSerifLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/fonts/BreeSerifLight.woff -------------------------------------------------------------------------------- /public/fonts/BreeSerifLight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/fonts/BreeSerifLight.woff2 -------------------------------------------------------------------------------- /public/fonts/BreeSerifRegular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/fonts/BreeSerifRegular.woff -------------------------------------------------------------------------------- /public/fonts/BreeSerifRegular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/fonts/BreeSerifRegular.woff2 -------------------------------------------------------------------------------- /public/fonts/NotoSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/fonts/NotoSans-Regular.ttf -------------------------------------------------------------------------------- /public/images/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/images/avatar.jpg -------------------------------------------------------------------------------- /public/images/logo-k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/images/logo-k.png -------------------------------------------------------------------------------- /public/images/portrait-sitting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/images/portrait-sitting.jpg -------------------------------------------------------------------------------- /public/images/portrait.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/images/portrait.jpg -------------------------------------------------------------------------------- /public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/mstile-150x150.png -------------------------------------------------------------------------------- /public/safari-pinned-tab.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/safari-pinned-tab.svg -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/public/site.webmanifest -------------------------------------------------------------------------------- /sections/AboutPage/Hero.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/AboutPage/Hero.tsx -------------------------------------------------------------------------------- /sections/BlogPage/Hero.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/BlogPage/Hero.tsx -------------------------------------------------------------------------------- /sections/BlogPage/Listing.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/BlogPage/Listing.tsx -------------------------------------------------------------------------------- /sections/BlogPostPage/Banner.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/BlogPostPage/Banner.tsx -------------------------------------------------------------------------------- /sections/BlogPostPage/Footer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/BlogPostPage/Footer.tsx -------------------------------------------------------------------------------- /sections/BlogPostPage/Hero.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/BlogPostPage/Hero.tsx -------------------------------------------------------------------------------- /sections/HomePage/Hero.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/HomePage/Hero.tsx -------------------------------------------------------------------------------- /sections/HomePage/Introduction.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/HomePage/Introduction.tsx -------------------------------------------------------------------------------- /sections/HomePage/LatestPosts.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/HomePage/LatestPosts.tsx -------------------------------------------------------------------------------- /sections/HomePage/LatestProjects.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/HomePage/LatestProjects.tsx -------------------------------------------------------------------------------- /sections/ServicesPage/About.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/ServicesPage/About.tsx -------------------------------------------------------------------------------- /sections/ServicesPage/Contact.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/ServicesPage/Contact.tsx -------------------------------------------------------------------------------- /sections/ServicesPage/Hero.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/ServicesPage/Hero.tsx -------------------------------------------------------------------------------- /sections/ServicesPage/Services.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/sections/ServicesPage/Services.tsx -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/tsconfig.json -------------------------------------------------------------------------------- /utils/date/formatDate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/date/formatDate.ts -------------------------------------------------------------------------------- /utils/date/useCurrentTimestamp.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/date/useCurrentTimestamp.ts -------------------------------------------------------------------------------- /utils/fetcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/fetcher.ts -------------------------------------------------------------------------------- /utils/generateColorPaletteVariants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/generateColorPaletteVariants.ts -------------------------------------------------------------------------------- /utils/generateRandom.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/generateRandom.ts -------------------------------------------------------------------------------- /utils/generateTweetUrl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/generateTweetUrl.ts -------------------------------------------------------------------------------- /utils/getBaseUrl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/getBaseUrl.ts -------------------------------------------------------------------------------- /utils/getEmailAddress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/getEmailAddress.ts -------------------------------------------------------------------------------- /utils/getGithubFileUrl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/getGithubFileUrl.ts -------------------------------------------------------------------------------- /utils/normalizeName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/normalizeName.ts -------------------------------------------------------------------------------- /utils/router/getQueryParam.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/router/getQueryParam.ts -------------------------------------------------------------------------------- /utils/router/redirectTo.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/router/redirectTo.ts -------------------------------------------------------------------------------- /utils/router/setQueryParam.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/router/setQueryParam.ts -------------------------------------------------------------------------------- /utils/sort.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/portfolio-next/HEAD/utils/sort.ts --------------------------------------------------------------------------------