First, you should know that you'll need to install some dependencies to be able to run the project.
- install node.js environment
- install VSCode
-
Open the portfolio project in VS Code to edit the code and preview it in your Chrome browser.
-
Replace the portfolio data with your personal information. It's recommended to have basic knowledge of JavaScript arrays and objects to edit the data more easily.
- Add appropriate images in place of the placeholder images.
- Enable the contact form to allow users to send messages via email.
-
Deploy the portfolio using a hosting provider Vercel to make it accessible online.
- Test the contact form and other functionalities to ensure everything works properly
Folder Structure - files/folders that should modified
├── public # [Folder] images and cv file
│ ├── images # [Folder] Images
│ │ ├── projects # [Folder] Project images
│ │ ├── tools # [Folder] Tool images
│ │ ├── clients # [Folder] Client images
│ │ ├── about.png # [File] About image
│ │ └── hero.png # [File] Hero image
│ └── cv.pdf # [File] CV PDF file
├── src # [Folder] Source Folder (main folder)
│ ├── _actions # [Folder] Actions (specifically for form action)
│ ├── app # [Folder] App router
│ │ └── favicon.ico # [File] favicon image
│ ├── components # [Folder] Components
│ ├── data # [Folder] Data (portfolio data) modify all files inside
│ │ ├── about.ts # [File] About section data
│ │ ├── contact.ts # [File] Contact section data
│ │ ├── experience.ts # [File] Experience section data
│ │ ├── config.ts # [File] configuration file ( theme configuration)
│ │ ├── home.ts # [File] Home section data
│ │ ├── projects.ts # [File] Projects section data
│ │ └── services.ts # [File] Services section data
│ ├── context # [Folder] Context for global state management
│ ├── hooks # [Folder] Context for global state management
│ ├── libs # [Folder] Custom hooks
│ ├── shared # [Folder] Shared types or colors
│ └── styles.module.css # [Folder] CSS styles module
├── .env # [File] Environment variables file
├── .eslintrc # [File] Eslintrc file
├── .gitignore # [File] Git ignore file
├── components.json # [File] Components description
├── next-env.d.ts # [File] Environment variables types
├── next.config.mjs # [File] Next.js configuration
├── package-lock.json # [File] NPM lock file
├── package.json # [File] NPM lock file
├── postcss.config.mjs # [File] Postcss configuration
└── tsconfig.ts # [File] Project readme
-
install
node.js
-
install
VSCode
-
open VSCode and open the portfolio project folder
Portfolio folder that contains of public, src,
.env, etc... files
-
press CTRL + J to open the terminal and then select
output
- choose command prompt instead of powershell
-
write: node -v and press Enter to show the version of
nodejs and sure you installed properly otherwise there is
a problem about installation
-
write: npm i and press Enter to install
node_modules folder
-
write: npm run dev and press Enter to open the
project in your computer as a server
-
you will find http://localhost:3000 in the output just
press Ctrl + click on http://localhost:3000 to
open the link on browser
-
now you can customize the portfolio and show your customization
on the web page without reload the page
-
you should know that before start: all editing will be on
data folder for
portfolio data
and public folder for images and cv file and
.env file for sending mails
-
try to learn from mockup images and data to understant how to
modify the portfolio to fit you and your needs
if you want edit template easily just you need simple knowledage
of js variables,arrays and objects to edit the portfolio and it's
really simple and here the explanation:
javascript variables
- Variables are Containers for Storing Data
- example
const name = "Daniel Mark"
- there are data type and we will use:
-
string for texts, example
const about_me = "I Love Programming ...."
-
number, example
const years_experience = 9
-
boolean values for true or false, example
const is_available = true
javascript objects
-
In real life, objects are things like: houses, cars, people,
animals, or any other subjects.
-
example
const hero = { name: "Daniel Mark", job: "Web Developer",
image: "/images/hero.png" }
javascript arrays
-
An array is a special variable, which can hold more than one
value and wrapped by [ ] for example:
["john", "daniel", "mark"]
-
example:
const skills = ["graphic design", "programming",
"anaysis"]
-
and we can create array of objects:
[ {skill: "a", progress: 90}, {skill: "b", progress: 78} ]
data folder
- Inside the /data folder, you’ll find all the sections of the portfolio (e.g., about, projects, skills, etc.).
-
Each section contains variables and blocks of properties that define its content. To personalize the portfolio, update these values with your own information. For example, change the name, description, or image paths to match your data.
- The structure is consistent across all sections
-
you can add or remove and edit , you have the full control
-
you will just replace some of texts and images paths to fit
yours needs
-
Do not change the names of constants or keys. Only modify the values to suit your needs.
1 - colors
- You can edit the theme colors by modifying the CSS variables in src/app/global.css
- if you want to change theme color, copy colors code for example #3b82f6 and paste it in css vars, for example--main
--main-color & --gradient-to
- blue: #3b82f6
- green #22c55e
- red #ef4444
- yellow #eab308
- orange #f97316
- pink #ec4899
- purple #a855f7
- cyan #06b6d4
- teal #14b8a6
- lime #84cc16
- fuchsia #d946ef
- black #000
--cursor-color
- blue: #60a5fa
- green #4ade80
- red #f87171
- yellow #facc15
- orange #fb923c
- pink #f472b6
- purple #c084fc
- cyan #22d3ee
- teal #2dd4bf
- lime #a3e635
- fuchsia #e879f9
--cursor-heavy-color
- blue: #172554
- green #052e16
- red #450a0a
- yellow #422006
- orange #431407
- pink #500724
- purple #3b0764
- cyan #083344
- teal #042f2e
- lime #1a2e05
- fuchsia #4a044e
- black #000
2 - (dark, light)
by modifying dark_theme in src/data/config.ts
3 - smooth scrolling
by modifying smooth_scrolling and smooth_scrolling_duration in src/data/config.ts
4 - theme variants
- home_background
- about_section
- project_card_option
- project_image_aspect
-
open public folder and then images and there are projects,
tools, hero.png
- svg repo for tool images, and you can download the tool image as a .png
-
You don’t need to match the exact dimensions of the placeholder images.
-
When you want to add your image (or any image),
place it in the images folder. Then, in the data file,
update the corresponding property with the image source - for example: /images/hero.png.
- Replace the existing placeholder images with your own appropriate images.
- replace these images by your images
-
Delete the cv.pdf file from the public folder and replace it with your actual CV file.
-
Place your project images inside the images/projects folder. Then, in data/projects.ts, update the image paths accordingly.
- example
image: "/images/projects/1-1.jpg"
-
Add your tool icons or images in the images/tools folder. Then, in data/projects, update the image source paths.
- example
image: "/images/tools/nextjs.png"
there are predefined icons in data folder's files and easy to use
but if you want to get more icons click
here and
search for the needed icon, just see the name of icon and write it
by cammel case like
Database
example import {Database} from "lucide-react";
example Icon: Database
or
example import {Database as database} from "lucide-react";
example Icon: database
both methods are correct
-
install
Git
- test this command in VSCode terminal:
-
git -v
- you should see the version of git to ensure proper installation
-
create a github account
github
- create new repository
-
write Repository name and make it Private and then
create repository
-
open the terminal in VSCode and copy command lines line by line
to push the all portfolio files to your repository, so follow
these steps
-
if you are a new user
git config --global user.email "you email here"
git init
-
git add .
to add all files
-
git commit -m "first commit"
git branch -M main
-
copy your own:
git remote add origin https://github.com/********
git push -u origin main
-
create vercel account
Vercel
- click on Add New... button and select project
- continue with GitHub
- import the portfolio project
-
write project name and add environment variabels for contact
form
- Deploy & Enjoy!
- optional: Enable analytics
- analytics tab
- enable it
- refresh the page
-
If you want to make updates later write these commands in VSCode
terminal
git add .
git commit -m "update somthing"
git push origin main
If you face any problem or have confusion about something or have
any sugesstion please contact me any time
contact me
-
know more about VSCode by watching some videos, how to use, how
to add extenstions that make your life easier
-
don't change const variables to another name that exists in
data folder's files about.ts, projects.ts, etc..., just
edit the values
- focus when editing
-
if you face any confusion about modification you can know more about
javascript variables & datatypes, arrays ,objects
- choose appropriate images to add
-
hero's image must be .png, so if you have an jpg image you can
remove image's background by remove background online tools like
-
about's image maybe .png or jpg it's up to you
-
you can get used tools images from
svg repo
and that i used in portfolio
- add your project's screen shots images
- know more about deployment by watching some videos deploy to vercel