├── .prettierignore ├── .env.example ├── .eslintrc.json ├── .prettierrc ├── next.config.js ├── postcss.config.js ├── public └── images │ ├── avatar_4.png │ ├── dev-portfolio.png │ └── Cosmic_OGImage.png ├── src ├── app │ ├── favicon │ │ ├── icon.ico │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── apple-touch-icon.png │ │ ├── mstile-150x150.png │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── browserconfig.xml │ │ ├── site.webmanifest │ │ └── safari-pinned-tab.svg │ ├── api │ │ ├── disable-draft │ │ │ └── route.js │ │ └── draft │ │ │ └── route.js │ ├── providers.jsx │ ├── not-found.jsx │ ├── layout.jsx │ ├── posts │ │ ├── [slug] │ │ │ └── page.jsx │ │ └── page.jsx │ ├── works │ │ ├── page.jsx │ │ └── [slug] │ │ │ └── page.jsx │ ├── page.jsx │ └── about │ │ └── page.jsx ├── helpers │ └── getMetadata.js ├── components │ ├── PageContainer.jsx │ ├── Date.jsx │ ├── DevIcon.jsx │ ├── PostTitle.jsx │ ├── Layout.jsx │ ├── Logo.jsx │ ├── CoverImage.jsx │ ├── PostPreview.jsx │ ├── MorePosts.jsx │ ├── markdown-styles.module.css │ ├── Loader.jsx │ ├── ProductCard.jsx │ ├── AlertPreview.jsx │ ├── PostBody.jsx │ ├── Footer.jsx │ ├── ThemeChanger.jsx │ ├── MenuItems.jsx │ ├── Header.jsx │ ├── Socials.jsx │ ├── FilteredPosts.jsx │ ├── Navbar.jsx │ ├── PostHeader.jsx │ └── PostList.jsx ├── sections │ ├── PostsSection.jsx │ ├── WorksSection.jsx │ ├── ToolboxSection.jsx │ ├── AboutMeSection.jsx │ ├── ContactSection.jsx │ └── IntroSection.jsx ├── configs │ ├── dev-icons.js │ └── icons.jsx ├── lib │ └── cosmic.js └── styles │ └── globals.css ├── next-env.d.js ├── jsconfig.json ├── .gitignore ├── package.json ├── tailwind.config.js └── README.md /.prettierignore: -------------------------------------------------------------------------------- 1 | .cache 2 | package.json 3 | package-lock.json 4 | public -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | COSMIC_BUCKET_SLUG= 2 | COSMIC_READ_KEY= 3 | COSMIC_PREVIEW_SECRET= -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "prettier"] 3 | } 4 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "semi": false, 4 | "singleQuote": true 5 | } 6 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | images: { 3 | domains: ['imgix.cosmicjs.com'], 4 | }, 5 | } 6 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/images/avatar_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/public/images/avatar_4.png -------------------------------------------------------------------------------- /src/app/favicon/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/src/app/favicon/icon.ico -------------------------------------------------------------------------------- /public/images/dev-portfolio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/public/images/dev-portfolio.png -------------------------------------------------------------------------------- /public/images/Cosmic_OGImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/public/images/Cosmic_OGImage.png -------------------------------------------------------------------------------- /src/app/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/src/app/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /src/app/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/src/app/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /src/app/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/src/app/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /src/app/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/src/app/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /src/helpers/getMetadata.js: -------------------------------------------------------------------------------- 1 | const getMetadata = (object, fallback = '') => { 2 | return object ?? fallback 3 | } 4 | export default getMetadata 5 | -------------------------------------------------------------------------------- /src/app/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/src/app/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /src/app/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/nextjs-developer-portfolio/HEAD/src/app/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /src/components/PageContainer.jsx: -------------------------------------------------------------------------------- 1 | const PageContainer = ({ children }) => { 2 | return
{children}
3 | } 4 | export default PageContainer 5 | -------------------------------------------------------------------------------- /src/app/api/disable-draft/route.js: -------------------------------------------------------------------------------- 1 | import { draftMode } from 'next/headers' 2 | import { redirect } from 'next/navigation' 3 | 4 | export async function GET(request) { 5 | draftMode().disable() 6 | redirect('/') 7 | } 8 | -------------------------------------------------------------------------------- /next-env.d.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /src/components/Date.jsx: -------------------------------------------------------------------------------- 1 | import { parseISO, format } from 'date-fns' 2 | 3 | const Date = ({ dateString, formatStyle }) => { 4 | const date = parseISO(dateString) 5 | return 6 | } 7 | export default Date 8 | -------------------------------------------------------------------------------- /src/components/DevIcon.jsx: -------------------------------------------------------------------------------- 1 | const DevIcon = ({ iconName, name }) => { 2 | return ( 3 |
  • 4 | 5 | {name} 6 |
  • 7 | ) 8 | } 9 | export default DevIcon 10 | -------------------------------------------------------------------------------- /src/components/PostTitle.jsx: -------------------------------------------------------------------------------- 1 | const PostTitle = ({ children }) => { 2 | return ( 3 |

    4 | {children} 5 |

    6 | ) 7 | } 8 | export default PostTitle 9 | -------------------------------------------------------------------------------- /src/app/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "jsx": "react", 4 | "baseUrl": "./src", 5 | "paths": { 6 | "@/components/*": ["components/*"], 7 | "@/lib/*": ["lib/*"], 8 | "@/configs/*": ["configs/*"], 9 | "@/sections/*": ["sections/*"], 10 | "@/styles/*": ["styles/*"] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/providers.jsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | import { ThemeProvider } from 'next-themes' 3 | 4 | export default function Providers({ children }) { 5 | return ( 6 | 11 | {children} 12 | 13 | ) 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | /.pnp 4 | .pnp.js 5 | 6 | # testing 7 | /coverage 8 | 9 | # next.js 10 | /.next/ 11 | /out/ 12 | 13 | # production 14 | /build 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # local env files 26 | .env 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | 32 | # vercel 33 | .vercel 34 | -------------------------------------------------------------------------------- /src/app/favicon/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /src/components/Layout.jsx: -------------------------------------------------------------------------------- 1 | import Footer from './Footer' 2 | import { Meta } from './Meta' 3 | import Header from './Header' 4 | import AlertPreview from './AlertPreview' 5 | 6 | const Layout = ({ children, preview }) => { 7 | return ( 8 | <> 9 | 10 |
    11 | {preview && } 12 |
    13 | {children} 14 |
    15 |