generated from dwd/boilarplate-astro-tailwind
Compare commits
20 Commits
b2_optiona
...
master
Author | SHA1 | Date |
---|---|---|
|
f063c6efc9 | |
![]() |
2983fbcf05 | |
|
bbdd7d8fe8 | |
![]() |
d12c2fcd25 | |
|
45351f4e87 | |
![]() |
d9d56130d9 | |
![]() |
1a445dfa7f | |
![]() |
7b01fe4aa2 | |
|
55ee84118c | |
![]() |
e40c477b4a | |
|
eed507f27e | |
|
a1c178c223 | |
|
3fb56a6729 | |
![]() |
a1b1d2e40c | |
|
92f5589b11 | |
|
b82a834e2b | |
|
17112816cb | |
![]() |
ea19c70413 | |
|
1e078032df | |
![]() |
7153397800 |
|
@ -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}}"]
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"_variables": {
|
||||
"lastUpdateCheck": 1749549186203
|
||||
}
|
||||
}
|
|
@ -1,2 +1 @@
|
|||
/// <reference types="astro/client" />
|
||||
/// <reference path="content.d.ts" />
|
4
env.txt
4
env.txt
|
@ -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/
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,4 @@
|
|||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
Sitemap: https://akadmyapp.com/sitemap.xml
|
|
@ -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>
|
|
@ -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>
|
||||
);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
.active_content {
|
||||
background-color: #4909d6;
|
||||
color: white;
|
||||
padding: 4px 40px;
|
||||
padding: 4px 30px;
|
||||
border-radius: 30px;
|
||||
border: 6px solid white;
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
/>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
</>
|
||||
);
|
||||
|
|
|
@ -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%;
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
)}
|
||||
</>
|
||||
|
|
|
@ -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>
|
||||
We’d 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, we’re 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" />
|
||||
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>
|
||||
|
||||
<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>
|
||||
);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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%;
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 child’s coding journey:
|
||||
Enrolling in interaKto Coding is easy. Follow these simple steps
|
||||
to start your child’s 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}>
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
<img src="/assets/white_right.png" width={"14px"} />
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
|
@ -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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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}>
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
|
||||
.normal {
|
||||
font-weight: 300;
|
||||
margin-top: -8px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.right_img {
|
||||
|
|
|
@ -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 aKadmy’s 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>
|
||||
);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -223,6 +223,7 @@ const ThreeFormFields = (props) => {
|
|||
value={message}
|
||||
onChange={(e) => setMessage(e.target.value)}
|
||||
/>
|
||||
<br />
|
||||
<button type="submit" className="btn">
|
||||
submit
|
||||
</button>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
/* --interakto-primary-color4: #afba28; */
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* ///////////////// */
|
||||
/* /// Section 1 /// */
|
||||
|
||||
|
|
|
@ -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>
|
||||
);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = [
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
import PageNotFound from "../components/PageNotFound/index.jsx";
|
||||
|
||||
|
||||
---
|
||||
|
||||
<Layout >
|
||||
<PageNotFound client:only="react" />
|
||||
</Layout>
|
||||
|
||||
|
|
@ -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>
|
||||
|
||||
|
|
@ -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>
|
|
@ -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 aKadmy’s blog for valuable resources and expert advice.'} canonicalUrl={'https://akadmyapp.com/blogs'}>
|
||||
<AllBlogs client:only="react" />
|
||||
</Layout>
|
|
@ -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>
|
||||
|
||||
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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 aKadmy’s 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>
|
|
@ -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>
|
||||
|
||||
|
26
yarn.lock
26
yarn.lock
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue