Skip to content

ysfBenali/next-portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

67 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

next-portfolio : My personal website, a basic portfolio for developers, built from scratch with Next.js.

✨ Features

  • Support Light & Dark Theme via Tailwindcss.

  • High Score on Performance, A11y, Best Practices, SEO and PWA:

    Lighthouse test
    > Page speed test
    > Pingdom test

  • Fully Responsive.

  • PWA (desktop & mobile).

  • A contact form protected by Google Recaptcha powered by Formium.

  • Fetches Github projects with most stars using Github GraphQL API.

  • Easy to customize.

  • One Click Production Serverless Deploy to Vercel.

  • Google analytics.

  • Prettier, ESLint, Husky and Lint-staged integration.

πŸš€ Getting Started

  1. Grab your Github token from GitHub
  2. Create an account at Formium and grab your form endpoint url
  3. Grab a Google recaptcha V2 key from Google Recaptcha
  4. Create an account at Cal and grab your calendar id.
  5. Clone this repo
    git clone https://github.com/ysfBenali/nex-portfolio && cd next-portfolio
  6. Run cp .env.development.local.template .env
  7. Run nvm use to use the correct node version defined in .nvmrc
  8. Run yarn && yarn dev

    Serve with hot reload at localhost:3000

πŸ‘·β€β™‚οΈ Build With

  • Next.js
  • TypeScript
  • Tailwindcss
  • Formium
  • Google Recaptcha

🧐 What's inside?

A quick look at the top-level files and directories :

β”œβ”€β”€ .husky 				# Husky config (pre-commit hooks, ...)
β”œβ”€β”€ node_modules
β”œβ”€β”€ public
β”‚   β”œβ”€β”€ assets				# Assets
β”‚   β”‚   β”œβ”€β”€ contact.svg			# Illustrations from (undraw.co)
β”‚   β”‚   β”œβ”€β”€ icons			# Icons
β”‚   β”‚   └── thumbnail			# Cover of your website when it's shared to social media
β”‚   β”œβ”€β”€ fonts				# Self-hosted fonts with @next/font
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ app				# AppDir
β”‚   β”‚	β”œβ”€β”€ api
β”‚   β”‚	β”‚   └── contact
β”‚   β”‚ 	β”‚ 	└── route.ts		# Route Handler for sending contact form data
β”‚   β”‚	β”œβ”€β”€ error.tsx
β”‚   β”‚   β”œβ”€β”€ head.tsx
β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   └── page.tsx
β”‚   β”œβ”€β”€ components			# Components
β”‚   β”‚   β”œβ”€β”€ common			# Common components
β”‚   β”‚   └── modules			# Modules components (About, Contact, Projects)
β”‚   β”œβ”€β”€config
β”‚   β”‚   └── next-seo.config.ts	        # Default SEO related tags
β”‚   β”œβ”€β”€ generated
β”‚   β”‚	β”œβ”€β”€ ...
β”‚   β”‚	└── graphql.d.ts 	        # Generated types from github graphql schema
β”‚   β”œβ”€β”€ hooks				# Custom hooks
β”‚   β”‚	β”œβ”€β”€ lib
β”‚   β”‚	β”‚   └── utils.ts		# Utils functions
β”‚   └── providers
β”‚       └── ThemeProvider.tsx   	# Theme Provider
β”œβ”€β”€ globals.css 			# Global styles (css variables, colors, classes, ...)
β”œβ”€β”€ package.json
β”œβ”€β”€ tailwind.config.js 			# Tailwind config
β”œβ”€β”€ tsconfig.json 			# Typescript config
└── yarn.lock

πŸ“Œ Todo

  • Improuve Performance, a11y, SEO, PWA .
  • Add Blog Section .