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 .