Compare commits

..

20 Commits

Author SHA1 Message Date
Subhodip Ghosh f063c6efc9 Merge pull request 'fix-correction' (#8) from feat/seo into master
Reviewed-on: #8
2025-06-17 05:16:25 +00:00
Abhijeet Bagade 2983fbcf05 fix-correction 2025-06-13 17:33:41 +05:30
Subhodip Ghosh bbdd7d8fe8 Merge pull request 'fix-404 page' (#7) from feat/seo into master
Reviewed-on: #7
2025-06-12 10:31:18 +00:00
Abhijeet Bagade d12c2fcd25 fix-404 page 2025-06-12 16:01:13 +05:30
Subhodip Ghosh 45351f4e87 Merge pull request 'feat/seo' (#6) from feat/seo into master
Reviewed-on: #6
2025-06-12 10:24:44 +00:00
Abhijeet Bagade d9d56130d9 fix-remaing pages 2025-06-12 15:16:31 +05:30
Abhijeet Bagade 1a445dfa7f fix-three pages 2025-06-11 20:40:40 +05:30
Abhijeet Bagade 7b01fe4aa2 fix-home,interakto,interakto coding,teenybeans page done 2025-06-11 17:29:29 +05:30
Subhodip Ghosh 55ee84118c Merge pull request 'fix-link removed' (#5) from feat/seo into master
Reviewed-on: #5
2025-06-10 13:05:43 +00:00
Abhijeet Bagade e40c477b4a fix-link removed 2025-06-10 18:30:42 +05:30
Subhodip Ghosh eed507f27e fix homepahe schema issue 2025-06-10 18:22:20 +05:30
Subhodip Ghosh a1c178c223 fix homepahe schema issue 2025-06-10 18:08:03 +05:30
Subhodip Ghosh 3fb56a6729 Merge pull request 'fix-links' (#4) from feat/seo into master
Reviewed-on: #4
2025-06-10 12:27:59 +00:00
Abhijeet Bagade a1b1d2e40c fix-links 2025-06-10 17:58:36 +05:30
Subhodip Ghosh 92f5589b11 Merge pull request 'fix meta and schema issues' (#3) from 3 into master
Reviewed-on: #3
2025-06-10 12:14:55 +00:00
Subhodip Ghosh b82a834e2b fix meta and schema issues 2025-06-10 17:44:27 +05:30
Subhodip Ghosh 17112816cb Merge pull request 'fix-seo codes' (#2) from feat/seo into master
Reviewed-on: #2
2025-06-10 10:24:52 +00:00
Abhijeet Bagade ea19c70413 fix-seo codes 2025-06-10 15:51:46 +05:30
Subhodip Ghosh 1e078032df Merge pull request 'fix-seo done for all pages' (#1) from feat/seo into master
Reviewed-on: #1
2025-06-10 09:39:24 +00:00
Abhijeet Bagade 7153397800 fix-seo done for all pages 2025-06-10 15:04:33 +05:30
58 changed files with 1738 additions and 701 deletions

1
.astro/data-store.json Normal file
View File

@ -0,0 +1 @@
[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.9.1","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":true,\"port\":3000,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"experimentalDefaultStyles\":true},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"csp\":false},\"legacy\":{\"collections\":false}}"]

5
.astro/settings.json Normal file
View File

@ -0,0 +1,5 @@
{
"_variables": {
"lastUpdateCheck": 1749549186203
}
}

1
.astro/types.d.ts vendored
View File

@ -1,2 +1 @@
/// <reference types="astro/client" />
/// <reference path="content.d.ts" />

BIN
dist.zip Normal file

Binary file not shown.

View File

@ -1,2 +1,2 @@
PUBLIC_API_KEY=1234567890abcdef
PUBLIC_SECRET_KEY=my-secret-key
PUBLIC_BUZZ_ONE_BASE_URL=https://beanstalkedu.in/api/one/v1/
PUBLIC_BUZZ_BASE_URL=https://beanstalkedu.in/api/

44
package-lock.json generated
View File

@ -28,6 +28,7 @@
"react-multi-carousel": "^2.8.6",
"react-phone-input-2": "^2.15.1",
"react-redux": "^9.2.0",
"react-router-dom": "^7.6.2",
"react-toastify": "^11.0.5",
"shiki": "^0.14.3",
"validator": "^13.15.15",
@ -9864,6 +9865,8 @@
},
"node_modules/npm/node_modules/cross-spawn/node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"inBundle": true,
"license": "ISC",
"dependencies": {
@ -12215,6 +12218,42 @@
"node": ">=0.10.0"
}
},
"node_modules/react-router": {
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz",
"integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==",
"dependencies": {
"cookie": "^1.0.1",
"set-cookie-parser": "^2.6.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"react": ">=18",
"react-dom": ">=18"
},
"peerDependenciesMeta": {
"react-dom": {
"optional": true
}
}
},
"node_modules/react-router-dom": {
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz",
"integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==",
"dependencies": {
"react-router": "7.6.2"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"react": ">=18",
"react-dom": ">=18"
}
},
"node_modules/react-toastify": {
"version": "11.0.5",
"resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz",
@ -12804,6 +12843,11 @@
"randombytes": "^2.1.0"
}
},
"node_modules/set-cookie-parser": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="
},
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",

View File

@ -32,6 +32,7 @@
"react-multi-carousel": "^2.8.6",
"react-phone-input-2": "^2.15.1",
"react-redux": "^9.2.0",
"react-router-dom": "^7.6.2",
"react-toastify": "^11.0.5",
"shiki": "^0.14.3",
"validator": "^13.15.15",

56
public/blogs-sitemap.xml Normal file
View File

@ -0,0 +1,56 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://akadmyapp.com/blogs/guide-to-preschool-assessment-tools</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/summer-camp-activities-for-preschool</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/first-day-preschool-activities-ideas</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/lesson-plan-for-preschool-a-complete-guide</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/benefits-of-preschool-learning-games-for-early-education</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/preschool-online-learning-games-kits-apps-worksheets</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/seamless-scalability-akadmy-empowering-early-education</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/ai-tools-for-teachers</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/what-should-be-included-in-a-preschool-report-card</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/ideas-of-worksheets-for-preschool</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/power-of-early-learning-why-preschool-education-is-important</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/how-do-classroom-management-tools-help-educators</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/anecdotal-record-a-guide-for-early-childhood-educators</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/preschool-activity-plans-that-make-learning-fun</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/how-to-plan-fun-summer-activities-for-preschoolers-at-home</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/assessment-in-preschool-a-complete-guide-for-educators</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/how-to-create-a-curriculum-plan-for-a-preschool</loc>
</url>
<url>
<loc>https://akadmyapp.com/blogs/teacher-parent-communication-a-guide-for-stronger-bonds</loc>
</url>
</urlset>

View File

@ -0,0 +1,32 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://akadmyapp.com/</loc>
</url>
<url>
<loc>https://akadmyapp.com/learning-solutions-for-preschools</loc>
</url>
<url>
<loc>https://akadmyapp.com/preschool-management-solutions</loc>
</url>
<url>
<loc>https://akadmyapp.com/pricing/akadmy-platform-pricing</loc>
</url>
<url>
<loc>https://akadmyapp.com/pricing/akadmy-product-pricing</loc>
</url>
<url>
<loc>https://akadmyapp.com/interakto-coding-worksheets</loc>
</url>
<url>
<loc>https://akadmyapp.com/term-and-conditions</loc>
</url>
<url>
<loc>https://akadmyapp.com/contact-us</loc>
</url>
<url>
<loc>https://akadmyapp.com/purchase/cart</loc>
</url>
<url>
<loc>https://akadmyapp.com/about-us</loc>
</url>
</urlset>

197
public/images-sitemap.xml Normal file
View File

@ -0,0 +1,197 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://akadmyapp.com/assets/home_banner.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Home_TB.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Home_Interakto.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Home_Toddler.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/home_platform.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/home_platform2.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/interakto-coding-section3-3.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Next-Gen-Tech.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Home_parent.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Home_educator.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Home_learner.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/contact.svg</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/akademy_Logo.png</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/prime.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/specific.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/augmented.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/worksheet_4.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/worksheet_1.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/worksheet_2.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/worksheet_3.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/ReportCard.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Resources_CurriculumFocus.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Co_Curriculum.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/contact.svg</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto_Understanding_world.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/interakto_literacy.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto_math.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto_Celebrations.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto_Thinking.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto_coding.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Problem_Solving.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto_Perseverance.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/earth.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Fruits.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/shaps.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Letter_B.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/InteraktoCodingWithoutBG.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/InteraktoRobotics.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Family.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/babies_child.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/food.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/home.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/outside.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/animal.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Friends.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Class.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/AI-Attendance.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Buzzboard.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/observation.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Games.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/family-comunications.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Academic-Report.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/family-comunications.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Magic-Workshetets.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Academic-Report.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/home_platform.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto_Coding_img.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Data-driven_Decision-making.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/developmental_Insights.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/connecting_with_Parents.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/ai_powered.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Captivating_Worksheets.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Interakto.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/TeenyBeans.webp</loc>
</url>
<url>
<loc>https://akadmyapp.com/assets/Toddlers.webp</loc>
</url>
</urlset>

View File

@ -0,0 +1,11 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://akadmyapp.com/digital-preschool-curriculum/</loc>
</url>
<url>
<loc>https://akadmyapp.com/interactive-learning-resources-for-preschool</loc>
</url>
<url>
<loc>https://akadmyapp.com/mother-toddler-program</loc>
</url>
</urlset>

4
public/robots.txt Normal file
View File

@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://akadmyapp.com/sitemap.xml

14
public/sitemap.xml Normal file
View File

@ -0,0 +1,14 @@
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
<sitemap>
<loc>https://akadmyapp.com/products-sitemap.xml</loc>
</sitemap>
<sitemap>
<loc>https://akadmyapp.com/general-sitemap.xml</loc>
</sitemap>
<sitemap>
<loc>https://akadmyapp.com/images-sitemap.xml</loc>
</sitemap>
<sitemap>
<loc>https://akadmyapp.com/blogs-sitemap.xml</loc>
</sitemap>
</sitemapindex>

View File

@ -0,0 +1,114 @@
import { Provider } from "react-redux";
import ContentWrapper from "../../components/ContentWrapper/ContentWrapper";
import Footer from "../../components/Footer/Footer";
import Header from "../../components/Header/Header";
import style from "./index.module.css";
import { store } from "../redux/store";
export default function Index() {
window.scrollTo({ top: 0, behavior: "instant" });
return (
<Provider store={store}>
<section className={style.color}>
<div className={style.image_box}>
<ContentWrapper>
<Header color={"#015C9F"} />
<div className={style.box}>
<h2>About Us</h2>
<p>
At aKadmy, we are dedicated to revolutionizing early childhood
education by providing schools and educators with cutting-edge
tools designed to enhance teaching and learning experiences. As
a Malaysian-developed platform, we take pride in offering
solutions that cater to the unique needs of educators,
particularly in international schools and early childhood
institutions.
</p>
<p>
Our platform is crafted to support early childhood practitioners
by offering a comprehensive suite of resources that streamline
lesson planning, enrich classroom activities, and foster
meaningful student engagement. With an intuitive interface and
high-quality educational content, aKadmy empowers teachers to
deliver world-class education that nurtures creativity, critical
thinking, and problem-solving in young learners.
</p>
</div>
</ContentWrapper>
</div>
<div className={style.curve}>
<img src="/assets/about_us_curve.webp" width={"100%"} />
</div>
<ContentWrapper>
<div className={`${style.flex}`}>
<div className={`${style.flex_1} ${style.mt}`}>
<h4>Driving Impact in Early Childhood Education</h4>
<p>
Through our partnership with Beanstalkedu, a global leader in
early education, aKadmy is able to offer premium educational
content that reflects the latest in pedagogical innovation and
global best practices. This collaboration allows us to blend
international standards with the unique cultural insights of
Malaysia, making our platform highly adaptable for diverse
learning environments across the globe.
</p>
</div>
<div className={style.flex_1}>
<img
src="/assets/about_1.webp"
width={"100%"}
alt="About aKadmy | Transforming Early Education with AI Solutions"
/>
</div>
</div>
</ContentWrapper>
<div className={style.image_box}>
<ContentWrapper>
<div className={style.center}>
<h2>Our Mission and Vision</h2>
<br />
<p>
Our mission is to support schools and educators by providing a
holistic digital solution that not only simplifies day-to-day
teaching but also elevates the quality of education offered in
early childhood settings. Whether you're an international school
looking to enhance your curriculum or a teacher seeking
innovative resources, aKadmy provides the tools and content to
help you succeed.
</p>
<p>
As we continue to expand globally, aKadmy remains committed to
fostering strong partnerships with schools, educators, and
institutions, ensuring that every child has access to
high-quality, engaging, and effective learning experiences.
</p>
</div>
</ContentWrapper>
</div>
<ContentWrapper>
<div className={`${style.flex}`}>
<div className={style.flex_1}>
<img
src="/assets/about_1.webp"
width={"100%"}
alt="About aKadmy | Transforming Early Education with AI Solutions"
/>
</div>
<div className={`${style.flex_1} ${style.mt}`}>
<h4>What we do</h4>
<p>
Together with <b>Beanstalkedu</b> and our educational partners,
we are building a future where every child can thrive in an
environment that is both inspiring and supportive.
</p>
</div>
</div>
</ContentWrapper>
<br />
<br />
<br />
<Footer page="AKADEMY_B2C" contact={true} />
</section>
</Provider>
);
}

View File

@ -0,0 +1,64 @@
.image_box {
background-image: linear-gradient(to right, #eff4ff, #d4f5fe, #dae4fe);
padding-bottom: 30px;
}
.box {
text-align: center;
padding-top: 100px;
height: 600px;
}
.curve {
margin-top: -120px;
}
.color {
color: #00548e;
width: 100%;
}
.box h2 {
padding: 20px 0px;
}
.flex {
display: flex;
margin: 40px 0;
position: relative;
z-index: 2;
}
.flex_1 {
flex: 1;
}
.center {
text-align: center;
padding: 80px 0;
}
.mt {
margin-top: 80px;
}
@media only screen and (max-width: 900px) {
.curve {
margin-top: -60px;
}
.flex {
display: block;
}
.mt {
margin-top: 20px;
}
}
@media only screen and (max-width: 500px) {
.box {
height: 740px;
}
.curve {
margin-top: -30px;
}
}

View File

@ -5,7 +5,7 @@ import style from "./BannerLearningSolutions.module.css";
const Card = ({ data }) => {
return (
<div className={style.banner_img_align}>
<h6
<p
style={{
color: "#310B8E",
maxWidth: "400px",
@ -14,7 +14,7 @@ const Card = ({ data }) => {
}}
>
{data.content}
</h6>
</p>
<p style={{ color: "#2E0590" }}>{data.subcontent}</p>
<a href={"/pricing/akadmy-product-pricing"}>
<button
@ -57,7 +57,7 @@ export default function BannerLearningSolutionTab({
<div className={style.image_box}></div>
<div
style={{
backgroundImage: `url("./assets/wave.webp")`,
backgroundImage: `url("/assets/wave.webp")`,
width: "100%",
backgroundRepeat: "no-repeat",
backgroundSize: "cover",
@ -94,14 +94,14 @@ export default function BannerLearningSolutionTab({
className={getActiveClass(1, style.active_content)}
onClick={() => toggleTab(1)}
>
<img src="./assets/menu_book.png" />
<img src="/assets/menu_book.png" />
FOR SCHOOL
</li>
<li
className={getActiveClass(2, style.active_content)}
onClick={() => toggleTab(2)}
>
<img src="./assets/audio_file.png" />
<img src="/assets/audio_file.png" />
FOR TUTORS
</li>
</ul>
@ -121,7 +121,7 @@ export default function BannerLearningSolutionTab({
<div className={style.image_box}></div>
<div
style={{
backgroundImage: `url("./assets/wave-2.webp")`,
backgroundImage: `url("/assets/wave-2.webp")`,
width: "100%",
backgroundRepeat: "no-repeat",
backgroundSize: "cover",
@ -158,14 +158,14 @@ export default function BannerLearningSolutionTab({
className={getActiveClass(1, style.active_content)}
onClick={() => toggleTab(1)}
>
<img src="./assets/menu_book-blue.png" />
<img src="/assets/menu_book-blue.png" />
FOR SCHOOL
</li>
<li
className={getActiveClass(2, style.active_content)}
onClick={() => toggleTab(2)}
>
<img src="./assets/audio-book-white.png" />
<img src="/assets/audio-book-white.png" />
FOR TUTORS
</li>
</ul>

View File

@ -45,7 +45,7 @@
.active_content {
background-color: #4909d6;
color: white;
padding: 4px 40px;
padding: 4px 30px;
border-radius: 30px;
border: 6px solid white;
}

View File

@ -29,7 +29,7 @@ export default function BannerProduct() {
</div>
<div className={style.banner_img_align}>
<img
src="./assets/home_platform.png"
src="/assets/home_platform.png"
className={style.banner_img}
alt="Preschool Management Solutions | Streamline Operations with aKadmy"
/>

View File

@ -6,59 +6,18 @@ import Footer from "../Footer/Footer";
import ThreeFormFields from "../form/ThreeFormFields";
import { store } from "../redux/store";
import { Provider } from "react-redux";
import style from "./index.module.css";
const Blog = (props) => {
// console.log("props in blog", props.blog);
window.scrollTo({ top: 0, behavior: "instant" });
// const { pathname } = useLocation();
// const slug = pathname.split("/")[2];
// const [props.blog, setBlogData] = useState();
// const navigate = useNavigate();
// useEffect(() => {
// fetch(
// `https://curriculum-app-api.beanstalkedu.com/items/blog?filter[status][_eq]=published&filter[property][_eq]=aKadmy&filter[slug][_eq]=${slug}`
// )
// .then((res) => res.json())
// .then((data) => {
// setBlogData(data?.data?.[0]);
// if (data?.data.length === 0) {
// navigate("/404");
// }
// })
// .catch((err) => console.log("err123", err));
// }, [slug]);
// blog
const newSchema = props.blog && props.blog.schema && props.blog?.schema.replaceAll("\n", "");
const newSchema2 = props.blog && props.blog.schema2 && props.blog?.schema2.replaceAll("\n", "");
const newSchema3 = props.blog && props.blog.schema3 && props.blog?.schema3.replaceAll("\n", "");
// console.log("blogUrl", `https://akadmyapp.com${pathname}`);
const metaData = {
title: props.blog && props.blog.meta,
description: props.blog && props.blog.meta_description,
// canonical: `https://akadmyapp.com${pathname}`,
og_title: props.blog && props.blog.og_title,
og_desc: props.blog && props.blog.og_desc,
siteName: "aKadmy",
type: "website",
url: "https://akadmyapp.com",
img_url: `https://management.beanstalkedu.com/assets/${
props.blog && props.blog.og_img
}`,
content: "product",
creator: "@aKadmy",
};
return (
<>
<Provider store={store}>
<ContentWrapper>
<Header color={"#015C9F"} />
<Grid container color={"#0348A8"} spacing={2}>
<Grid item xs={12} md={8}>
<div className={style.flex_box}>
<div className={style.flex_1}>
{props.blog?.title && <h1>{props.blog?.title}</h1>}
<Typography variant="body2" my={0.6}>
Published On: {props.blog?.date} | 5 min Read
@ -80,14 +39,14 @@ const Blog = (props) => {
/>
</Typography>
)}
</Grid>
<Grid item xs={12} md={4}>
</div>
<div className={style.flex_2}>
<Box sx={{ background: "#DEF0FD", p: 3 }}>
<Typography>Get in Touch</Typography>
<ThreeFormFields formName="Blogs" />
</Box>
</Grid>
</Grid>
</div>
</div>
</ContentWrapper>
<Footer page="INTERAKTO_CODING" />
</Provider>

View File

@ -7,6 +7,7 @@ import Banner from "../Blog/Banner";
import Footer from "../Footer/Footer";
import { store } from "../redux/store";
import { Provider } from "react-redux";
import style from "./index.module.css";
const Index = () => {
window.scrollTo({ top: 0, behavior: "instant" });
const [data, setData] = useState([]);
@ -18,7 +19,7 @@ const Index = () => {
.then((result) => {
result.json().then((res) => {
setData(res.data.reverse());
});
});
})
.catch((error) => {
// toast.error("Could not process data, please try again later!");
@ -28,31 +29,26 @@ const Index = () => {
return (
<>
<Provider store={store}>
<Banner data={newData} />
<ContentWrapper>
<h2
style={{
color: "#00548E",
marginBottom: "10px",
textAlign: "center",
}}
>
Trending Blogs
</h2>
<Grid
container
spacing={2}
alignItems="center"
justifyContent={"center"}
>
{newData.map((Blog) => (
<Grid item xs={12} sm={6} md={4} lg={4} xl={4}>
<Card data={Blog} />
</Grid>
))}
</Grid>
</ContentWrapper>
<Footer page="INTERAKTO_CODING" />
<Banner data={newData} />
<ContentWrapper>
<h2
style={{
color: "#00548E",
marginBottom: "10px",
textAlign: "center",
}}
>
Trending Blogs
</h2>
<div className={style.flex_box}>
{newData.map((Blog) => (
<div className={style.box_card}>
<Card data={Blog} />
</div>
))}
</div>
</ContentWrapper>
<Footer page="INTERAKTO_CODING" />
</Provider>
</>
);

View File

@ -0,0 +1,39 @@
.flex_box {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.flex_1 {
width: 68%;
}
.flex_2 {
width: 28%;
}
.box_card {
width: 32.33%;
}
@media (max-width: 900px) {
.flex_box {
flex-direction: column;
}
.box_card {
width: 49%;
}
.flex_1 {
width: 100%;
}
.flex_2 {
width: 100%;
}
}
@media (max-width: 500px) {
.box_card {
width: 100%;
}
}

View File

@ -3,7 +3,9 @@ import style from "./PhotoFlipCarousel.module.css";
import { GameContext } from "../../context/GameContext";
function PhotoFlipCarousel({ theme, data, background, color, poster }) {
const { setGameLink } = useContext(GameContext);
const { gameLink, setGameLink } = useContext(GameContext);
console.log("gameLink", gameLink);
useEffect(() => {
initialize();
@ -140,11 +142,16 @@ function PhotoFlipCarousel({ theme, data, background, color, poster }) {
</video>
) : (
<>
{console.log("item.link", item.link)}
{item.link && (
<a href={"/worksheet"} className={style.btn}>
<button onClick={() => setGameLink(item.link)}>
Try now
</button>
<a
href={`/interactive-learning-resources-for-preschool/worksheet?${item.link.replaceAll(
"https://interaktogames.beanstalkedu.com/",
""
)}`}
className={style.btn}
>
<button>Try now</button>
</a>
)}
</>

View File

@ -0,0 +1,103 @@
import { Box } from "@mui/material";
import ContentWrapper from "../../components/ContentWrapper/ContentWrapper";
import Footer from "../../components/Footer/Footer";
import Header from "../../components/Header/Header";
import ThreeFormFields from "../../components/form/ThreeFormFields";
import style from "./index.module.css";
import EmailOutlinedIcon from "@mui/icons-material/EmailOutlined";
import LocationOnIcon from "@mui/icons-material/LocationOn";
import FAQ from "../../components/FAQ/FAQ";
import { conatctFaqs } from "../../components/data/faqs";
import { Provider } from "react-redux";
import { store } from "../redux/store";
export default function Index() {
window.scrollTo({ top: 0, behavior: "instant" });
return (
<Provider store={store}>
<section className={style.section}>
<ContentWrapper>
<Header color={"#015C9F"} />
<div className={style.box}>
<h1>
Wed Love to Hear From You!
<br /> Contact Us
</h1>
<p>
Whether you have a question about our services, need assistance,
or just want to share your
<br /> thoughts, were here to listen.
</p>
</div>
</ContentWrapper>
</section>
<ContentWrapper>
{" "}
<div className={`${style.flex}`}>
<div className={`${style.flex_1} ${style.mt}`}>
<h4>Contact Information</h4>
<p>
Fill up the form and our team will get back to you within
<br /> 24 hours.
<br />
<EmailOutlinedIcon fontSize="small" />
&nbsp; Email: hello@akadmyapp.com
</p>
<br />
</div>
<div className={style.flex_1}>
<Box boxShadow={1} maxWidth={400} ml={"auto"} p={4}>
<b>Get in Touch</b>
<p>You can reach us anytime</p>
<ThreeFormFields formName="Contact" />
</Box>
</div>
</div>
<br />
<br />
<div className={`${style.flex}`}>
<div className={`${style.flex_1}`}>
<div>
<iframe
src="https://www.google.com/maps/embed?pb=!1m17!1m12!1m3!1d3984.090385602562!2d101.690635!3d3.070521!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m2!1m1!2zM8KwMDQnMTMuOSJOIDEwMcKwNDEnMjYuMyJF!5e0!3m2!1sen!2sin!4v1725867001750!5m2!1sen!2sin"
className={style.iframe_width}
loading="lazy"
/>
</div>
</div>
<div className={`${style.flex_1}`} style={{ marginTop: "auto" }}>
<br />
<h4>Our Location</h4>
<p style={{ maxWidth: 400 }}>
Come visit us! Use the map below to easily find our location.
Whether you're planning a visit or just need directions, the map
will guide you right to our doorstep.
<div style={{ display: "flex", marginTop: "6px" }}>
<div>
<LocationOnIcon sx={{ mt: 6 }} />
</div>
&nbsp;&nbsp;&nbsp;
<div>
Address: Buzzapp Technologies Sdn Bhd,
<br /> 38, 3rd Floor, Jalan Radin Anum,
<br /> Bandar Baru Sri Petaling,
<br /> Kuala Lumpur, Wilayah Persekutuan, 57000
<br /> Malaysia
</div>
</div>
</p>
<br />
<br />
</div>
</div>
</ContentWrapper>
<FAQ color1="#0348A8" color2={"#72B3FF"} data={conatctFaqs} />
<br />
<br />
<br />
<br />
<br />
<Footer page="AKADEMY_B2C" contact={true} />
</Provider>
);
}

View File

@ -0,0 +1,53 @@
.section {
width: 100%;
overflow: hidden;
background-image: linear-gradient(to right, #eff4ff, #d4f5fe, #dae4fe);
padding-bottom: 30px;
}
.box {
text-align: center;
color: #00548e;
padding-top: 100px;
height: 500px;
}
.color {
color: #00548e;
padding-top: 30px;
}
.box h1 {
padding: 20px 0px;
}
.flex {
display: flex;
margin: 40px 0;
position: relative;
z-index: 2;
color: #00548e;
}
.flex_1 {
flex: 1;
}
.mt {
margin-top: 80px;
}
.iframe_width {
width: 90%;
height: 460px;
}
@media only screen and (max-width: 600px) {
.flex {
display: block;
}
.iframe_width {
width: 100%;
height: 360px;
}
}

View File

@ -1,11 +1,11 @@
.container {
height: 100%;
display: flex;
justify-content: center;
height: 100%;
display: flex;
justify-content: center;
}
.sub_container {
width: 80vw;
max-width: 1200px;
height: 100%;
width: 80vw;
max-width: 1200px;
height: 100%;
}

View File

@ -167,7 +167,7 @@ function Footer({
<a href="https://www.facebook.com/get.aKadmy/" target="_blank">
Facebook
</a>
<a href="https://www.instagram.com/akadmy.app/" target="_blank">
<a href="https://www.instagram.com/akadmyapp/" target="_blank">
Instagram
</a>
<a
@ -200,7 +200,7 @@ function Footer({
<a href="/about-us">About Us</a>
<a href="/contact-us">Contact us </a>
<a href="/pricing/akadmy-platform-pricing">Plans</a>
<a href="/Blogs">Blogs</a>
<a href="/blogs">Blogs</a>
</div>
</div>
</div>

View File

@ -17,7 +17,7 @@
.contact_box {
width: 100%;
min-height: 300px;
padding: 2rem;
/* padding: 2rem; */
border-radius: 10px;
display: flex;
justify-content: space-between;
@ -28,6 +28,7 @@
.contact_box .content_left {
width: 60%;
min-width: 200px;
padding: 2rem 0rem 2rem 2rem;
}
.contact_box .content_left .line1 {
@ -50,7 +51,7 @@
.contact_box .content_right {
width: 32%;
min-width: 240px;
padding: 2rem 2rem 2rem 0rem;
display: flex;
flex-direction: column;
align-items: flex-start;
@ -66,6 +67,15 @@
}
}
@media (max-width: 600px) {
.contact_box .content_left {
padding: 0.8rem;
}
.contact_box .content_right {
padding: 0.8rem;
}
}
.contact_box .content_right input {
width: 100%;
max-width: 300px;

View File

@ -84,7 +84,9 @@ function Header({ theme = "LIGHT", color }) {
{item?.subcat && <ArrowDropDownIcon style={{ color: color }} />}
<div className={style.dropdown_content}>
{item?.subcat?.map((subItem, i) => (
<a key={i} href={subItem.link}>{subItem.name}</a>
<a key={i} href={subItem.link}>
{subItem.name}
</a>
))}
</div>
</div>

View File

@ -61,7 +61,7 @@ export default function InteractionTabs() {
{array.map((item) => (
<img
src={item.img}
width={"55px"}
width={"35px"}
style={{
border: item.title === select.title ? "3px solid #0348A8" : null,
boxShadow:

View File

@ -87,8 +87,8 @@ function IntraktoCoding() {
children through playful and engaging activities. Children as
young as 4 years old can create their own stories, games, and
animations using the simple-to-use ScratchJr interface. . And as
it is a visual programming language, when children design all the
while developing crucial problem-solving skills and logical
it is a visual programming language, when children design all
the while developing crucial problem-solving skills and logical
thinking. Coding is all about learning to think creatively and
work collaboratively.
</p>
@ -113,18 +113,18 @@ function IntraktoCoding() {
<p>Our Coding Curriculum</p>
<h4>Why have a Coding Curriculum for Preschoolers?</h4>
<p className={style.secondary_color}>
Our block-based programming approach, using ScratchJr , introduces
coding as another language . With Scratch Children learn how to
write commands , create loops, and understand programming language
from basic. Each lesson is designed so that completing it and
moving on to the next level makes your child feel a sense of
achievement at every step.
Our block-based programming approach, using ScratchJr ,
introduces coding as another language . With Scratch Children
learn how to write commands , create loops, and understand
programming language from basic. Each lesson is designed so that
completing it and moving on to the next level makes your child
feel a sense of achievement at every step.
</p>
<div className={style.flex}>
{codingPreschoolers.map((item) => (
<div className={style.preschoolCard}>
<img src={item.img} />
<h6>{item.title}</h6>
<h4>{item.title}</h4>
<p>{item.description}</p>
</div>
))}
@ -132,7 +132,9 @@ function IntraktoCoding() {
</div>
<div className={`${style.flex}`}>
<div className={`${style.flex_1} ${style.mt} ${style.order_1}`}>
<h4 className={style.primary_color}>The MIT-Based Curriculum</h4>
<h4 className={style.primary_color}>
The MIT-Based Curriculum
</h4>
<p>
interaKto Coding was established by the internationally
recognized Media Labs at MIT (Massachusetts Institute of
@ -203,14 +205,14 @@ function IntraktoCoding() {
<ContentWrapper>
<h4>Benefits of Coding Early</h4>
<p>
Learning to code at an early age has numerous benefits beyond just
computer literacy. Our program helps children develop essential
life skills such as:
Learning to code at an early age has numerous benefits beyond
just computer literacy. Our program helps children develop
essential life skills such as:
</p>
<div className={style.flex}>
{skills.map((item) => (
<div className={style.skills_card}>
<h6 className={style.primary_color}>{item.title}</h6>
<h4 className={style.primary_color}>{item.title}</h4>
<p className={style.secondary_color}>{item.description}</p>
</div>
))}
@ -286,10 +288,10 @@ function IntraktoCoding() {
>
<ContentWrapper>
<p className={style.primary_color}> How to Get Started</p>
<h4 className={style.primary_color}>Ready to Begin? Here's How</h4>
<h2 className={style.primary_color}>Ready to Begin? Here's How</h2>
<p className={style.seconadry_color}>
Enrolling in interaKto Coding is easy. Follow these simple steps to
start your childs coding journey:
Enrolling in interaKto Coding is easy. Follow these simple steps
to start your childs coding journey:
</p>
<a href={"/pricing/akadmy-product-pricing"}>
<button
@ -327,13 +329,13 @@ function IntraktoCoding() {
color: "white",
}}
>
<h6 style={{ marginTop: "18px", marginLeft: "60px" }}>
<h4 style={{ marginTop: "18px", marginLeft: "60px" }}>
Step {index + 1}
</h6>
</h4>
<div className={style.triangle_right}></div>
</div>
<div className={style.triangle_topright} />
<h6 className={style.primary_color}>{item.title}</h6>
<h4 className={style.primary_color}>{item.title}</h4>
<p>{item.description}</p>
</div>
))}
@ -341,7 +343,11 @@ function IntraktoCoding() {
</ContentWrapper>
</section>
<FAQ color1={"#001F48"} color2={"#72B3FF"} data={faqsInterakto_coding} />
<FAQ
color1={"#001F48"}
color2={"#72B3FF"}
data={faqsInterakto_coding}
/>
<section className={style.section6}>
<ContentWrapper>
<div className={style.section6__content}>

View File

@ -62,7 +62,7 @@
}
.section4__content__1_line2 {
max-width: 300px !important;
max-width: 330px !important;
}
.section4__content_2 {
@ -100,7 +100,7 @@
background: white;
border: 1px solid #01518c4d;
border-radius: 6px;
padding: 30px;
padding: 10px;
}
.bottom_cloud {
@ -109,11 +109,11 @@
}
.skills_card {
width: 24%;
width: 22%;
background: white;
border: 1px solid #01518c4d;
border-radius: 6px;
padding: 30px;
padding: 10px;
}
.triangle_right {
@ -145,7 +145,7 @@
margin-top: -80px;
}
.preschoolCard {
width: 48%;
width: 45%;
margin: 0 auto 30px auto;
}
.flex_1 {
@ -161,7 +161,7 @@
bottom: -52px;
}
.skills_card {
width: 49%;
width: 46%;
margin-bottom: 16px;
}
.section4 p {

View File

@ -0,0 +1,23 @@
export default function Index() {
return (
<section>
<div
style={{ textAlign: "center", color: "#8F8F8F", marginTop: "100px" }}
>
<img src="/assets/pageNotFound.png" />
<h2>Page Not Found</h2>
<p>
Oops! It seems we are lost!
<br /> Click below to go to the Home page
</p>
<br />
<a href={"/"}>
<button className="btn" style={{ background: "#0348A8" }}>
Back to Home &nbsp;
<img src="/assets/white_right.png" width={"14px"} />
</button>
</a>
</div>
</section>
);
}

View File

@ -6,7 +6,7 @@ import Footer from "../Footer/Footer";
import { platformFaqs } from "../data/faqs";
import VerticalAutoCarousel from "../VerticalAutoCarousel/VerticalAutoCarousel";
import style from "./Product.module.css";
import InteractionTabs from "../InteractionTabs/InteractionTabs";
import InteractionTabs from "../InteractionTabs/InteractionTabs";
import ContentWrapper from "../ContentWrapper/ContentWrapper";
import { store } from "../redux/store";
import { Provider } from "react-redux";
@ -32,85 +32,85 @@ export default function Product() {
];
return (
<>
<Provider store={store}>
<BannerProduct />
<ProductCapabilities />
<ProductPlatform />
<div style={{ background: "#DEF0FD", marginTop: "100px" }}>
<img
src="/assets/cloud_blue.webp"
width={"100%"}
className={style.cloud_img}
/>
<div style={{ textAlign: "center" }}>
<h2 style={{ color: "#0348A8" }}>
What Makes aKadmy the Top Kindergarten Management Solution?
</h2>
<p>
It's the power of AI, transforming everything from streamlining
tasks to enhancing learning experiences.
</p>
</div>
<VerticalAutoCarousel />
<div style={{ textAlign: "center", marginTop: "60px" }}>
<h2 style={{ color: "#0348A8" }}>
Say Hello to Your Learning Buddy aKadmy Sprite!
</h2>
<p
style={{
maxWidth: "660px",
padding: "0px 40px",
margin: "0px auto",
}}
>
Make each lesson engaging and enjoyable with aKadmy Sprite. Select
your perfect match and unlock a world of interactive learning!
</p>
</div>
<br />
<InteractionTabs />
</div>
<ContentWrapper>
<div style={{ textAlign: "center", margin: "100px 0px 0px 0px" }}>
<h2 style={{ color: "#0348A8" }}>
Powerful Tools for Transformative Learning
</h2>
<br />
<div
style={{
display: "flex",
flexWrap: "wrap",
justifyContent: "space-between",
}}
>
{support.map((item) => (
<div className={style.card}>
<h6 style={{ color: "#0348A8", marginBottom: "6px" }}>
{item.title}
</h6>
<p style={{ height: 110 }}>{item.description}</p>
</div>
))}
<Provider store={store}>
<BannerProduct />
<ProductCapabilities />
<ProductPlatform />
<div style={{ background: "#DEF0FD", marginTop: "100px" }}>
<img
src="/assets/cloud_blue.webp"
width={"100%"}
className={style.cloud_img}
/>
<div style={{ textAlign: "center" }}>
<h2 style={{ color: "#0348A8" }}>
What Makes aKadmy the Top Kindergarten Management Solution?
</h2>
<p>
It's the power of AI, transforming everything from streamlining
tasks to enhancing learning experiences.
</p>
</div>
<VerticalAutoCarousel />
<div style={{ textAlign: "center", marginTop: "60px" }}>
<h2 style={{ color: "#0348A8" }}>
Say Hello to Your Learning Buddy aKadmy Sprite!
</h2>
<p
style={{
maxWidth: "660px",
padding: "0px 40px",
margin: "0px auto",
}}
>
Make each lesson engaging and enjoyable with aKadmy Sprite. Select
your perfect match and unlock a world of interactive learning!
</p>
</div>
<br />
<InteractionTabs />
</div>
</ContentWrapper>
<img src="/assets/product_curve.webp" width={"100%"} />
<div className={style.curve}>
<FAQ
color1="#0348A8"
color2={"#72B3FF"}
data={platformFaqs}
prefix={"Curious? Find Answers Here"}
<ContentWrapper>
<div style={{ textAlign: "center", margin: "100px 0px 0px 0px" }}>
<h2 style={{ color: "#0348A8" }}>
Powerful Tools for Transformative Learning
</h2>
<br />
<div
style={{
display: "flex",
flexWrap: "wrap",
justifyContent: "space-between",
}}
>
{support.map((item) => (
<div className={style.card}>
<h4 style={{ color: "#0348A8", marginBottom: "6px" }}>
{item.title}
</h4>
<p style={{ height: 110 }}>{item.description}</p>
</div>
))}
</div>
</div>
</ContentWrapper>
<img src="/assets/product_curve.webp" width={"100%"} />
<div className={style.curve}>
<FAQ
color1="#0348A8"
color2={"#72B3FF"}
data={platformFaqs}
prefix={"Curious? Find Answers Here"}
/>
</div>
<Footer
page="AKADEMY_B2C"
title="Transform Early Education with aKadmy"
description1="Empower teachers, engage parents, and watch little learners thrive with the power of AI in early education."
description2="Create a foundation for lifelong success and growth."
description3="Get Started Today!"
/>
</div>
<Footer
page="AKADEMY_B2C"
title="Transform Early Education with aKadmy"
description1="Empower teachers, engage parents, and watch little learners thrive with the power of AI in early education."
description2="Create a foundation for lifelong success and growth."
description3="Get Started Today!"
/>
</Provider>
</Provider>
</>
);
}

View File

@ -5,9 +5,9 @@
.card {
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
margin: 10px;
padding: 40px 14px;
padding: 40px 10px;
border-radius: 10px;
width: 30%;
width: 29%;
}
.curve {

View File

@ -11,11 +11,11 @@ const LeftTab = ({ ToggleState, index, title, info, img }) => {
{ToggleState === index ? (
<img
className={style.mb}
src="./assets/book-icon.png"
src="/assets/book-icon.png"
alt="Preschool Management Solutions | Streamline Operations with aKadmy"
/>
) : null}
<h6>{title}</h6>
<h4>{title}</h4>
{ToggleState === index ? <p className={style.normal}>{info}</p> : null}
</div>
<div className={style.imgPart1}>

View File

@ -48,7 +48,7 @@
.normal {
font-weight: 300;
margin-top: -8px;
margin-top: 8px;
}
.right_img {

View File

@ -0,0 +1,58 @@
import ContentWrapper from "../ContentWrapper/ContentWrapper";
import Footer from "../Footer/Footer";
import Header from "../Header/Header";
import { data } from "../../components/data/termConditions";
import style from "./index.module.css";
import { Provider } from "react-redux";
import { store } from "../redux/store";
export default function Index() {
window.scrollTo({ top: 0, behavior: "instant" });
return (
<Provider store={store}>
<section className={style.out_box}>
<div className={style.image_box}>
<ContentWrapper>
<Header color={"#015C9F"} />
<div className={style.box}>
<img src="/assets/tc.webp" />
<h2>Terms & Conditions</h2>
<p>
All the products and services are provided by aKadmy. These
Terms of Use ("Terms") govern your use of aKadmys website,
apps, and other products and services ("Services"). Some of our
Services are software that can be downloaded on a computer,
tablet, phone or any other device, you agree that we may update
our software automatically at any point of time, that these
Terms will apply to such updates. By using our Services, you
agree to be bound by these Terms, including the policies
referenced in them. If you do not agree to these Terms, please
refrain from using the Website or our suite of products.
</p>
</div>
</ContentWrapper>
</div>
</section>
<ContentWrapper>
{data.map((item) => (
<div className={style.color}>
<h4>{item.title}</h4>
{item.content.map((item) => (
<p style={{ paddingTop: "10px" }}>{item}</p>
))}
<ul>{item.points && item.points.map((item) => <li>{item}</li>)}</ul>
</div>
))}
</ContentWrapper>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<Footer page="AKADEMY_B2C" contact={true} />
</Provider>
);
}

View File

@ -0,0 +1,31 @@
.out_box {
width: 100%;
overflow: hidden;
}
.image_box {
width: 100%;
background-image: linear-gradient(to right, #eff4ff, #d4f5fe, #dae4fe);
padding-bottom: 30px;
}
.box {
text-align: center;
color: #00548e;
padding-top: 100px;
}
.color {
color: #00548e;
padding-top: 30px;
}
.box h2 {
padding: 20px 0px;
}
@media only screen and (max-width: 600px) {
.box {
padding-top: 10px;
}
}

View File

@ -1,10 +1,10 @@
import { TOKEN_NAME } from "../utils/constants";
export const API_BASE_BUZZONE = import.meta.env.VITE_BUZZ_ONE_BASE_URL;
export const API_BASE_BUZZ = import.meta.env.VITE_BUZZ_BASE_URL;
export const API_BASE_BUZZONE = import.meta.env.PUBLIC_BUZZ_ONE_BASE_URL;
export const API_BASE_BUZZ = import.meta.env.PUBLIC_BUZZ_BASE_URL;
export const AUTH_TOKEN = () => localStorage.getItem(TOKEN_NAME);
export const SCHOOL_ID = () => localStorage.getItem("SCHOOL_ID");
console.log('TestENV', import.meta.env.PUBLIC_API_KEY);
console.log('TestENV', import.meta.env.PUBLIC_SECRET_KEY);
console.log("TestENV", import.meta.env.PUBLIC_BUZZ_ONE_BASE_URL);
console.log("TestENV", import.meta.env.PUBLIC_BUZZ_BASE_URL);

View File

@ -223,6 +223,7 @@ const ThreeFormFields = (props) => {
value={message}
onChange={(e) => setMessage(e.target.value)}
/>
<br />
<button type="submit" className="btn">
submit
</button>

View File

@ -2,7 +2,7 @@
textarea {
width: 100%;
max-width: 400px;
padding: 0.75rem 1rem;
padding: 0.75rem 0rem;
font-size: 0.8rem;
font-weight: 600;
border-radius: 3px;

View File

@ -13,7 +13,7 @@ import { Concept_explainer } from "../data/pageContent";
import ScrollToTop from "../ScrollToTop/ScrollToTop";
import { store } from "../redux/store";
import { Provider } from "react-redux";
import GameProvider from '../context/GameContext';
import GameProvider from "../context/GameContext";
const array1 = [
{ img: "/assets/WAU_1.png", title: "World Around Us" },
{ img: "/assets/learning_area_1.png", title: "Language" },
@ -55,7 +55,10 @@ function InteraKto() {
<a href={"/pricing/akadmy-product-pricing"}>
<button className={style.section1__content_btn}>
View Plans{" "}
<img src={'/assets/navigate_next.svg'} alt="navigate next icon" />
<img
src={"/assets/navigate_next.svg"}
alt="navigate next icon"
/>
</button>
</a>
</div>
@ -102,7 +105,6 @@ function InteraKto() {
<div className={`${style.section2__card} ${style.card3}`}>
<img
src="/assets/Interakto_math.webp"
width={"100%"}
alt="Interactive Learning Resources for Preschool | aKadmy - Engaging Early Education"
/>
<p className={style.title}>Mathematics</p>
@ -136,9 +138,9 @@ function InteraKto() {
<p className={style.title}>Logical Thinking</p>
<p className={style.description}>
Interactive activities to develop critical thinking and
problem-solving skills in young learners. These activities are
designed to enhance their ability to reason and make decisions
effectively.
problem-solving skills in young learners. These activities
are designed to enhance their ability to reason and make
decisions effectively.
</p>
</div>
<div className={`${style.section2__card} ${style.card6}`}>
@ -150,9 +152,10 @@ function InteraKto() {
/>
<p className={style.title}>Coding with InteraKto</p>
<p className={style.description}>
Interactive activities that introduce young learners to basic
programming concepts, helping them develop logical thinking
and problem-solving skills through engaging, hands-on tasks.
Interactive activities that introduce young learners to
basic programming concepts, helping them develop logical
thinking and problem-solving skills through engaging,
hands-on tasks.
</p>
</div>
<div className={` ${style.card_group}`}>
@ -295,12 +298,12 @@ function InteraKto() {
</div>
<div className={style.section4__content_2}>
<GameProvider>
<PhotoFlipCarousel
theme="INTERAKTO"
data={select === 0 ? interaktoWorksheets : interaktoAudio}
background={"#001F48"}
color={"#DBFFEB"}
poster="/assets/AudioBookPlay.webp"
<PhotoFlipCarousel
theme="INTERAKTO"
data={select === 0 ? interaktoWorksheets : interaktoAudio}
background={"#001F48"}
color={"#DBFFEB"}
poster="/assets/AudioBookPlay.webp"
/>
</GameProvider>
</div>
@ -311,7 +314,9 @@ function InteraKto() {
<section className={style.section5}>
<ContentWrapper>
<div className={style.section5__content}>
<p className={style.section5__content__line1}>Explore InteraKto</p>
<p className={style.section5__content__line1}>
Explore InteraKto
</p>
<h2 className={style.section5__content__line2}>
Concept Explainers That Engage
</h2>

View File

@ -5,6 +5,10 @@
/* --interakto-primary-color4: #afba28; */
}
* {
box-sizing: border-box;
}
/* ///////////////// */
/* /// Section 1 /// */

View File

@ -1,20 +1,21 @@
import KeyboardBackspaceIcon from "@mui/icons-material/KeyboardBackspace";
import { useContext } from "react";
import { GameContext } from "../../context/GameContext";
export default function Index() {
const { gameLink } = useContext(GameContext);
return (
<div>
<div style={{ position: "absolute", top: "12px", left: "10px" }}>
<a href={`/interactive-learning-resources-for-preschool`}>
<KeyboardBackspaceIcon fontSize="large" color="primary" />
<i class="fa fa-arrow-left fa-2x" aria-hidden="true"></i>
</a>
</div>
<div
style={{ height: "100vh", display: "flex", flexDirection: "column" }}
>
<iframe src={gameLink} style={{ flex: 1, border: "none" }} />
<iframe
src={`https://interaktogames.beanstalkedu.com/${window.location.search.replace(
/^\?/,
""
)}`}
style={{ flex: 1, border: "none" }}
/>
</div>
</div>
);

View File

@ -1,4 +1,4 @@
import React, { useMemo, useState } from "react";
import React, { useEffect, useMemo, useState } from "react";
import ArrowForwardOutlinedIcon from "@mui/icons-material/ArrowForwardOutlined";
import ClearIcon from "@mui/icons-material/Clear";
@ -11,240 +11,259 @@ import ProductCard from "../components/ProductCard/ProductCard";
import { useDispatch, useSelector } from "react-redux";
import { toast } from "react-toastify";
import { removeItemFromCart, updatePurchase, validateCoupon } from "../../redux/purchaseSlice";
import {
getPurchaseDetails,
removeItemFromCart,
updatePurchase,
validateCoupon,
} from "../../redux/purchaseSlice";
import { getFormattedCurrency } from "../../utils";
import style from "./Cart.module.css";
function CartPage() {
const dispatch = useDispatch();
// const navigate = useNavigate();
const dispatch = useDispatch();
// const navigate = useNavigate();
const { purchaseDetails } = useSelector(({ purchase }) => {
return {
purchaseDetails: purchase.purchaseDetails,
};
});
const { purchaseDetails } = useSelector(({ purchase }) => {
return {
purchaseDetails: purchase.purchaseDetails,
};
});
const removeFromCart = (cartItemId) => {
if (window.confirm("Do you really want to remove this Item?")) {
dispatch(removeItemFromCart({ cartItemId }));
}
};
console.log("purchaseDetails", purchaseDetails);
const changeLicenseCount = (cartItemId, licenseCount) => {
let cartItem = purchaseDetails.cartItems.find(
({ _id }) => _id === cartItemId
);
cartItem = JSON.parse(JSON.stringify(cartItem));
if (!cartItem.additionalLicenses || cartItem.additionalLicenses.length <= 0)
return;
cartItem.additionalLicenses[0].count = licenseCount;
const removeFromCart = (cartItemId) => {
if (window.confirm("Do you really want to remove this Item?")) {
dispatch(removeItemFromCart({ cartItemId }));
}
};
dispatch(
updatePurchase({
cartItem,
})
);
};
const changeLicenseCount = (cartItemId, licenseCount) => {
let cartItem = purchaseDetails.cartItems.find(
({ _id }) => _id === cartItemId
);
cartItem = JSON.parse(JSON.stringify(cartItem));
if (!cartItem.additionalLicenses || cartItem.additionalLicenses.length <= 0)
return;
cartItem.additionalLicenses[0].count = licenseCount;
const changeBuyOnlyLicenseFlag = (cartItemId, value) => {
let cartItem = purchaseDetails.cartItems.find(
({ _id }) => _id === cartItemId
);
dispatch(
updatePurchase({
cartItem,
})
);
};
const payload = {
_id: cartItem._id,
planId: cartItem.planId,
buyingOnlyLicenses: value,
};
const changeBuyOnlyLicenseFlag = (cartItemId, value) => {
let cartItem = purchaseDetails.cartItems.find(
({ _id }) => _id === cartItemId
);
dispatch(
updatePurchase({
cartItem: payload,
})
);
};
const payload = {
_id: cartItem._id,
planId: cartItem.planId,
buyingOnlyLicenses: value,
};
const changeTerm = (cartItemId, newIdx) => {
let cartItem = purchaseDetails.cartItems.find(
({ _id }) => _id === cartItemId
);
cartItem = JSON.parse(JSON.stringify(cartItem));
dispatch(
updatePurchase({
cartItem: payload,
})
);
};
cartItem.planVariantIdx = newIdx;
const changeTerm = (cartItemId, newIdx) => {
let cartItem = purchaseDetails.cartItems.find(
({ _id }) => _id === cartItemId
);
cartItem = JSON.parse(JSON.stringify(cartItem));
dispatch(
updatePurchase({
cartItem,
})
);
};
cartItem.planVariantIdx = newIdx;
const redirectToCheckout = () => {
// navigate("/purchase/user_details");
window.location.href = "/purchase/user_details";
};
dispatch(
updatePurchase({
cartItem,
})
);
};
const [couponCode, setCouponCode] = useState("");
const redirectToCheckout = () => {
// navigate("/purchase/user_details");
window.location.href = "/purchase/user_details";
};
const applyDiscount = () => {
dispatch(validateCoupon({ couponCode }))
.unwrap()
.then((res) => {
const { getOffer } = res;
let discount = { code: couponCode };
if (getOffer.type === "PERCENTAGE") discount.percentage = getOffer.amount;
else if (getOffer.type === "FLAT") discount.amount = getOffer.amount;
const [couponCode, setCouponCode] = useState("");
dispatch(
updatePurchase({
discount,
})
);
setCouponCode("");
})
.catch((err) => {
toast.error(err.message);
});
};
const applyDiscount = () => {
dispatch(validateCoupon({ couponCode }))
.unwrap()
.then((res) => {
const { getOffer } = res;
let discount = { code: couponCode };
if (getOffer.type === "PERCENTAGE")
discount.percentage = getOffer.amount;
else if (getOffer.type === "FLAT") discount.amount = getOffer.amount;
const removeDiscount = () => {
dispatch(
updatePurchase({
discount: null,
})
);
};
dispatch(
updatePurchase({
discount,
})
);
setCouponCode("");
})
.catch((err) => {
toast.error(err.message);
});
};
const isCartEmpty = useMemo(() => {
return purchaseDetails && purchaseDetails.currency ? false : true;
}, [purchaseDetails]);
const removeDiscount = () => {
dispatch(
updatePurchase({
discount: null,
})
);
};
return (
<div className={style.main_container}>
<ContentWrapper>
<Header theme="DARK2" />
<div className={style.section1}>
{" "}
<p>
{!isCartEmpty
? `Your cart total is ${getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.totalCost
)}`
: "Your cart is Empty"}
</p>
<Button
variant="contained"
onClick={redirectToCheckout}
disabled={isCartEmpty}
>
Check Out{" "}
<ArrowForwardOutlinedIcon sx={{ marginLeft: "0.5rem", fontSize: 20 }} />
</Button>
</div>
const isCartEmpty = useMemo(() => {
return purchaseDetails && purchaseDetails.currency ? false : true;
}, [purchaseDetails]);
<div className={style.section2}>
{purchaseDetails &&
purchaseDetails.cartItems &&
purchaseDetails.cartItems.map((data) => (
<ProductCard
currency={purchaseDetails.currency}
data={data}
removeFromCart={removeFromCart}
changeBuyOnlyLicenseFlag={changeBuyOnlyLicenseFlag}
changeLicenseCount={changeLicenseCount}
changeTerm={changeTerm}
/>
))}
</div>
useEffect(() => {
dispatch(getPurchaseDetails());
}, []);
<div className={style.section3}>
<div>
<p>Sub-total</p>
<p className={style.price}>
{purchaseDetails
? getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.subTotalCost
)
: "Nil"}
</p>
</div>
<div>
<p>Other taxes</p>
<p className={style.price}>
{purchaseDetails
? getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.otherTaxesCost
)
: "Nil"}
</p>
</div>
<div className={style.coupon_row}>
<p>Have a discount code?</p>
{purchaseDetails && purchaseDetails.discount ? (
<>
<div className={style.coupon_code}>
<span>{purchaseDetails.discount.code} </span>{" "}
<ClearIcon style={{ cursor: "pointer" }} onClick={removeDiscount} />
</div>
return (
<div className={style.main_container}>
<ContentWrapper>
<Header theme="DARK2" />
<div className={style.section1}>
{" "}
<p>
{!isCartEmpty
? `Your cart total is ${getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.totalCost
)}`
: "Your cart is Empty"}
</p>
<Button
variant="contained"
onClick={redirectToCheckout}
disabled={isCartEmpty}
>
Check Out{" "}
<ArrowForwardOutlinedIcon
sx={{ marginLeft: "0.5rem", fontSize: 20 }}
/>
</Button>
</div>
<p className={style.price}>
{getFormattedCurrency(
purchaseDetails.currency,
-purchaseDetails.discount.amount
)}
</p>
</>
) : (
<div className={style.coupon}>
<TextField
fullWidth
id="discount_code"
placeholder="Discount Code"
value={couponCode}
onChange={(e) => {
setCouponCode(e.target.value);
}}
/>
<Button
fullWidth
variant="outlined"
disabled={!couponCode}
onClick={applyDiscount}
>
Apply
</Button>
</div>
)}
</div>
<div className={style.section2}>
{purchaseDetails &&
purchaseDetails.cartItems &&
purchaseDetails.cartItems.map((data) => (
<ProductCard
currency={purchaseDetails.currency}
data={data}
removeFromCart={removeFromCart}
changeBuyOnlyLicenseFlag={changeBuyOnlyLicenseFlag}
changeLicenseCount={changeLicenseCount}
changeTerm={changeTerm}
/>
))}
</div>
<div>
<p>Total</p>
<p className={style.price}>
{purchaseDetails
? getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.totalCost
)
: "Nil"}
</p>
</div>
<Button
variant="contained"
onClick={redirectToCheckout}
disabled={isCartEmpty}
className={style.checkout}
>
Check Out{" "}
<ArrowForwardOutlinedIcon sx={{ marginLeft: "0.5rem", fontSize: 20 }} />
</Button>
</div>
</ContentWrapper>
</div>
);
<div className={style.section3}>
<div>
<p>Sub-total</p>
<p className={style.price}>
{purchaseDetails
? getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.subTotalCost
)
: "Nil"}
</p>
</div>
<div>
<p>Other taxes</p>
<p className={style.price}>
{purchaseDetails
? getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.otherTaxesCost
)
: "Nil"}
</p>
</div>
<div className={style.coupon_row}>
<p>Have a discount code?</p>
{purchaseDetails && purchaseDetails.discount ? (
<>
<div className={style.coupon_code}>
<span>{purchaseDetails.discount.code} </span>{" "}
<ClearIcon
style={{ cursor: "pointer" }}
onClick={removeDiscount}
/>
</div>
<p className={style.price}>
{getFormattedCurrency(
purchaseDetails.currency,
-purchaseDetails.discount.amount
)}
</p>
</>
) : (
<div className={style.coupon}>
<TextField
fullWidth
id="discount_code"
placeholder="Discount Code"
value={couponCode}
onChange={(e) => {
setCouponCode(e.target.value);
}}
/>
<Button
fullWidth
variant="outlined"
disabled={!couponCode}
onClick={applyDiscount}
>
Apply
</Button>
</div>
)}
</div>
<div>
<p>Total</p>
<p className={style.price}>
{purchaseDetails
? getFormattedCurrency(
purchaseDetails.currency,
purchaseDetails.totalCost
)
: "Nil"}
</p>
</div>
<Button
variant="contained"
onClick={redirectToCheckout}
disabled={isCartEmpty}
className={style.checkout}
>
Check Out{" "}
<ArrowForwardOutlinedIcon
sx={{ marginLeft: "0.5rem", fontSize: 20 }}
/>
</Button>
</div>
</ContentWrapper>
</div>
);
}
export default CartPage;

View File

@ -3,283 +3,283 @@ import { isAxiosError } from "axios";
import { axiosBuzz, axiosBuzzOne } from "../utils/axios";
export const getAkademyPlans = createAsyncThunk(
`COMMON/akademy/plans`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "GET",
url: "/akademy/subscriptions/plans",
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
`COMMON/akademy/plans`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "GET",
url: "/akademy/subscriptions/plans",
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const getAkademyClasses = createAsyncThunk(
`COMMON/akademy/classes`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "GET",
url: "/akademy/bcc/school/classes",
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
`COMMON/akademy/classes`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "GET",
url: "/akademy/bcc/school/classes",
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const createPurchase = createAsyncThunk(
`PURCHASE:POST/akademy/purchase`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "POST",
url: "/akademy/subscriptions/purchase",
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
`PURCHASE:POST/akademy/purchase`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "POST",
url: "/akademy/subscriptions/purchase",
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const updatePurchase = createAsyncThunk(
`PURCHASE:PUT/akademy/purchase`,
async (payload, { getState, dispatch }) => {
const { purchase } = getState();
`PURCHASE:PUT/akademy/purchase`,
async (payload, { getState, dispatch }) => {
const { purchase } = getState();
try {
const response = await axiosBuzzOne({
method: "PUT",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`,
data: payload,
});
dispatch(getPurchaseDetails());
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
try {
const response = await axiosBuzzOne({
method: "PUT",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`,
data: payload,
});
dispatch(getPurchaseDetails());
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const removeItemFromCart = createAsyncThunk(
`PURCHASE:DELETE/akademy/purchase`,
async (payload, { getState, dispatch }) => {
const { cartItemId } = payload;
const { purchase } = getState();
`PURCHASE:DELETE/akademy/purchase`,
async (payload, { getState, dispatch }) => {
const { cartItemId } = payload;
const { purchase } = getState();
try {
const response = await axiosBuzzOne({
method: "DELETE",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/${cartItemId}`,
data: payload,
});
dispatch(getPurchaseDetails());
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
try {
const response = await axiosBuzzOne({
method: "DELETE",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/${cartItemId}`,
data: payload,
});
dispatch(getPurchaseDetails());
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const getPurchaseDetails = createAsyncThunk(
`PURCHASE:GET/akademy/purchase`,
async (payload, { getState }) => {
const { purchase } = getState();
try {
const response = await axiosBuzzOne({
method: "GET",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`,
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
`PURCHASE:GET/akademy/purchase`,
async (payload, { getState }) => {
const { purchase } = getState();
try {
const response = await axiosBuzzOne({
method: "GET",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`,
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const initiatePayment = createAsyncThunk(
`PURCHASE:POST/akademy/purchase/initiatePayment`,
async (payload, { getState }) => {
const { purchase } = getState();
try {
const response = await axiosBuzzOne({
method: "POST",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/checkout`,
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
`PURCHASE:POST/akademy/purchase/initiatePayment`,
async (payload, { getState }) => {
const { purchase } = getState();
try {
const response = await axiosBuzzOne({
method: "POST",
url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/checkout`,
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const verifyPayment = createAsyncThunk(
`PURCHASE:POST/akademy/purchase/verifyPayment`,
async (payload) => {
try {
const response = await axiosBuzz({
method: "POST",
url: "/payments/verify",
data: {
txnId: payload.txnId,
provider: "airpay",
},
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
`PURCHASE:POST/akademy/purchase/verifyPayment`,
async (payload) => {
try {
const response = await axiosBuzz({
method: "POST",
url: "/payments/verify",
data: {
txnId: payload.txnId,
provider: "airpay",
},
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const validateCoupon = createAsyncThunk(
`COUPON:POST/validate`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "POST",
url: "/offer/validate-coupon",
data: {
code: payload.couponCode,
},
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
`COUPON:POST/validate`,
async (payload) => {
try {
const response = await axiosBuzzOne({
method: "POST",
url: "/offer/validate-coupon",
data: {
code: payload.couponCode,
},
});
return response.data;
} catch (err) {
console.log(err);
if (isAxiosError(err))
throw new Error(err.response.data.message || "Something went wrong");
throw err;
}
}
);
export const getAllTeenybeansLanguages = createAsyncThunk(
`PURCHASE:getAllTeenybeansLanguages`,
async (paylaod, { rejectWithValue }) => {
try {
const response = await axiosBuzzOne({
method: "GET",
url: "/akademy/bcc/user/languages",
});
return response.data;
} catch (error) {
return rejectWithValue(error.response.data);
}
}
`PURCHASE:getAllTeenybeansLanguages`,
async (paylaod, { rejectWithValue }) => {
try {
const response = await axiosBuzzOne({
method: "GET",
url: "/akademy/bcc/user/languages",
});
return response.data;
} catch (error) {
return rejectWithValue(error.response.data);
}
}
);
export const purchaseSlice = createSlice({
name: "purchase",
initialState: {
currency: localStorage.getItem("currency") || "INR",
planDetails: {},
planPriceDetails: {
RETAIL_PARENT: {},
TUTION_EDUCATOR: {},
ENTERPRISE_SCHOOL: {},
},
classes: [],
purchaseId: localStorage.getItem("PURCHASE_ID"),
purchaseDetails: {},
userDetails:
(localStorage.getItem("USER_DETAILS") &&
JSON.parse(localStorage.getItem("USER_DETAILS"))) ||
{},
statusByName: {},
teenybeansLanguages: [],
},
reducers: {
clearPurchaseCart: (state, action) => {
state.purchaseId = undefined;
localStorage.removeItem("PURCHASE_ID");
state.purchaseDetails = {};
state.userDetails = {};
localStorage.removeItem("USER_DETAILS");
/////////////////////////////////////////////
localStorage.removeItem("IS_USER_VERIFIED");
localStorage.removeItem("IS_EMAIL_OTP_SENT");
},
name: "purchase",
initialState: {
currency: localStorage.getItem("currency") || "INR",
planDetails: {},
planPriceDetails: {
RETAIL_PARENT: {},
TUTION_EDUCATOR: {},
ENTERPRISE_SCHOOL: {},
},
classes: [],
purchaseId: localStorage.getItem("PURCHASE_ID"),
purchaseDetails: {},
userDetails:
(localStorage.getItem("USER_DETAILS") &&
JSON.parse(localStorage.getItem("USER_DETAILS"))) ||
{},
statusByName: {},
teenybeansLanguages: [],
},
reducers: {
clearPurchaseCart: (state, action) => {
state.purchaseId = undefined;
localStorage.removeItem("PURCHASE_ID");
state.purchaseDetails = {};
state.userDetails = {};
localStorage.removeItem("USER_DETAILS");
/////////////////////////////////////////////
localStorage.removeItem("IS_USER_VERIFIED");
localStorage.removeItem("IS_EMAIL_OTP_SENT");
},
saveUserDetails: (state, action) => {
state.userDetails = action.payload;
localStorage.setItem("USER_DETAILS", JSON.stringify(action.payload));
},
},
saveUserDetails: (state, action) => {
state.userDetails = action.payload;
localStorage.setItem("USER_DETAILS", JSON.stringify(action.payload));
},
},
extraReducers: (builder) => {
builder.addCase(getAkademyPlans.pending, (state, action) => {
state.statusByName["plans"] = "pending";
});
builder.addCase(getAkademyPlans.fulfilled, (state, action) => {
state.statusByName["plans"] = "fulfilled";
extraReducers: (builder) => {
builder.addCase(getAkademyPlans.pending, (state, action) => {
state.statusByName["plans"] = "pending";
});
builder.addCase(getAkademyPlans.fulfilled, (state, action) => {
state.statusByName["plans"] = "fulfilled";
action.payload.data.map((plan) => {
const { _id, products, productCategory } = plan;
state.planDetails[_id] = plan;
if (products && Array.isArray(products) && products.length == 1) {
state.planPriceDetails[productCategory][products[0]] = plan;
}
});
});
builder.addCase(getAkademyPlans.rejected, (state, action) => {
state.statusByName["plans"] = "rejected";
});
action.payload.data.map((plan) => {
const { _id, products, productCategory } = plan;
state.planDetails[_id] = plan;
if (products && Array.isArray(products) && products.length == 1) {
state.planPriceDetails[productCategory][products[0]] = plan;
}
});
});
builder.addCase(getAkademyPlans.rejected, (state, action) => {
state.statusByName["plans"] = "rejected";
});
builder.addCase(getAkademyClasses.pending, (state, action) => {
state.statusByName["classes"] = "pending";
});
builder.addCase(getAkademyClasses.fulfilled, (state, action) => {
state.statusByName["classes"] = "fulfilled";
state.classes = ["IK3", "IK2", "IK1", "PG"]?.map((item) =>
action.payload.data?.find((el) => el.name === item)
);
});
builder.addCase(getAkademyClasses.rejected, (state, action) => {
state.statusByName["classes"] = "rejected";
});
builder.addCase(getAkademyClasses.pending, (state, action) => {
state.statusByName["classes"] = "pending";
});
builder.addCase(getAkademyClasses.fulfilled, (state, action) => {
state.statusByName["classes"] = "fulfilled";
state.classes = ["IK3", "IK2", "IK1", "PG"]?.map((item) =>
action.payload.data?.find((el) => el.name === item)
);
});
builder.addCase(getAkademyClasses.rejected, (state, action) => {
state.statusByName["classes"] = "rejected";
});
builder.addCase(createPurchase.fulfilled, (state, action) => {
const purchaseId = action.payload.data._id;
state.purchaseId = purchaseId;
localStorage.setItem("PURCHASE_ID", purchaseId);
});
builder.addCase(createPurchase.fulfilled, (state, action) => {
const purchaseId = action.payload.data._id;
state.purchaseId = purchaseId;
localStorage.setItem("PURCHASE_ID", purchaseId);
});
builder.addCase(getPurchaseDetails.fulfilled, (state, action) => {
state.purchaseDetails = action.payload.data.data[0];
});
builder.addCase(getAllTeenybeansLanguages.fulfilled, (state, action) => {
state.teenybeansLanguages = action.payload.data;
});
},
builder.addCase(getPurchaseDetails.fulfilled, (state, action) => {
state.purchaseDetails = action.payload.data;
});
builder.addCase(getAllTeenybeansLanguages.fulfilled, (state, action) => {
state.teenybeansLanguages = action.payload.data;
});
},
});
// Action creators are generated for each case reducer function

View File

@ -1,6 +1,7 @@
import { useState } from "react";
import style from "./GroupSection.module.css";
import Carousel from "react-multi-carousel";
import "react-multi-carousel/lib/styles.css";
const data = [
{

View File

@ -6,17 +6,30 @@ export interface Props {
ogImage: string;
ogUrl: string;
canonicalUrl: string;
newSchema1:string;
newSchema2:string;
newSchema3:string;
}
const { title, description, keywords, ogImage, ogUrl, canonicalUrl } = Astro.props;
const { title, description, keywords, ogImage, ogUrl, canonicalUrl, newSchema1, newSchema2, newSchema3 } = Astro.props;
console.log('Astro.props', newSchema1, newSchema2, newSchema3)
---
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-M4948JYT6C"></script>
<script is:inline>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-M4948JYT6C');
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/svg+xml" href="/assets/akademy-logo.png" />
<meta name="google-site-verification" content="ULrPGBKj6_niSC1FkjuvDdM985OysHCWlzhTAKwra68" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
@ -30,6 +43,23 @@ const { title, description, keywords, ogImage, ogUrl, canonicalUrl } = Astro.pro
<meta property="og:image" content={ogImage}>
<meta property="og:url" content={ogUrl}>
<meta property="og:type" content="website">
<script is:inline type="application/ld+json" set:html={newSchema1}/>
<script is:inline type="application/ld+json" set:html={newSchema2}/>
<script is:inline type="application/ld+json" set:html={newSchema3}/>
<!-- {newSchema1 && (
<script is:inline type="application/ld+json" set:html={newSchema1}/>
)}
{newSchema2 && (
// <script type="application/ld+json" dangerouslySetInnerHTML={{__html: newSchema2, }}/>
<script is:inline type="application/ld+json" set:html={newSchema2}/>
)}
{newSchema3 && (
<script is:inline type="application/ld+json" set:html={newSchema3}/>
)} -->
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
/>
</head>
<body>
<slot />
@ -60,6 +90,10 @@ const { title, description, keywords, ogImage, ogUrl, canonicalUrl } = Astro.pro
src: url(/src/assets/Inter.ttf);
}
h1,h2,h3,h4,h5,h6 {
margin:0;
}
#root {
padding: 0;
margin: 0;

12
src/pages/404.astro Normal file
View File

@ -0,0 +1,12 @@
---
import Layout from "../layouts/Layout.astro";
import PageNotFound from "../components/PageNotFound/index.jsx";
---
<Layout >
<PageNotFound client:only="react" />
</Layout>

18
src/pages/about-us.astro Normal file
View File

@ -0,0 +1,18 @@
---
import Layout from "../layouts/Layout.astro";
import About from "../components/About/index.jsx";
---
<Layout
title = "About aKadmy | Transforming Early Education with AI Solutions"
description = "Learn how aKadmy empowers preschools with AI-driven tools, enhancing education and streamlining management. Join us in transforming early childhood learning."
canonicalUrl = "https://akadmyapp.com/about-us"
keywords = "Learning, aKadmy, Early Education, Preschool, Engaging, playful"
ogImage = "/assets/akademy_Logo.png"
ogUrl = "https://akadmyapp.com"
>
<About client:only="react" />
</Layout>

View File

@ -35,7 +35,22 @@ export async function getStaticPaths() {
return [];
}
}
// console.log('blogData000', blogData, `https://akadmyapp.com/blogs/${id}`)
// const schema1 = blogData.schema1.replaceAll("\n", "");
const schema1 = blogData?.schema?.replaceAll("\n", "");
const schema2 = blogData?.schema2?.replaceAll("\n", "");
const schema3 = blogData?.schema3?.replaceAll("\n", "");
---
<Layout title={blogData?.title ?? 'Blog | Akademy'}>
<Layout
title={blogData?.title ?? 'Blog | Akademy'}
description={blogData?.meta_description}
canonicalUrl={`https://akadmyapp.com/blogs/${id}`}
ogImage={`https://management.beanstalkedu.com/assets/${blogData?.og_img}`}
ogUrl={'https://akadmyapp.com'}
newSchema1={schema1}
newSchema2={schema2}
newSchema3={schema3}>
<SingleBlog client:only="react" blog={blogData} />
</Layout>

View File

@ -15,6 +15,6 @@ try {
blogs = [];
}
---
<Layout title="Akademy Landing - Blogs">
<Layout title="aKadmy Blogs | Insights, Tips, and Trends for Early Childhood" description={'Stay updated with the latest trends, insights, and tips on early childhood education. Explore aKadmys blog for valuable resources and expert advice.'} canonicalUrl={'https://akadmyapp.com/blogs'}>
<AllBlogs client:only="react" />
</Layout>

View File

@ -0,0 +1,18 @@
---
import Layout from "../layouts/Layout.astro";
import Contact from "../components/Contact/index.jsx";
---
<Layout
title = "Learn more about aKadmy | We're Here to Support You"
description = "Have questions? Reach out to aKadmy for personalized support and discover how our solutions can elevate your preschool's education experience."
canonicalUrl = "https://akadmyapp.com/contact-us"
keywords = "Learning, aKadmy, Early Education, Preschool, Engaging, playful"
ogImage = "/assets/akademy_Logo.png"
ogUrl = "https://akadmyapp.com"
>
<Contact client:only="react" />
</Layout>

View File

@ -1,16 +1,43 @@
---
import Layout from "../layouts/Layout.astro";
import HomePage from "../components/Home/Home.jsx";
const schemaData1 = JSON.stringify({
"@context": "https://schema.org/",
"@type": "Organization",
"@id": "#Organization",
"url": "https://akadmyapp.com/",
"legalName": "aKadmy",
"name": "aKadmyapp",
"description": "Akadmy is an AI-powered platform for early childhood educators, offering curriculum planning, observation tracking, and personalized learning tools. ",
"logo": "https://drive.google.com/file/d/1ULaxzcu5yITeiUoOrpME7_u5nyg3ldh6/view?usp=drive_link",
"telephone": "9748386431",
"email": "hello@akadmyapp.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "38, 3rd Floor, Jalan Radin Anum",
"addressLocality": "Bandar Baru Sri Petaling",
"addressRegion": "Kuala Lumpur",
"addressCountry": "Malaysia",
"postalCode": "57000"
},
"sameAs": [
"https://www.facebook.com/get.aKadmy/",
"https://www.instagram.com/akadmyapp/",
"https://www.linkedin.com/showcase/akadmyapp/"
]
})
---
<Layout
title = "Transform Early Learning with aKadmy's AI-Powered Education Tools"
description = "AI-powered educational games and interactive platforms engage young learners with fun, meaningful learning experiences. Get the brochure."
canonicalUrl = "https://akadmyapp.com"
keywords = "Learning, aKadmy, Early Education, Preschool, Engaging, playful"
ogImage = "/assets/akademy_Logo.png"
ogUrl = "https://akadmyapp.com"
canonicalUrl = "https://akadmyapp.com"
>
newSchema1 = {schemaData1}
>
<HomePage client:only="react" />
</Layout>

View File

@ -1,6 +1,6 @@
---
import Layout from "../layouts/Layout.astro";
import Interakto from "../components/interaKto/InteraKto";
import Layout from "../../layouts/Layout.astro";
import Interakto from "../../components/interaKto/InteraKto";
---
<Layout

View File

@ -0,0 +1,15 @@
---
import Layout from "../../layouts/Layout.astro";
import Worksheets from "../../components/interaKto/Worksheets";
---
<Layout
title = "Interactive Learning Resources for Preschool | aKadmy - Engaging Early Education"
description = "Spark your child's curiosity with aKadmys playful, interactive preschool resources—designed to make early learning fun, engaging, and meaningful."
keywords = "Learning, aKadmy, Early Education, Preschool, Engaging, playful"
ogImage = "/assets/akademy_Logo.png"
ogUrl = "https://akadmyapp.com/interactive-learning-resources-for-preschool"
canonicalUrl = "https://akadmyapp.com/interactive-learning-resources-for-preschool"
>
<Worksheets client:only="react" />
</Layout>

View File

@ -0,0 +1,18 @@
---
import Layout from "../layouts/Layout.astro";
import TermCondition from "../components/TermCondition/index.jsx";
---
<Layout
title = "aKadmy Terms and Conditions | Your Trust, Our Commitment"
description = "aKadmy Terms and Conditions | Your Trust, Our Commitment"
canonicalUrl = "https://akadmyapp.com/term-and-conditions"
keywords = "Learning, aKadmy, Early Education, Preschool, Engaging, playful"
ogImage = "/assets/akademy_Logo.png"
ogUrl = "https://akadmyapp.com"
>
<TermCondition client:only="react" />
</Layout>

View File

@ -2474,7 +2474,7 @@ cookie-es@^1.2.2:
resolved "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz"
integrity sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==
cookie@^1.0.2:
cookie@^1.0.1, cookie@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz"
integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
@ -5605,7 +5605,7 @@ randombytes@^2.1.0:
dependencies:
safe-buffer "^5.1.0"
"react-dom@^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^17.0.2 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19", react-dom@^19.1.0, react-dom@>=16.6.0:
"react-dom@^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^17.0.2 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19", react-dom@^19.1.0, react-dom@>=16.6.0, react-dom@>=18:
version "19.1.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz"
integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==
@ -5666,6 +5666,21 @@ react-refresh@^0.17.0:
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz"
integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==
react-router-dom@^7.6.2:
version "7.6.2"
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz"
integrity sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==
dependencies:
react-router "7.6.2"
react-router@7.6.2:
version "7.6.2"
resolved "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz"
integrity sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==
dependencies:
cookie "^1.0.1"
set-cookie-parser "^2.6.0"
react-toastify@^11.0.5:
version "11.0.5"
resolved "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz"
@ -5683,7 +5698,7 @@ react-transition-group@^4.4.5:
loose-envify "^1.4.0"
prop-types "^15.6.2"
"react@^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.9.0 || ^17.0.0 || ^18 || ^19", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^17.0.2 || ^18.0.0 || ^19.0.0", "react@^18 || ^19", "react@^18.0 || ^19", react@^19.1.0, react@>=16.6.0, react@>=16.8.0:
"react@^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.9.0 || ^17.0.0 || ^18 || ^19", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^17.0.2 || ^18.0.0 || ^19.0.0", "react@^18 || ^19", "react@^18.0 || ^19", react@^19.1.0, react@>=16.6.0, react@>=16.8.0, react@>=18:
version "19.1.0"
resolved "https://registry.npmjs.org/react/-/react-19.1.0.tgz"
integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==
@ -6106,6 +6121,11 @@ serialize-javascript@^6.0.1:
dependencies:
randombytes "^2.1.0"
set-cookie-parser@^2.6.0:
version "2.7.1"
resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz"
integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
set-function-length@^1.2.2:
version "1.2.2"
resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz"