Customize Your Homepage
Customizing the homepage of Aplio is a simple and direct procedure that enables you to personalize the content and design elements according to your brand and business needs. The required code has already been included from the components
folder. Now, all that remains is to modify our data.
Finding Homepage
To locate the homepage components, navigate to the app/page.js
folder. In this file, you will find all the necessary components for the homepage. Here is the code snippet:
Customize Sections
The majority of sections on the homepage are added through the components folder, and the data for these components is generated from the data/**.json
folder.
In the components folder, you will find the individual components that make up the sections of the homepage. These components contain the HTML markup and logic for rendering the specific section. Examples of such components are Hero
, Client
, Services
, Counter
, Vision
, Solution
, Integartion
, Faq
, Testimonial
, HomeBlog
, and HomeCta
.
On the other hand, the data required for these components is stored in the data/**.json
file. This file contains the necessary information, such as the content, images, or any other data relevant to each section. It is imported into the respective component files to provide the required data for rendering.
By modifying the data in the data/**.json
file, you can customize the content and details of each section on the homepage. Similarly, if you need to make changes to the design or functionality of a specific section, you can locate and modify the corresponding component file in the components
folder.
Hero Section
To customize the data in the Hero section, you can modify the following properties in the components/home-1/Hero.jsx
file:
Hero Tagline
: To change the Hero title, locate the following code and update the text within thep
tags:
<p className=" mb-8 font-medium uppercase">50k+ Trusted Businesses</p>
Title
: To change the Hero title, locate the following code and update the text within the<h1>
tags:
<h1 className="mb-12 max-md:mb-8">
Make your
<span className="font-playfair italic inline-block px-5 border-2 rounded-[88px] pt-0.5 pb-2.5 leading-none border-paragraph bg-[#D9D9D900] dark:border-[#F0F3EA]">
Finance
</span>
more efficient.
</h1>
Description
: To change the Hero description, find the following code and update the text within the<p>
tags:
<p className="w-lg-75">
Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. It’s not Latin, though it looks like it
</p>
Images
: Images ahs been imported from the public folder. To change the Hero images, you can replace the image files located in the specified paths (../public/images/hero/hero-circle.png and ../public/images/hero/hero-circle-dark.png). .
import heroCircleLight from "../public/images/hero/hero-circle.png";
import heroCircleDark from "../public/images/hero/hero-circle-dark.png";
import heroPolicyLight from "../public/images/hero/hero-policy.png";
import heroPolicyDark from "../public/images/hero/hero-policy-dark.png";
import heroRatingLight from "../public/images/hero/hero-rating.png";
import heroRatingDark from "../public/images/hero/hero-rating-dark.png";
import heroChartLight from "../public/images/hero/hero-chart.png";
import heroChartDark from "../public/images/hero/hero-chart-dark.png";
Note: When making changes, ensure that the JSX syntax is maintained and that the modifications are within the appropriate tags and attributes.
Clients
To configure the Client section, you need to make changes in the components/shared/Clients.jsx
file and the data/clientData.json
file. Here are the instructions:
-
Section Title:
- Locate the following code in the
components/shared/Clients.jsx
file:
{sectionTitle && ( <div className=" text-center max-w-[550px] px-10px mx-auto max-lg:px-2.5"> <h2 className="mb-10">The world’s best companies trust aplio.</h2> <p className="text-light mb-15">Trusted by thousands of companies across 50+ countries</p> </div> )}
- Update the
title
andparagraph
props to set the desired title and description for the section. You can remove this code if you don't want to include a title or description. By defaultsectionTitle
, andborder
props is set true. if you don't want to show it, pass thefalse
value through props in thepage.js
.
- Locate the following code in the
-
Client Images
- Open the
data/clientData.json
file. - Find the
ClientData
array and modify it to include the client images you want to display. - Each object in the
ClientData
array represents a client images for light and Dark version. You can add or remove objects as needed. - Update the
imageLight
and `imageDark property of each object with the path to the corresponding client image file. - Example
{ "ClientData": [ { "id": 1, "imageLight": "/images/clients/group.svg", "imageDark": "/images/clients/group-dark.svg" }, { "id": 2, "imageLight": "/images/clients/infinity.svg", "imageDark": "/images/clients/infinity-dark.svg" }, { "id": 3, "imageLight": "/images/clients/artifact.svg", "imageDark": "/images/clients/artifact-dark.svg" }, { "id": 4, "imageLight": "/images/clients/caudile.svg", "imageDark": "/images/clients/caudile-dark.svg" }, { "id": 5, "imageLight": "/images/clients/axeptio.svg", "imageDark": "/images/clients/axeptio-dark.svg" }, { "id": 6, "imageLight": "/images/clients/mfinity.svg", "imageDark": "/images/clients/mfinity-dark.svg" } ] }
- Replace
/images/client/group.svg
,/images/client/group-dark.svg
, etc. with the paths to your client image files.
- Open the
Services
To configure the service section, you need to make changes in the components/shared/Services.jsx
file and the data/serviceData.json
file. Here are the instructions:
-
Section Title:
- Locate the following code in the
components/shared/Services.jsx
file:
{sectionDetails && ( <div className="mb-12"> <p className="section-tagline max-lg:text-center">Our Services</p> <div className="block max-lg:text-center lg:flex"> <h2 className=" max-lg:mb-5"> The world’s best companies <br /> trust aplio. </h2> <p className="max-w-[520px] lg:ml-auto"> Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. It’s not Latin, though it looks like it </p> </div> </div> )}
- Update the
tagline
, titleand
paragraphprops to set the desired, tagline title and description for the section. You can remove this code if you don't want to include a title or description. By default
sectionDetailsprops is set true. if you don't want to show it, pass the
falsevalue through props in the
page.js`.
- Locate the following code in the
-
service Cards:
- Open the
data/serviceData.json
file. - Find the
ServiceData
array and modify it to include the service items you want to display. - Each object in the
ServiceData
array represents a service item. You can add or remove objects as needed. - Update the properties of each object with the desired values for the service item.
- Example:
- Open the
{
"ServiceData": [
{
"id": 1,
"slug": "investment-bank",
"title": "Investment Banks",
"excerpt": "Until recently, the prevailing view asumed lorem ipsum was born as nonsense text.",
"iconLight": "/images/services/investment.svg",
"iconDark": "/images/services/investment-dark.svg",
"featureImage": "/images/services/service-single1.png",
"videoLink": "https://www.youtube.com/embed/YE7VzlLtp-4?si=XvNRN6ztByvZQzqh",
"serviceDetails": "Lorem ipsum dolor sit amet consectetur. Nullam blandit dui gravida aliquam enim eu. Adipiscing viverra vulputate curabitur est. Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit. Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.",
"serviceExpectation": "Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit. Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.",
"serviceExpectationList": [
{
"item": "It’s scalable and secure"
},
{
"item": "Artificial Intelligence Feature"
},
{
"item": "Offline version available"
}
],
"serviceQualifications": "Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit. Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.",
"serviceQualificationsList": [
{
"item": "It’s scalable and secure"
},
{
"item": "Artificial Intelligence Feature"
},
{
"item": "Offline version available"
}
]
},
{
"id": 2,
"slug": "sales",
"title": "Sales & Trading",
"excerpt": "Until recently, the prevailing view asumed lorem ipsum was born as nonsense text.",
"iconLight": "/images/services/sales.svg",
"iconDark": "/images/services/sales-dark.svg",
"featureImage": "/images/services/service-single1.png",
"videoLink": "https://www.youtube.com/embed/YE7VzlLtp-4?si=XvNRN6ztByvZQzqh",
"serviceDetails": "Lorem ipsum dolor sit amet consectetur. Nullam blandit dui gravida aliquam enim eu. Adipiscing viverra vulputate curabitur est. Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit. Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.",
"serviceExpectation": "Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit. Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.",
"serviceExpectationList": [
{
"item": "It’s scalable and secure"
},
{
"item": "Artificial Intelligence Feature"
},
{
"item": "Offline version available"
}
],
"serviceQualifications": "Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit. Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.",
"serviceQualificationsList": [
{
"item": "It’s scalable and secure"
},
{
"item": "Artificial Intelligence Feature"
},
{
"item": "Offline version available"
}
]
}
]
}
Counter
To edit the counter options in the components/shared/Counter.jsx
file, you need to modify the counterData array in the data/counterData.json
file. Here are the steps:
- Open the
data/counterData.json
file. - Locate the
counterData
array. - Modify the objects in the
counterData
array to set the desired counter options. - Each object represents a counter option with the following properties:
id
: Unique identifier for the counter option.number
: The number to be displayed by the counter.rightIcon
: The rightIcon to be displayed beside the counter number.text
: The name or description of the counter item.
- Update the
number
andtext
properties with your desired values for each counter option. 6.Example:
{
"CounterData": [
{
"id": 1,
"number": "60",
"rightIcon": "%",
"text": "Project Completed"
},
{
"id": 2,
"number": "30",
"rightIcon": "+",
"text": "Team Members"
},
{
"id": 3,
"number": "40",
"rightIcon": "K",
"text": "Satisfied Clients"
}
]
}
- Save the changes to the
data/counterData.json
file.
After updating the counterData
array, the counter options in the components/Counter.jsx
file will reflect the new values you provided.
Vision
To configure the Work Process section, you need to make changes in the components/home-1/Vision.jsx
file. Here are the instructions:
-
Section Title:
- Locate the following code in the
components/home-1/Vision.jsx
file:
- Locate the following code in the
<p className="section-tagline">Data Integrations</p>
<h2 className="mb-8">A strong vision is crucial for the analysis of wealth.</h2>
<p className="mb-11">
Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text nothing Before & After
magazine.
</p>
- Update the section as you need.
-
Images: Images has been imported from the public folder. You can change them by changining the image path
import visionImageOneLight from "@/public/images/vision/vision-image.png"; import visionImageOneDark from "@/public/images/vision/vision-image.png"; import visionImage2Light from "@/public/images/vision/vision-image-1.png"; import visionImage2Dark from "@/public/images/vision/vision-image-dark-1.png"; import visionImage3Light from "@/public/images/vision/vision-image-2.png"; import visionImage3Dark from "@/public/images/vision/vision-image-dark-2.png";
Solution
To configure the Work Process section, you need to make changes in the components/home-1/Solution.jsx
file. Here are the instructions:
-
Section Title:
- Locate the following code in the
components/home-1/Solution.jsx
file:
- Locate the following code in the
<p className="section-tagline">Strong Solutions</p>
<h2 className="mb-8">Ensure strong solutions are available at all times</h2>
<p className="mb-11">
Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. It’s not Latin
though it looks like nothing.
</p>
- Update the section as you need.
-
Images: Images has been imported from the public folder. You can change them by changining the image path
import solutionImage from "@/public/images/solution/solution.png"; import solutionImageDark from "@/public/images/solution/solution-dark.png"; import solutionImage1 from "@/public/images/solution/solution-shape1.png"; import solutionImage1Dark from "@/public/images/solution/solution-shape1-dark.png"; import solutionImage2 from "@/public/images/solution/solution-shape2.png"; import solutionImage2Dark from "@/public/images/solution/solution-shape2-dark.png"; import solution3Image from "@/public/images/solution/solution-shape3.png"; import solutionImage3Dark from "@/public/images/solution/solution-shape3-dark.png";
Integration
To configure the Work Process section, you need to make changes in the components/home-1/Integration.jsx
file. Here are the instructions:
-
Section Title:
- Locate the following code in the
components/home-1/Integration.jsx
file:
- Locate the following code in the
<p className="section-tagline">Top Integration</p>
<h2 className="mb-8">Make productivity easier with 50+ Integrations</h2>
<p className="mb-10">
Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. It’s not Latin
though it looks like nothing.
</p>
- Update the section as you need.
-
Images: Images has been imported from the public folder. You can change them by changining the image path
<Image src="images/twitter.svg" alt="value image" className="inline-block" width={40} height={40} />
FAQ
To configure the Work Process section, you need to make changes in the components/home-1/Faq.jsx
file and the data/faqData.json
file. Here are the instructions:
-
Section Title:
- Locate the following code in the
components/home-1/Faq.jsx
file:
- Locate the following code in the
<div>
<p className="section-tagline">Faq’s</p>
<h2 className="mb-8">
Frequently Asked <br />
Question
</h2>
<p>
Neque accumsan dolor nullam commodo. Odio massa nisi ullamcorper suspendisse amet amet. Aenean suspendisse
eget est pulvinar. Fames eget eget nascetur ornare
</p>
</div>
- FAQData: all the faq data are in the
FaqData
array infaqData.json
file. Update them to add Faq's
{
"FAQData": [
{
"id": 1,
"type": ["general", "changelog"],
"question": "What is a business agency?",
"answer": "Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin."
},
{
"id": 2,
"type": ["general"],
"question": "What services does a business agency provide?",
"answer": "Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin."
},
{
"id": 3,
"type": ["general", "changelog"],
"question": "How often should I update my website?",
"answer": "Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin."
},
{
"id": 4,
"type": ["general", "terms"],
"question": "How do subscriptions work?",
"answer": "Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin."
},
{
"id": 5,
"type": ["changelog", "terms"],
"question": "What other services are you compatible with?",
"answer": "Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin."
},
{
"id": 6,
"type": ["general", "terms"],
"question": "What other services are you compatible with?",
"answer": "Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin."
}
]
}
Note: Only general type faq will be shown in the home page
Testimonials
To configure the testimonials section in the component/shared/Testimonial.jsx
file, you need to update the TestimonialData
array in the data/testimonial.json
file. Here are the steps:
- Open the
data/testimonial.json
file. - Locate the
TestimonialData
array. - Modify the objects in the
TestimonialData
array to set the desired testimonials. - Each object represents a testimonial with the following properties:
id
: Unique identifier for the testimonial.logoLight
: Company logo for the light version.logoDark
: Company logo for the dark version.author
: The author of the testimonial.designation
: The designation of the author.testimonial
: The testimonial provided by the author.rating
: The rating given by the author.image
: The image of the testimonial provider.
- Update the properties with your desired values for each testimonial.
- Example:
{
"TestimonialData": [
{
"id": 1,
"logoLight": "/images/testimonial/bodygroup.svg",
"logoDark": "/images/testimonial/bodygroup-dark.svg",
"testimonial": "Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. It's not Latin though it looks like it, and it actually says nothing.",
"rating": 4,
"date": "Feb 03, 2024",
"author": {
"name": "Robert Frost",
"designation": "Lead Developer",
"image": "/images/testimonial/avatar1.png"
}
}
]
}
- Save the changes to the
data/testimonial.json
file.
After updating the TestimonialData
array, the testimonials section in the component/shared/Testimonial.jsx
file will reflect the new testimonial data you provided.
Home Blog
Data in this section is generated from blogs. Create blogs and the data will always be shown here. See more on this link (opens in a new tab).
Home Cta
To update the title of the Call to Action section in the components/home-1/Cta.jsx file, NOw modify the following data to updata CTA section. Here are the codes:
<div className=" text-center mx-auto">
<h2 className="mb-5 text-[48px] font-semibold">
Start Your Free <br />
Trial Today.
</h2>
<p className="mb-12 max-w-[400px] mx-auto">
By creating a custom Web design for your business, we can bring your vision to life.
</p>
<link
href="/contact"
className="btn"
>
Get Started Today
</link>
<ul className=" flex max-md:flex-col max-md:gap-5 items-center justify-between mt-20 max-w-[815px] mx-auto">
<li className="flex items-center">
<svg
width="20"
height="20"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className="mr-3"
>
<path
d="M14.125 7.75L8.62497 13L5.875 10.375M19 10C19 14.9706 14.9706 19 10 19C5.02944 19 1 14.9706 1 10C1 5.02944 5.02944 1 10 1C14.9706 1 19 5.02944 19 10Z"
stroke=""
className="stroke-paragraph dark:stroke-primary"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
<p>No Credit Card Required</p>
</li>
<li className="flex items-center">
<svg
width="20"
height="20"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className="mr-3"
>
<path
d="M14.125 7.75L8.62497 13L5.875 10.375M19 10C19 14.9706 14.9706 19 10 19C5.02944 19 1 14.9706 1 10C1 5.02944 5.02944 1 10 1C14.9706 1 19 5.02944 19 10Z"
stroke=""
className="stroke-paragraph dark:stroke-primary"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
<p>Free For 30 Day Trial.</p>
</li>
<li className="flex items-center">
<svg
width="20"
height="20"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className="mr-3"
>
<path
d="M14.125 7.75L8.62497 13L5.875 10.375M19 10C19 14.9706 14.9706 19 10 19C5.02944 19 1 14.9706 1 10C1 5.02944 5.02944 1 10 1C14.9706 1 19 5.02944 19 10Z"
stroke=""
className="stroke-paragraph dark:stroke-primary"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
<p>Money Back Guarente.</p>
</li>
</ul>
</div>
- Save the changes to the
components/home-1/Cta.js
file.
Animation
The animation effects in this section are achieved using the framer-motion
animation library. If you want to modify the animation, follow the instructions below.
All the animation is added in the data/animate.js file.
export const fadeUpAnimation = {
initial: { opacity: 0, y: 100 },
animate: {
opacity: 1,
y: 0,
transition: {
duration: 0.5,
},
},
}
The animation code for the hero text involves the use of the variants
object, which defines the initial and target states of the animation. The animation is applied to the opacity
and y
properties to control the opacity and vertical position of the text.
If you want the text to animate from left/right instead of top/bottom, you can change the y
property to x
. Additionally, you can adjust the duration and delay of the animation by modifying the duration
and delay
values, respectively.
Now, To add this content folow the steps:
-
import useRef and *useWhileInView
import useWhileInView from '@/hooks/useWhileInView'
import { useRef } from 'react'
- Now use the use ref and assign it inside the components into a varaible like this:
const ref = useRef(null)
const controlAnimation = useWhileInView(ref)
- Finally, use it on the item where you want to add.
<motion.div
ref={ref}
initial="initial"
animate={controlAnimation}
variants={fadeUpAnimation}
>
Your content here
</motion.div>