### Start development server with npm
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Starts the development server with npm. The server runs on http://localhost:3000.
```bash
npm run start
```
--------------------------------
### Install dependencies with npm
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Navigates into the project directory and installs dependencies using npm.
```bash
cd modern-portfolio
npm install
```
--------------------------------
### Install dependencies with yarn
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Navigates into the project directory and installs dependencies using yarn.
```bash
cd modern-portfolio
yarn
```
--------------------------------
### Full data.json example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/configuration/modifying-data.md
Complete example of the db/data.json file showing all configurable fields including hero, navLinks, stats, abilities, and more.
```json
{
"hero": {
"fullName": "Deri Kurniawan",
"jobTitle": "Full Stack Developer",
"image": "https://res.cloudinary.com/deri-kurniawan/image/upload/v1677262485/Github/modern-portfolio/Hero_2.png"
},
"navLinks": [
{
"id": "home",
"label": "Home",
"url": "/#home"
},
{
"id": "ability",
"label": "Ability",
"url": "/#ability"
},
{
"id": "projects",
"label": "Projects",
"url": "/#projects"
},
{
"id": "education",
"label": "Education",
"url": "/#education"
},
{
"id": "contacts",
"label": "Contacts",
"url": "/#contacts"
}
],
"stats": [
{
"label": "Projects",
"value": 20
},
{
"label": "Trusted By Client",
"value": 5
},
{
"label": "Total Client",
"value": 5
}
],
"abilities": [
{
"name": "React JS",
"icon": "https://img.icons8.com/plasticine/344/react.png",
"description": "I've been made over 20 apps using React JS."
},
{
"name": "React Native",
"icon": "https://img.icons8.com/plasticine/344/react.png",
"description": "I've been made over 10 apps using React Native."
},
{
"name": "Tailwindcss",
"icon": "https://img.icons8.com/color/344/tailwindcss.png",
"description": "I've been made over 5 apps using Tailwindcss."
},
{
"name": "Bootstrap 5",
"icon": "https://img.icons8.com/color/344/bootstrap.png",
"description": ""
},
{
"name": "Express JS",
"icon": "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAxNzIgMTcyIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0iYnV0dCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBmb250LWZhbWlseT0ibm9uZSIgZm9udC13ZWlnaHQ9Im5vbmUiIGZvbnQtc2l6ZT0ibm9uZSIgdGV4dC1hbmNob3I9Im5vbmUiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMCwxNzJ2LTE3MmgxNzJ2MTcyeiIgZmlsbD0ibm9uZSI+PC9wYXRoPjxnIGZpbGw9IiNmZmZmZmYiPjxwYXRoIGQ9Ik04NC45MTQyNSwxMzQuNTloNC4yMjgzM2MzLjAxLDAgNS44NDQ0MiwtMS40MDQ2NyA3LjY2NDc1LC0zLjgwMTkybDI2LjgyMTI1LC0zNS4yODUwOGwyNi44MjEyNSwzNS4yODUwOGMxLjgyMDMzLDIuMzkzNjcgNC42NTQ3NSwzLjgwMTkyIDcuNjY0NzUsMy44MDE5Mmg0LjIyODMzbC0zNC4yMTcyNSwtNDUuMDA2NjdsMzIuNjgzNTgsLTQzaC00LjIyODMzYy0zLjAxLDAgLTUuODQ0NDIsMS40MDQ2NyAtNy42NjQ3NSwzLjgwMTkybC0yNS4yOTExNywzMy4yNzQ4M2wtMjUuMjk0NzUsLTMzLjI3ODQyYy0xLjgyMDMzLC0yLjM5MzY3IC00LjY1NDc1LC0zLjc5ODMzIC03LjY2NDc1LC0zLjc5ODMzaC00LjIyODMzbDMyLjY4MzU4LDQzeiI+PC9wYXRoPjxwYXRoIGQ9Ik04Niw5My4xNjY2N3YtMTAuNzVjMCwtMjMuOTE4NzUgLTIxLjMwMjkyLC00Mi44NjAyNSAtNDUuOTcwNTgsLTM4Ljg4NjMzYy0xOS4yMDMwOCwzLjA5MjQyIC0zMi44NjI3NSwyMC40NTcyNSAtMzIuODYyNzUsMzkuOTA0djIuNTY1Njd2Ny4xNjY2N3YwLjUwODgzYzAsMjMuNDgxNTggMTcuMTE3NTgsNDIuMjMzMTcgMzguOTQzNjcsNDIuNDkxMTdjMTguMjQ2MzMsMC4yMTUgMzMuNjQzOTIsLTExLjk4MjY3IDM4LjM2Njc1LC0yOC42NjMwOGgtMy42ODM2N2MtMi4yMjE2NywwIC00LjIzNTUsMS4yNzIwOCAtNS4xOTk0MiwzLjI3MTU4Yy02LjIzMTQyLDEyLjg4MjA4IC0yMC43NDM5MiwyMS4wMDU1IC0zNi42NTAzMywxNy4zNTA1Y2MtMTQuNjYzLC0zLjM3MTkyIC0yNC42MTAzMywtMTcuMTEwNDIgLTI0LjYxMDMzLC0zMi4xNTMyNXYtMi44MDU3NXpNMTQuMzMzMzMsODQuOTYwODNjMCwtMTYuODcwMzMgMTAuMDQ3NjcsLTMwLjY2MjU4IDI0LjgxMSwtMzMuOTYyODNjMjEuMDQ4NSwtNC43MDEzMyAzOS42ODksMTEuMTggMzkuNjg5LDMxLjQxODY3djMuNTgzMzNoLTY0LjV6Ij48L3BhdGg+PC9nPjwvZz48L3N2Zz4=",
"description": ""
},
{
"name": "Next JS",
"icon": "https://cdn.icon-icons.com/icons2/2148/PNG/512/nextjs_icon_132160.png",
"description": "",
"inverted": true
},
{
"name": "CodeIgniter 4",
"icon": "https://img.icons8.com/external-tal-revivo-shadow-tal-revivo/344/external-codeigniter-is-an-open-source-software-rapid-development-web-framework-logo-shadow-tal-revivo.png",
"description": ""
},
{
"name": "Laravel 8",
"icon": "https://img.icons8.com/external-tal-revivo-shadow-tal-revivo/344/external-laravel-is-a-free-open-source-php-web-framework-logo-shadow-tal-revivo.png",
"description": ""
},
{
"name": "PHP 8",
"icon": "https://img.icons8.com/external-those-icons-lineal-color-those-icons/344/external-PHP-programming-and-development-those-icons-lineal-color-those-icons.png",
"description": ""
},
{
"name": "MySQL",
"icon": "https://img.icons8.com/color/344/mysql-logo.png",
"description": ""
},
{
"name": "MongoDB",
"icon": "https://img.icons8.com/color/344/mongodb.png",
"description": ""
},
{
"name": "Firebase",
"icon": "https://img.icons8.com/color/344/firebase.png",
"description": ""
},
{
"name": "Git",
"icon": "https://img.icons8.com/color/344/git.png",
"description": ""
},
{
"name": "GitHub",
"icon": "https://img.icons8.com/color/344/github.png",
"description": ""
},
{
"name": "Figma",
"icon": "https://img.icons8.com/color/344/figma.png",
"description": ""
},
{
"name": "Postman",
"icon": "https://img.icons8.com/color/344/postman.png",
"description": ""
},
{
"name": "Vercel",
"icon": "https://img.icons8.com/color/344/vercel.png",
"description": ""
},
{
"name": "Netlify",
"icon": "https://img.icons8.com/color/344/netlify.png",
"description": ""
},
{
"name": "Visual Studio Code",
"icon": "https://img.icons8.com/color/344/visual-studio-code.png",
"description": ""
}
],
"projects": [
{
"id": 1,
"title": "Modern Portfolio",
"description": "A modern portfolio website built with React and Tailwind CSS.",
"image": "https://res.cloudinary.com/deri-kurniawan/image/upload/v1677262485/Github/modern-portfolio/Modern_Portfolio.png",
"tech": ["React", "Tailwind CSS"],
"demoUrl": "https://modern-portfolio.vercel.app",
"repoUrl": "https://github.com/deri-kurniawan/modern-portfolio"
},
{
"id": 2,
"title": "E-Commerce App",
"description": "A full-stack e-commerce application with payment integration.",
"image": "https://res.cloudinary.com/deri-kurniawan/image/upload/v1677262485/Github/modern-portfolio/E-Commerce.png",
"tech": ["React", "Node.js", "Express", "MongoDB"],
"demoUrl": "https://ecommerce-app.vercel.app",
"repoUrl": "https://github.com/deri-kurniawan/ecommerce-app"
},
{
"id": 3,
"title": "Chat App",
"description": "A real-time chat application using Socket.io.",
"image": "https://res.cloudinary.com/deri-kurniawan/image/upload/v1677262485/Github/modern-portfolio/Chat_App.png",
"tech": ["React", "Socket.io", "Node.js"],
"demoUrl": "https://chat-app.vercel.app",
"repoUrl": "https://github.com/deri-kurniawan/chat-app"
},
{
"id": 4,
"title": "Blog Platform",
"description": "A blog platform with markdown support.",
"image": "https://res.cloudinary.com/deri-kurniawan/image/upload/v1677262485/Github/modern-portfolio/Blog_Platform.png",
"tech": ["Next.js", "MDX", "Tailwind CSS"],
"demoUrl": "https://blog-platform.vercel.app",
"repoUrl": "https://github.com/deri-kurniawan/blog-platform"
},
{
"id": 5,
"title": "Task Manager",
"description": "A task management app with drag-and-drop.",
"image": "https://res.cloudinary.com/deri-kurniawan/image/upload/v1677262485/Github/modern-portfolio/Task_Manager.png",
"tech": ["React", "Redux", "Node.js"],
"demoUrl": "https://task-manager.vercel.app",
"repoUrl": "https://github.com/deri-kurniawan/task-manager"
}
],
"educations": [
{
"id": 1,
"school": "University of Indonesia",
"degree": "Bachelor of Computer Science",
"year": "2015 - 2019"
},
{
"id": 2,
"school": "Coding Bootcamp",
"degree": "Full Stack Web Development",
"year": "2020"
}
],
"contacts": {
"email": "deri.kurniawan@example.com",
"phone": "+62 812-3456-7890",
"address": "Jakarta, Indonesia",
"socials": {
"github": "https://github.com/deri-kurniawan",
"linkedin": "https://linkedin.com/in/deri-kurniawan",
"twitter": "https://twitter.com/deri_kurniawan"
}
}
}
```
--------------------------------
### Start development server with yarn
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Starts the development server with yarn. The server runs on http://localhost:3000.
```bash
yarn start
```
--------------------------------
### Run and build commands for the page
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/home-page.md
npm scripts to start the dev server and build the static site. The start command serves the page at localhost:3000, and the build command generates static files for the root route.
```sh
npm run start # http://localhost:3000 renders Home
npm run build # static generation emits the page for /
```
--------------------------------
### Project JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the Project type with fields name, image, and description.
```json
{
"name": string,
"image": string,
"description": string,
}
```
--------------------------------
### Add install icon to manifest
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/pwa-manifest.md
Add a 192x192 icon to the manifest. The referenced src must exist in static/; a missing asset silently breaks the install flow.
```json
{
"icons": [
{
"src": "/img/icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any maskable"
}
]
}
```
--------------------------------
### Ability JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the Ability type with fields name, icon, description, and optional inverted.
```json
{
"name": string,
"icon": string,
"description": string,
"inverted": boolean?
}
```
--------------------------------
### Contact JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the Contact type with fields label, icon, description, and url.
```json
{
"label": string,
"icon": string,
"description": string,
"url": string
}
```
--------------------------------
### Full Data Example (JSON)
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/configuration/modifying-data.md
A complete JSON data structure for the portfolio, including testimonials, footer navigation links, and social media profiles. Use this as a reference when modifying the portfolio's data.
```json
"name": "Kenn Gallanger",
"position": "CEO & Founder",
"avatar": "https://picsum.photos/id/177/200",
"review": "There can be no doubt about this Deri's ability. I am very happy to be able to use his services."
}
],
"footer": [
{
"label": "Pages",
"urls": [
{
"label": "Home",
"url": "/#home",
"blank": false
},
{
"label": "Stats",
"url": "/#stats",
"blank": false
},
{
"label": "Ability",
"url": "/#ability",
"blank": false
},
{
"label": "Projects",
"url": "/#projects",
"blank": false
},
{
"label": "Education",
"url": "/#education",
"blank": false
},
{
"label": "Feedback",
"url": "/#feedback",
"blank": false
},
{
"label": "Contacts",
"url": "/#contacts",
"blank": false
}
]
},
{
"label": "Blogs & Socials",
"urls": [
{
"label": "Stack Overflow",
"url": "https://stackoverflow.com/users/19716588/deri-kurniawan",
"blank": true
},
{
"label": "Github",
"url": "https://github.com/deri-kurniawan/",
"blank": true
},
{
"label": "LinkedIn",
"url": "https://www.linkedin.com/in/deri-kurniawan/",
"blank": true
},
{
"label": "Instagram",
"url": "https://www.instagram.com/deri561/",
"blank": true
},
{
"label": "Twitter",
"url": "https://twitter.com/derii561",
"blank": true
},
{
"label": "Medium",
"url": "https://deri-kurniawan.medium.com",
"blank": true
},
{
"label": "DEV",
"url": "https://dev.to/deri_kurniawan",
"blank": true
}
]
},
{
"label": "Support Us",
"urls": [
{
"label": "Buy Me A Coffee",
"url": "https://www.buymeacoffee.com/derikurniawan",
"blank": true
},
{
"label": "PayPal",
"url": "https://paypal.me/derikurniawan5?country.x=ID&locale.x=en_US",
"blank": true
},
{
"label": "Ko-fi",
"url": "https://ko-fi.com/derikurniawan",
"blank": true
}
]
}
],
"socialMedia": [
{
"label": "Instagram",
"username": "@deri561",
"icon": "https://img.icons8.com/color/344/instagram-new--v1.png",
"url": "https://www.instagram.com/deri561/"
},
{
"label": "Twitter",
"username": "@derii561",
"icon": "https://img.icons8.com/color/344/twitter--v1.png",
"url": "https://twitter.com/derii561"
},
{
"label": "LinkedIn",
"username": "deri-kurniawan",
"icon": "https://img.icons8.com/fluency/344/linkedin.png",
"url": "https://www.linkedin.com/in/deri-kurniawan/"
},
{
"label": "Github",
"username": "deri-kurniawan",
"icon": "https://img.icons8.com/fluency/344/github.png",
"url": "https://github.com/deri-kurniawan/"
}
]
}
```
--------------------------------
### Education JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the Education type with fields title, description, timeRange, and url.
```json
{
"title": string,
"description": string,
"timeRange": string,
"url": string
}
```
--------------------------------
### Hero JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the Hero type with fields fullName, jobTitle, and image.
```json
"hero": {
"fullName": string,
"jobTitle": string,
"image": string
}
```
--------------------------------
### Full Data Example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/configuration/modifying-data.md
This snippet shows a data object with a base64-encoded icon and a URL. It appears to be part of a larger data structure, likely for a portfolio or icon list.
```plaintext
"icon": "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAxNzIgMTcyIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0iYnV0dCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBmb250LWZhbWlseT0ibm9uZSIgZm9udC13ZWlnaHQ9Im5vbmUiIGZvbnQtc2l6ZT0ibm9uZSIgdGV4dC1hbmNob3I9Im5vbmUiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMCwxNzJ2LTE3MmgxNzJ2MTcyeiIgZmlsbD0ibm9uZSI+PC9wYXRoPjxnIGZpbGw9IiNmZmZmZmYiPjxwYXRoIGQ9Ik04NiwxNy4yYy0zNy45OTQ4LDAgLTY4LjgsMzAuODA1MiAtNjguOCw2OC44YzAsMzIuMjM4NTMgMjIuMTk5NDcsNTkuMjEzODcgNTIuMTI3NDcsNjYuNjc4NjdjLTAuMzIxMDcsLTAuOTI4OCAtMC41Mjc0NywtMi4wMDY2NyAtMC41Mjc0NywtMy4zNDI1M3YtMTEuNzU5MDdjLTIuNzkyMTMsMCAtNy40NzA1MywwIC04LjY0NTg3LDBjLTQuNzA3MDcsMCAtOC44OTI0LC0yLjAyMzg3IC0xMC45MjIsLTUuNzg0OTNjLTIuMjUzMiwtNC4xNzk2IC0yLjY0MzA3LC0xMC41NzIyNyAtOC4yMjczMywtMTQuNDgyNGMtMS42NTY5MywtMS4zMDE0NyAtMC4zOTU2LC0yLjc4NjQgMS41MTM2LC0yLjU4NTczYzMuNTI2LDAuOTk3NiA2LjQ1LDMuNDE3MDcgOS4yMDIsNy4wMDYxM2MyLjc0MDUzLDMuNTk0OCA0LjAzMDUzLDQuNDA4OTMgOS4xNTA0LDQuNDA4OTNjMi40ODI1MywwIDYuMTk3NzMsLTAuMTQzMzMgOS42OTUwNywtMC42OTM3M2MxLjg4MDUzLC00Ljc3NTg3IDUuMTMxMzMsLTkuMTczMzMgOS4xMDQ1MywtMTEuMjQ4OGMtMjIuOTEwNCwtMi4zNTY0IC0zMy44NDM4NywtMTMuNzU0MjcgLTMzLjg0Mzg3LC0yOS4yMjg1M2MwLC02LjY2MjEzIDIuODM4LC0xMy4xMDY0IDcuNjU5NzMsLTE4LjUzNTg3Yy0xLjU4MjQsLTUuMzg5MzMgLTMuNTcxODcsLTE2LjM4MDEzIDAuNjA3NzMsLTIwLjU2NTQ3YzEwLjMwODUzLDAgMTYuNTQwNjcsNi42ODUwNyAxOC4wMzcwNyw4LjQ5MTA3YzUuMTM3MDcsLTEuNzYwMTMgMTAuNzc4NjcsLTIuNzU3NzMgMTYuNzA2OTMsLTIuNzU3NzNjNS45Mzk3MywwIDExLjYwNDI3LDAuOTk3NiAxNi43NTI4LDIuNzY5MmMxLjQ3OTIsLTEuNzk0NTMgNy43MTcwNywtOC41MDI1MyAxOC4wNDg1MywtOC41MDI1M2M0LjE5NjgsNC4xOTEwNyAyLjE4NDQsMTUuMjI3NzMgMC41ODQ4LDIwLjYwNTZjNC43OTMwNyw1LjQxOCA3LjYxMzg3LDExLjg0NTA3IDcuNjEzODcsMTguNDk1NzNjMCwxNS40NjI4IC0xMC45MTYyNywyNi44NTQ5MyAtMzMuNzkyMjcsMjkuMjIyOGM2LjI5NTIsMy4yODUyIDEwLjg4NzYsMTIuNTE1ODcgMTAuODg3NiwxOS40NzA0djE1LjY3NDkzYzAsMC41OTYyNyAtMC4xMzE4NywxLjAyNjI3IC0wLjIwMDY3LDEuNTM2NTNjMjYuODA5MDcsLTkuMzk2OTMgNDYuMDY3MzMsLTM0Ljg1MjkzIDQ2LjA2NzMzLC02NC44NzI2N2MwLC0zNy45OTQ4IC0zMC44MDUyLC02OC44IC02OC44LC02OC44eiI+PC9wYXRoPjwvZz48L2c+PC9zdmc+",
"url": "https://github.com/deri-kurniawan/"
```
--------------------------------
### Run Docusaurus site with npm scripts
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/docusaurus-config.md
Run the Docusaurus site locally and generate static files. The npm scripts delegate to the Docusaurus CLI (docusaurus start, build, serve, deploy). No import is required in application code.
```sh
npm install
npm run start # dev server with live reload
npm run build # static site generation using this config
npm run serve # serve the built site
```
--------------------------------
### Feedback JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the Feedback type with fields name, position, avatar, and review.
```json
{
"name": string,
"position": string,
"avatar": string,
"review": string
}
```
--------------------------------
### Basic usage - Extend sidebar with explicit items
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/sidebars.md
Example of extending the autogenerated sidebar with explicit items. Add hand-written entries like doc IDs and category objects to the tutorialSidebar array.
```javascript
const sidebars = {
tutorialSidebar: [
"intro",
{
type: "category",
label: "Getting Started",
items: ["getting-started/installation", "getting-started/configuration"],
},
],
};
module.exports = sidebars;
```
--------------------------------
### Complete Home page component (src/pages/index.js)
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/home-page.md
The full module for the Home page component. It imports React, clsx, Docusaurus Link, useDocusaurusContext, Layout, and HomepageFeatures, and defines the HomepageHeader and Home components. The Home component uses useDocusaurusContext to get siteConfig and renders a Layout with a title and description, a HomepageHeader, and a main section with HomepageFeatures.
```jsx
import React from "react";
import clsx from "clsx";
import Link from "@docusaurus/Link";
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import Layout from "@theme/Layout";
import HomepageFeatures from "@site/src/components/HomepageFeatures";
import styles from "./index.module.css";
function HomepageHeader() {
const { siteConfig } = useDocusaurusContext();
return (
{siteConfig.title}
{siteConfig.tagline}
Documentation
);
}
export default function Home() {
const { siteConfig } = useDocusaurusContext();
return (
);
}
```
--------------------------------
### static/manifest.json web app manifest
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/pwa-manifest.md
Web app manifest for the Docusaurus PWA site, served at /manifest.json. Declares installable PWA identity with theme/background colors, standalone display, scope and start URL, and four PNG icons. Note the PWA plugin injects a different theme-color meta (rgb(37, 194, 160)) in pwaHead.
```json
{
"theme_color": "#010510",
"background_color": "#010510",
"display": "standalone",
"scope": "/",
"start_url": "/",
"name": "Deri Kurniawan Modern Portfolio",
"short_name": "Deri Portfolio",
"description": "About Deri Kurniawan Personality, Skills, Education, Projects and Feedback",
"icons": [
{
"src": "/img/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/img/icon-256x256.png",
"sizes": "256x256",
"type": "image/png"
},
{
"src": "/img/icon-384x384.png",
"sizes": "384x384",
"type": "image/png"
},
{
"src": "/img/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
```
--------------------------------
### SocialMedia JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON example of the SocialMedia type, which contains label, username, icon, and url fields. The icon field accepts a URL or an inline SVG data URI.
```json
{
"label": string,
"username": string,
"icon": string,
"url": string
}
```
--------------------------------
### Build the app with npm
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Builds the app with npm for production deployment.
```bash
npm run build
```
--------------------------------
### Build the app with yarn
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Builds the app with yarn for production deployment.
```bash
yarn build
```
--------------------------------
### FooterColumn and FooterLink JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON example of the FooterColumn type, which contains a label and an array of FooterLink objects. Each FooterLink has a label, url, and blank boolean. The blank field is required and is false for in-page anchors and true for external links.
```json
{
"label": string,
"urls": [
{
"label": string,
"url": string,
"blank": boolean
},
]
}
```
--------------------------------
### Lint the app with npm
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Lints the app with npm.
```bash
npm run lint
```
--------------------------------
### Stat JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the Stat type with fields label and value.
```json
{
"label": string,
"value": number
}
```
--------------------------------
### Verify manifest after build
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/pwa-manifest.md
Run the build and then grep the built site for the manifest content to confirm it was generated.
```sh
npm run build
# the built site contains manifest.json at the site root
grep -rl "Deri Kurniawan Modern Portfolio" build/ | head
```
--------------------------------
### NavLink JSON example
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/types.md
JSON object showing the structure of the NavLink type with fields id, label, and url.
```json
{
"id": string,
"label": string,
"url": string
}
```
--------------------------------
### Clone the repository
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/docs/getting-started/Installation.md
Clones the modern portfolio repository from GitHub.
```bash
git clone https://github.com/Deri-Kurniawan/modern-portfolio.git
```
--------------------------------
### Configure themeConfig.footer in docusaurus.config.js
Source: https://github.com/deri-kurniawan/modern-portfolio-docs/blob/master/_autodocs/api-reference/docusaurus-config.md
Defines the footer with dark style, a links array (detailed in tables), and a copyright template literal evaluated at config load time so the year tracks the build year. The links array contains columns for Documentation, Social Media, Support Me, and Blogs.
```javascript
footer: {
style: "dark",
links: [ /* see tables below */ ],
copyright: `Copyright © ${new Date().getFullYear()} Deri Kurniawan Portfolio, Inc. Built with Docusaurus.`,
},
```