β‘ Ysfbenali.com
next-portfolio : My personal website, a basic portfolio for developers, built from scratch with Next.js.
-
Support Light & Dark Theme via
Tailwindcss
. -
High Score on
Performance
,A11y
,Best Practices
,SEO
andPWA
: -
Fully Responsive.
-
PWA (desktop & mobile).
-
A contact form protected by
Google Recaptcha
powered byFormium
. -
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.
- Grab your Github token from GitHub
- Create an account at Formium and grab your form endpoint url
- Grab a Google recaptcha V2 key from Google Recaptcha
- Create an account at Cal and grab your calendar id.
- Clone this repo
git clone https://github.com/ysfBenali/nex-portfolio && cd next-portfolio
- Run
cp .env.development.local.template .env
- Run
nvm use
to use the correct node version defined in.nvmrc
- Run
yarn && yarn dev
Serve with hot reload at localhost:3000
- Next.js
- TypeScript
- Tailwindcss
- Formium
- Google Recaptcha
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
-
Improuve Performance, a11y, SEO, PWA. - Add Blog Section .