Site audit fixes: metadata, download URLs, nav dropdown, CTAs, related resources
- Add metadata and h1 to homepage - Replace all placeholder download URLs with real links - Convert Platform nav item to dropdown with product sub-links - Add hero CTA buttons to rover page - Add bottom CTA section to platform page - Add RelatedResources to junior and python pages - Add metadata description to contact and download pages - Update "Visit Store" to "Build Your Kit" for consistency - Add Airtable TODO comment in contact form handler - Update Micromelon-Py card image to VS Code screenshot
This commit is contained in:
@@ -28,7 +28,7 @@ export default function ContactForm() {
|
|||||||
|
|
||||||
const handleSubmit = async (e: React.FormEvent) => {
|
const handleSubmit = async (e: React.FormEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
// POST to /api/contact will be built later
|
// TODO: Replace with Airtable form embed once URL is available
|
||||||
setSubmitted(true);
|
setSubmitted(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import ContactForm from "./ContactForm";
|
|||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Contact",
|
title: "Contact",
|
||||||
|
description:
|
||||||
|
"Get in touch with the Micromelon team for quotes, support, or general enquiries.",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function ContactPage() {
|
export default function ContactPage() {
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import { Button } from "@/components/ui/Button";
|
|||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Download",
|
title: "Download",
|
||||||
|
description:
|
||||||
|
"Download the Micromelon Code Editor, Robot Simulator, Junior, and Python library.",
|
||||||
};
|
};
|
||||||
|
|
||||||
interface PlatformLink {
|
interface PlatformLink {
|
||||||
@@ -109,11 +111,11 @@ const downloadProducts: ProductCardProps[] = [
|
|||||||
imageAlt: "Micromelon Code Editor showing blocks and Python side by side",
|
imageAlt: "Micromelon Code Editor showing blocks and Python side by side",
|
||||||
accent: "border-brand",
|
accent: "border-brand",
|
||||||
platforms: [
|
platforms: [
|
||||||
{ label: "Windows", href: "#", icon: "\u{1F5A5}" },
|
{ label: "Windows", href: "https://micromelon-s3.s3.ap-southeast-2.amazonaws.com/Micromelon+Code+Setup.exe", icon: "\u{1F5A5}" },
|
||||||
{ label: "macOS", href: "#", icon: "\u{1F4BB}" },
|
{ label: "macOS", href: "https://micromelon-s3.s3.ap-southeast-2.amazonaws.com/Micromelon+Code.dmg", icon: "\u{1F4BB}" },
|
||||||
{ label: "iPad", href: "#", icon: "\u{1F4F1}" },
|
{ label: "iPad", href: "https://apps.apple.com/au/app/micromelon-code/id1542702054", icon: "\u{1F4F1}" },
|
||||||
{ label: "Android", href: "#", icon: "\u{1F4F1}" },
|
{ label: "Android", href: "https://play.google.com/store/apps/details?id=com.nicerapps.micromeloncode", icon: "\u{1F4F1}" },
|
||||||
{ label: "Chromebook", href: "#", icon: "\u{1F4BB}" },
|
{ label: "Chromebook", href: "https://play.google.com/store/apps/details?id=com.nicerapps.micromeloncode", icon: "\u{1F4BB}" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -124,16 +126,16 @@ const downloadProducts: ProductCardProps[] = [
|
|||||||
imageAlt: "Micromelon Robot Simulator 3D environment",
|
imageAlt: "Micromelon Robot Simulator 3D environment",
|
||||||
accent: "border-teal-400",
|
accent: "border-teal-400",
|
||||||
platforms: [
|
platforms: [
|
||||||
{ label: "Windows", href: "#", icon: "\u{1F5A5}" },
|
{ label: "Windows", href: "https://micromelon-s3.s3.ap-southeast-2.amazonaws.com/Micromelon+Simulator+Setup.exe", icon: "\u{1F5A5}" },
|
||||||
{ label: "macOS", href: "#", icon: "\u{1F4BB}" },
|
{ label: "macOS", href: "https://apps.apple.com/au/app/micromelon-simulator/id1544591007", icon: "\u{1F4BB}" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Micromelon-Py",
|
name: "Micromelon-Py",
|
||||||
description:
|
description:
|
||||||
"A dedicated Python module providing an API for connecting and controlling Micromelon Rovers and simulated rovers. Perfect for senior students and advanced projects.",
|
"A dedicated Python module providing an API for connecting and controlling Micromelon Rovers and simulated rovers. Perfect for senior students and advanced projects.",
|
||||||
image: "/images/products/rover-render.jpg",
|
image: "/images/content/6d295c-vscode-cover-photo.png",
|
||||||
imageAlt: "Micromelon Rover for Python programming",
|
imageAlt: "Micromelon Python library in VS Code",
|
||||||
installCommand: "pip install micromelon",
|
installCommand: "pip install micromelon",
|
||||||
extraLink: {
|
extraLink: {
|
||||||
label: "View on PyPI",
|
label: "View on PyPI",
|
||||||
@@ -144,11 +146,11 @@ const downloadProducts: ProductCardProps[] = [
|
|||||||
name: "Junior",
|
name: "Junior",
|
||||||
description:
|
description:
|
||||||
"Ideal for students not yet confident to navigate the Code Editor, or for lesson plans which aim to teach the basics of computational thinking with a simplified interface.",
|
"Ideal for students not yet confident to navigate the Code Editor, or for lesson plans which aim to teach the basics of computational thinking with a simplified interface.",
|
||||||
image: "/images/products/rover-big.png",
|
image: "/images/products/rover-render.jpg",
|
||||||
imageAlt: "Micromelon Junior app for young learners",
|
imageAlt: "Micromelon Junior app for young learners",
|
||||||
platforms: [
|
platforms: [
|
||||||
{ label: "iPad", href: "#", icon: "\u{1F4F1}" },
|
{ label: "iPad", href: "https://apps.apple.com/au/app/micromelon-junior/id1522717379", icon: "\u{1F4F1}" },
|
||||||
{ label: "Android", href: "#", icon: "\u{1F4F1}" },
|
{ label: "Android", href: "https://play.google.com/store/apps/details?id=com.nicerapps.micromelonjunior", icon: "\u{1F4F1}" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
176
src/app/junior/page.tsx
Normal file
176
src/app/junior/page.tsx
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Image from "next/image";
|
||||||
|
import { Container } from "@/components/layout/Container";
|
||||||
|
import { Button } from "@/components/ui/Button";
|
||||||
|
import { LearningPathway } from "@/components/ui/LearningPathway";
|
||||||
|
import { RelatedResources } from "@/components/ui/RelatedResources";
|
||||||
|
import { getAllResources } from "@/lib/resources";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Micromelon Junior",
|
||||||
|
description:
|
||||||
|
"A simplified coding app for young learners. Teach the basics of computational thinking with an easy-to-use interface on iPad and Android.",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function JuniorPage() {
|
||||||
|
const resources = getAllResources();
|
||||||
|
const relatedResources = resources
|
||||||
|
.filter((r) => r.categories.includes("Getting Started"))
|
||||||
|
.slice(0, 4);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{/* Hero */}
|
||||||
|
<section className="bg-white py-16 sm:py-24">
|
||||||
|
<Container>
|
||||||
|
<div className="grid items-center gap-12 md:grid-cols-2">
|
||||||
|
<div>
|
||||||
|
<h1 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl">
|
||||||
|
Micromelon Junior
|
||||||
|
</h1>
|
||||||
|
<p className="mt-6 text-lg text-foreground-light">
|
||||||
|
A simplified coding app for students who aren't yet ready
|
||||||
|
for the full Code Editor. Junior teaches the basics of
|
||||||
|
computational thinking with a friendly, easy-to-navigate
|
||||||
|
interface.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8 flex flex-col gap-3 sm:flex-row">
|
||||||
|
<Button href="/download" variant="primary">
|
||||||
|
Download
|
||||||
|
</Button>
|
||||||
|
<Button href="/code-editor" variant="outline">
|
||||||
|
See the Code Editor
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<Image
|
||||||
|
src="/images/products/rover-render.jpg"
|
||||||
|
alt="Micromelon Rover used with Junior app"
|
||||||
|
width={600}
|
||||||
|
height={400}
|
||||||
|
className="w-full rounded-2xl shadow-lg"
|
||||||
|
priority
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* What is Junior */}
|
||||||
|
<section className="border-t border-border bg-muted py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="mx-auto max-w-3xl">
|
||||||
|
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
||||||
|
Built for Younger Learners
|
||||||
|
</h2>
|
||||||
|
<p className="mt-6 text-lg text-foreground-light">
|
||||||
|
Junior is designed for lesson plans that focus on computational
|
||||||
|
thinking fundamentals like sequencing, loops, and simple
|
||||||
|
decision-making, without the complexity of a full coding
|
||||||
|
environment.
|
||||||
|
</p>
|
||||||
|
<div className="mt-10 grid gap-6 sm:grid-cols-2">
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Simplified Interface
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
A pared-back design so students can focus on learning concepts
|
||||||
|
rather than navigating menus.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Tablet-First
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
Available on iPad and Android. Perfect for schools using
|
||||||
|
tablets in the classroom.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Block-Based Coding
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
Drag-and-drop blocks to build programs. No typing required,
|
||||||
|
making it accessible for early primary students.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Works with the Rover
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
Connect to a real Micromelon Rover and see programs come to
|
||||||
|
life, the same rover students will use as they progress.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Pathway */}
|
||||||
|
<LearningPathway
|
||||||
|
title="From Blocks to Python"
|
||||||
|
subtitle="Junior is the starting point. When students are ready, they move to the full Code Editor with blocks, mixed mode, and Python, all using the same Micromelon Rover."
|
||||||
|
activeStep={1}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* Available On */}
|
||||||
|
<section className="border-t border-border bg-muted py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="mx-auto max-w-2xl text-center">
|
||||||
|
<h2 className="text-2xl font-bold tracking-tight text-foreground">
|
||||||
|
Available On
|
||||||
|
</h2>
|
||||||
|
<p className="mt-4 text-foreground-light">
|
||||||
|
iPad and Android tablets. Download from the App Store or Google
|
||||||
|
Play.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8">
|
||||||
|
<Button href="/download" variant="primary">
|
||||||
|
Go to Downloads
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Related Resources */}
|
||||||
|
<RelatedResources
|
||||||
|
resources={relatedResources}
|
||||||
|
seeAllHref="/resources"
|
||||||
|
seeAllLabel="See all resources"
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* CTA */}
|
||||||
|
<section className="bg-brand py-16">
|
||||||
|
<Container>
|
||||||
|
<div className="text-center">
|
||||||
|
<h2 className="text-3xl font-bold text-foreground sm:text-4xl">
|
||||||
|
Ready to Start?
|
||||||
|
</h2>
|
||||||
|
<p className="mt-4 text-lg text-foreground-light">
|
||||||
|
Try Micromelon Junior on your classroom tablets, or explore the
|
||||||
|
full platform.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8 flex flex-col items-center gap-4 sm:flex-row sm:justify-center">
|
||||||
|
<Button
|
||||||
|
href="/download"
|
||||||
|
className="bg-foreground text-white hover:bg-foreground-light"
|
||||||
|
>
|
||||||
|
Download Junior
|
||||||
|
</Button>
|
||||||
|
<Button href="/platform" variant="outline">
|
||||||
|
See the Platform
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,8 +1,17 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { Container } from "@/components/layout/Container";
|
import { Container } from "@/components/layout/Container";
|
||||||
import { Button } from "@/components/ui/Button";
|
import { Button } from "@/components/ui/Button";
|
||||||
import { SectionHeading } from "@/components/ui/SectionHeading";
|
import { SectionHeading } from "@/components/ui/SectionHeading";
|
||||||
|
import { LearningPathway } from "@/components/ui/LearningPathway";
|
||||||
import { partners } from "@/data/partners";
|
import { partners } from "@/data/partners";
|
||||||
|
import { KNOWN_SCHOOLS } from "@/data/schools";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Micromelon Robotics",
|
||||||
|
description:
|
||||||
|
"Hands-on robotics for the classroom. Micromelon brings coding, sensors, and STEM to students from Prep to grade 12 and beyond.",
|
||||||
|
};
|
||||||
|
|
||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
return (
|
return (
|
||||||
@@ -20,14 +29,16 @@ export default function HomePage() {
|
|||||||
className="mb-6"
|
className="mb-6"
|
||||||
priority
|
priority
|
||||||
/>
|
/>
|
||||||
<p className="text-lg text-foreground-light">
|
<h1 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl">
|
||||||
|
Hands-On Robotics for the Classroom
|
||||||
|
</h1>
|
||||||
|
<p className="mt-4 text-lg text-foreground-light">
|
||||||
Micromelon aims to bring like minded individuals, companies and organisations
|
Micromelon aims to bring like minded individuals, companies and organisations
|
||||||
together to further the impact that STEM education can have on students, teachers
|
together to further the impact that STEM education can have on students, teachers
|
||||||
and adults alike.
|
and adults alike.
|
||||||
</p>
|
</p>
|
||||||
<div className="mt-8 flex flex-col gap-3 sm:flex-row">
|
<div className="mt-8">
|
||||||
<Button href="/platform">Learn more</Button>
|
<Button href="/platform">Learn more</Button>
|
||||||
<Button href="/store" variant="outline">Visit Store</Button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -44,42 +55,13 @@ export default function HomePage() {
|
|||||||
</Container>
|
</Container>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* Micromelon Robotics Platform */}
|
{/* Learning Pathway */}
|
||||||
<section className="border-t border-border bg-muted py-20">
|
<LearningPathway className="border-t border-border bg-muted" />
|
||||||
<Container>
|
|
||||||
<div className="grid items-center gap-12 md:grid-cols-2">
|
|
||||||
<div className="flex justify-center">
|
|
||||||
<Image
|
|
||||||
src="/images/hero/platform.png"
|
|
||||||
alt="Micromelon Platform - Rover, Code Editor, Simulator"
|
|
||||||
width={400}
|
|
||||||
height={400}
|
|
||||||
className="w-full max-w-sm"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
|
||||||
Micromelon Robotics Platform
|
|
||||||
</h2>
|
|
||||||
<p className="mt-6 text-foreground-light">
|
|
||||||
Whether we are running student workshops, delivering professional development
|
|
||||||
for teachers or consulting to systems of schools on how to best implement STEM,
|
|
||||||
build real-world assessments or design project based learning, we integrate the
|
|
||||||
hard skills of robotics and engineering whilst infusing dispositions to help
|
|
||||||
students succeed in whatever career they choose.
|
|
||||||
</p>
|
|
||||||
<div className="mt-8">
|
|
||||||
<Button href="/platform">Learn more</Button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Container>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* Product Cards */}
|
{/* Product Cards */}
|
||||||
<section className="py-20">
|
<section className="py-20">
|
||||||
<Container>
|
<Container>
|
||||||
<div className="grid gap-8 md:grid-cols-3">
|
<div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4">
|
||||||
{/* Rover */}
|
{/* Rover */}
|
||||||
<div className="group overflow-hidden rounded-2xl border border-border bg-white shadow-sm transition-shadow hover:shadow-lg">
|
<div className="group overflow-hidden rounded-2xl border border-border bg-white shadow-sm transition-shadow hover:shadow-lg">
|
||||||
<div className="relative aspect-[4/3] overflow-hidden">
|
<div className="relative aspect-[4/3] overflow-hidden">
|
||||||
@@ -93,7 +75,7 @@ export default function HomePage() {
|
|||||||
<div className="p-6">
|
<div className="p-6">
|
||||||
<h3 className="text-xl font-semibold text-foreground">Micromelon Rover</h3>
|
<h3 className="text-xl font-semibold text-foreground">Micromelon Rover</h3>
|
||||||
<p className="mt-2 text-sm text-foreground-light">
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
A purpose-built educational robot packed with sensors and tools, designed to grow with students from grade 3 to 12 and beyond.
|
A purpose-built educational robot packed with sensors and tools, designed to grow with students from Prep to grade 12 and beyond.
|
||||||
</p>
|
</p>
|
||||||
<Button href="/rover" variant="outline" size="sm" className="mt-4">
|
<Button href="/rover" variant="outline" size="sm" className="mt-4">
|
||||||
Learn more
|
Learn more
|
||||||
@@ -101,6 +83,27 @@ export default function HomePage() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Junior */}
|
||||||
|
<div className="group overflow-hidden rounded-2xl border border-border bg-white shadow-sm transition-shadow hover:shadow-lg">
|
||||||
|
<div className="relative aspect-[4/3] overflow-hidden">
|
||||||
|
<Image
|
||||||
|
src="/images/products/rover-render.jpg"
|
||||||
|
alt="Micromelon Junior"
|
||||||
|
fill
|
||||||
|
className="object-cover transition-transform group-hover:scale-105"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="p-6">
|
||||||
|
<h3 className="text-xl font-semibold text-foreground">Junior</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
A simplified coding app for younger learners. Teach computational thinking basics with a friendly block-based interface on iPad and Android.
|
||||||
|
</p>
|
||||||
|
<Button href="/junior" variant="outline" size="sm" className="mt-4">
|
||||||
|
Learn more
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Code Editor */}
|
{/* Code Editor */}
|
||||||
<div className="group overflow-hidden rounded-2xl border border-border bg-white shadow-sm transition-shadow hover:shadow-lg">
|
<div className="group overflow-hidden rounded-2xl border border-border bg-white shadow-sm transition-shadow hover:shadow-lg">
|
||||||
<div className="relative aspect-[4/3] overflow-hidden bg-foreground/5">
|
<div className="relative aspect-[4/3] overflow-hidden bg-foreground/5">
|
||||||
@@ -148,12 +151,30 @@ export default function HomePage() {
|
|||||||
</Container>
|
</Container>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* Partner Logos */}
|
{/* Schools */}
|
||||||
<section className="border-t border-border bg-muted py-16">
|
<section className="border-t border-border bg-muted py-16">
|
||||||
<Container>
|
<Container>
|
||||||
<SectionHeading
|
<SectionHeading
|
||||||
title="Just a few of the Australian educators already using Micromelon in their classrooms"
|
title="Over 120 Schools Using Micromelon"
|
||||||
|
subtitle="From primary schools to universities across Australia."
|
||||||
/>
|
/>
|
||||||
|
<div className="mx-auto max-w-4xl columns-2 gap-x-8 sm:columns-3 md:columns-4">
|
||||||
|
{KNOWN_SCHOOLS.slice(0, 50).map((school) => (
|
||||||
|
<p
|
||||||
|
key={school}
|
||||||
|
className="mb-1.5 break-inside-avoid text-sm text-foreground-light"
|
||||||
|
>
|
||||||
|
{school}
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Partners */}
|
||||||
|
<section className="bg-white py-16">
|
||||||
|
<Container>
|
||||||
|
<SectionHeading title="Partnering to Bring Robotics to More Classrooms" />
|
||||||
<div className="grid grid-cols-3 items-center gap-8 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-6">
|
<div className="grid grid-cols-3 items-center gap-8 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-6">
|
||||||
{partners.map((partner) => (
|
{partners.map((partner) => (
|
||||||
<div
|
<div
|
||||||
@@ -184,7 +205,7 @@ export default function HomePage() {
|
|||||||
</p>
|
</p>
|
||||||
<div className="mt-8 flex flex-col items-center gap-4 sm:flex-row sm:justify-center">
|
<div className="mt-8 flex flex-col items-center gap-4 sm:flex-row sm:justify-center">
|
||||||
<Button href="/store" className="bg-foreground text-white hover:bg-foreground-light">
|
<Button href="/store" className="bg-foreground text-white hover:bg-foreground-light">
|
||||||
Visit Store
|
Build Your Kit
|
||||||
</Button>
|
</Button>
|
||||||
<Button href="/contact" variant="outline">
|
<Button href="/contact" variant="outline">
|
||||||
Contact Us
|
Contact Us
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import Image from "next/image";
|
|||||||
import { Container } from "@/components/layout/Container";
|
import { Container } from "@/components/layout/Container";
|
||||||
import { Button } from "@/components/ui/Button";
|
import { Button } from "@/components/ui/Button";
|
||||||
import { SectionHeading } from "@/components/ui/SectionHeading";
|
import { SectionHeading } from "@/components/ui/SectionHeading";
|
||||||
|
import { LearningPathway } from "@/components/ui/LearningPathway";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Micromelon Robotics Platform",
|
title: "Micromelon Robotics Platform",
|
||||||
@@ -21,14 +22,9 @@ export default function PlatformPage() {
|
|||||||
Micromelon Robotics Platform
|
Micromelon Robotics Platform
|
||||||
</h1>
|
</h1>
|
||||||
<p className="mt-6 text-lg text-foreground-light">
|
<p className="mt-6 text-lg text-foreground-light">
|
||||||
The Micromelon Platform provides both an easy way to get started
|
An easy way to get started with programming in blocks, a high
|
||||||
with programming in blocks, but also a high ceiling of
|
ceiling for advanced students, and a simulator for learning
|
||||||
possibilities for advanced students. The Micromelon Rover provides
|
anywhere. All built around the Micromelon Rover.
|
||||||
all the sensors required to take part in a range of challenges
|
|
||||||
including robotics competitions. The Code Editor provides an easy
|
|
||||||
way to program in both Blocks and Python code and with the
|
|
||||||
Micromelon Simulator students can program from home, in their own
|
|
||||||
time as well as complete advanced challenges with no setup time.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
@@ -56,8 +52,8 @@ export default function PlatformPage() {
|
|||||||
expansive STEM resource that empowers students to explore
|
expansive STEM resource that empowers students to explore
|
||||||
what's possible with programming and engineering. Built by a
|
what's possible with programming and engineering. Built by a
|
||||||
team of Australian engineers and educators, the Micromelon Rover
|
team of Australian engineers and educators, the Micromelon Rover
|
||||||
has been specifically designed to cater to students from grade
|
has been specifically designed to cater to students from Prep
|
||||||
three all the way through to grade 12 and beyond. Out of the
|
all the way through to grade 12 and beyond. Out of the
|
||||||
box, Micromelon Rovers are full of sensors and tools, and are
|
box, Micromelon Rovers are full of sensors and tools, and are
|
||||||
designed to grow with your students at all stages of the learning
|
designed to grow with your students at all stages of the learning
|
||||||
process.
|
process.
|
||||||
@@ -70,54 +66,46 @@ export default function PlatformPage() {
|
|||||||
</Container>
|
</Container>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* Robot Simulator */}
|
{/* Learning Pathway */}
|
||||||
<section className="bg-white py-20">
|
<LearningPathway className="bg-white" />
|
||||||
|
|
||||||
|
{/* Junior */}
|
||||||
|
<section className="border-t border-border bg-muted py-20">
|
||||||
<Container>
|
<Container>
|
||||||
<div className="grid items-center gap-12 md:grid-cols-2">
|
<div className="grid items-center gap-12 md:grid-cols-2">
|
||||||
<div className="order-2 md:order-1">
|
<div className="flex justify-center">
|
||||||
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
|
||||||
Robot Simulator
|
|
||||||
</h2>
|
|
||||||
<p className="mt-6 text-foreground-light">
|
|
||||||
We developed the simulator so that learning can continue outside
|
|
||||||
the classroom and without the need for a physical robot. The
|
|
||||||
Simulator is ideal for homework and running complex challenges.
|
|
||||||
Filled with virtual exercises and challenges allowing students to
|
|
||||||
build confidence with programming and to explore all of the
|
|
||||||
Rovers' capabilities.
|
|
||||||
</p>
|
|
||||||
<div className="mt-8">
|
|
||||||
<Button href="/robot-simulator">Learn more</Button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="order-1 flex justify-center md:order-2">
|
|
||||||
<Image
|
<Image
|
||||||
src="/images/products/simulator-screenshot.png"
|
src="/images/products/rover-render.jpg"
|
||||||
alt="Micromelon Robot Simulator"
|
alt="Micromelon Junior app"
|
||||||
width={560}
|
width={560}
|
||||||
height={400}
|
height={400}
|
||||||
className="w-full max-w-lg rounded-2xl shadow-lg"
|
className="w-full max-w-lg rounded-2xl"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
||||||
|
Micromelon Junior
|
||||||
|
</h2>
|
||||||
|
<p className="mt-6 text-foreground-light">
|
||||||
|
A simplified coding app for younger or beginner students.
|
||||||
|
Junior focuses on the basics of computational thinking with a
|
||||||
|
friendly block-based interface, ideal for students not yet
|
||||||
|
confident to navigate the full Code Editor. Available on iPad
|
||||||
|
and Android.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8">
|
||||||
|
<Button href="/junior">Learn more</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* Code Editor */}
|
{/* Code Editor */}
|
||||||
<section className="border-t border-border bg-muted py-20">
|
<section className="bg-white py-20">
|
||||||
<Container>
|
<Container>
|
||||||
<div className="grid items-center gap-12 md:grid-cols-2">
|
<div className="grid items-center gap-12 md:grid-cols-2">
|
||||||
<div className="flex justify-center">
|
<div className="order-2 md:order-1">
|
||||||
<Image
|
|
||||||
src="/images/hero/code-editor-demo.gif"
|
|
||||||
alt="Micromelon Code Editor"
|
|
||||||
width={560}
|
|
||||||
height={400}
|
|
||||||
className="w-full max-w-lg rounded-2xl shadow-lg"
|
|
||||||
unoptimized
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
||||||
Code Editor
|
Code Editor
|
||||||
</h2>
|
</h2>
|
||||||
@@ -156,6 +144,101 @@ export default function PlatformPage() {
|
|||||||
<Button href="/code-editor">Learn more</Button>
|
<Button href="/code-editor">Learn more</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="order-1 flex justify-center md:order-2">
|
||||||
|
<Image
|
||||||
|
src="/images/hero/code-editor-demo.gif"
|
||||||
|
alt="Micromelon Code Editor"
|
||||||
|
width={560}
|
||||||
|
height={400}
|
||||||
|
className="w-full max-w-lg rounded-2xl shadow-lg"
|
||||||
|
unoptimized
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Python Library */}
|
||||||
|
<section className="border-t border-border bg-muted py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="grid items-center gap-12 md:grid-cols-2">
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<Image
|
||||||
|
src="/images/content/6d295c-vscode-cover-photo.png"
|
||||||
|
alt="Micromelon Python library used in VS Code"
|
||||||
|
width={560}
|
||||||
|
height={400}
|
||||||
|
className="w-full max-w-lg rounded-2xl shadow-lg"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
||||||
|
Python Library
|
||||||
|
</h2>
|
||||||
|
<p className="mt-6 text-foreground-light">
|
||||||
|
Advanced students can move beyond the Code Editor and control
|
||||||
|
their rover from any Python environment, including VS Code,
|
||||||
|
PyCharm, and Jupyter Notebooks. Combine the rover with other
|
||||||
|
Python libraries for computer vision, data analysis, and more.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8">
|
||||||
|
<Button href="/python">Learn more</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Robot Simulator */}
|
||||||
|
<section className="bg-white py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="grid items-center gap-12 md:grid-cols-2">
|
||||||
|
<div className="order-2 md:order-1">
|
||||||
|
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
||||||
|
Robot Simulator
|
||||||
|
</h2>
|
||||||
|
<p className="mt-6 text-foreground-light">
|
||||||
|
We developed the simulator so that learning can continue outside
|
||||||
|
the classroom and without the need for a physical robot. The
|
||||||
|
Simulator is ideal for homework and running complex challenges.
|
||||||
|
Filled with virtual exercises and challenges allowing students to
|
||||||
|
build confidence with programming and to explore all of the
|
||||||
|
Rovers' capabilities.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8">
|
||||||
|
<Button href="/robot-simulator">Learn more</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="order-1 flex justify-center md:order-2">
|
||||||
|
<Image
|
||||||
|
src="/images/products/simulator-screenshot.png"
|
||||||
|
alt="Micromelon Robot Simulator"
|
||||||
|
width={560}
|
||||||
|
height={400}
|
||||||
|
className="w-full max-w-lg rounded-2xl shadow-lg"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
{/* CTA */}
|
||||||
|
<section className="bg-brand py-16">
|
||||||
|
<Container>
|
||||||
|
<div className="text-center">
|
||||||
|
<h2 className="text-3xl font-bold text-foreground sm:text-4xl">
|
||||||
|
Ready to bring robotics to your classroom?
|
||||||
|
</h2>
|
||||||
|
<p className="mt-4 text-lg text-foreground-light">
|
||||||
|
Get in touch for a quote tailored to your school's needs.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8 flex flex-col items-center gap-4 sm:flex-row sm:justify-center">
|
||||||
|
<Button href="/store" className="bg-foreground text-white hover:bg-foreground-light">
|
||||||
|
Build Your Kit
|
||||||
|
</Button>
|
||||||
|
<Button href="/contact" variant="outline">
|
||||||
|
Contact Us
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
161
src/app/python/page.tsx
Normal file
161
src/app/python/page.tsx
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Image from "next/image";
|
||||||
|
import { Container } from "@/components/layout/Container";
|
||||||
|
import { Button } from "@/components/ui/Button";
|
||||||
|
import { LearningPathway } from "@/components/ui/LearningPathway";
|
||||||
|
import { RelatedResources } from "@/components/ui/RelatedResources";
|
||||||
|
import { getAllResources } from "@/lib/resources";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Micromelon Python Library",
|
||||||
|
description:
|
||||||
|
"A dedicated Python module for connecting and controlling Micromelon Rovers and simulated rovers. Perfect for senior students and advanced projects.",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function PythonPage() {
|
||||||
|
const resources = getAllResources();
|
||||||
|
const relatedResources = resources
|
||||||
|
.filter((r) => r.categories.includes("Advanced Guides"))
|
||||||
|
.slice(0, 4);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{/* Hero */}
|
||||||
|
<section className="bg-white py-16 sm:py-24">
|
||||||
|
<Container>
|
||||||
|
<div className="grid items-center gap-12 md:grid-cols-2">
|
||||||
|
<div>
|
||||||
|
<h1 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl">
|
||||||
|
Micromelon Python Library
|
||||||
|
</h1>
|
||||||
|
<p className="mt-6 text-lg text-foreground-light">
|
||||||
|
A dedicated Python module for controlling Micromelon Rovers and
|
||||||
|
simulated rovers from any Python environment. Perfect for senior
|
||||||
|
students ready to move beyond the Code Editor.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8">
|
||||||
|
<code className="block rounded-lg bg-foreground px-4 py-3 text-sm font-mono text-white">
|
||||||
|
$ pip install micromelon
|
||||||
|
</code>
|
||||||
|
</div>
|
||||||
|
<div className="mt-6 flex flex-col gap-3 sm:flex-row">
|
||||||
|
<Button
|
||||||
|
href="https://pypi.org/project/micromelon/"
|
||||||
|
variant="primary"
|
||||||
|
>
|
||||||
|
View on PyPI
|
||||||
|
</Button>
|
||||||
|
<Button href="/download" variant="outline">
|
||||||
|
All Downloads
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<Image
|
||||||
|
src="/images/content/6d295c-vscode-cover-photo.png"
|
||||||
|
alt="Micromelon Python library used in VS Code"
|
||||||
|
width={2500}
|
||||||
|
height={1355}
|
||||||
|
className="w-full rounded-2xl shadow-lg"
|
||||||
|
priority
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Features */}
|
||||||
|
<section className="border-t border-border bg-muted py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="mx-auto max-w-3xl">
|
||||||
|
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
|
||||||
|
Code in Any Python Environment
|
||||||
|
</h2>
|
||||||
|
<p className="mt-6 text-lg text-foreground-light">
|
||||||
|
The Micromelon Python library gives students full control of their
|
||||||
|
rover using standard Python. Use it in VS Code, PyCharm, Jupyter
|
||||||
|
Notebooks, or any environment that runs Python.
|
||||||
|
</p>
|
||||||
|
<div className="mt-10 grid gap-6 sm:grid-cols-2">
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Full Rover API
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
Control motors, read sensors, play sounds, and set LEDs with a
|
||||||
|
clean, well-documented Python API.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Works with the Simulator
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
Connect to a simulated rover just as easily as a physical one.
|
||||||
|
Test and iterate without hardware.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Use Your Own Editor
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
VS Code, PyCharm, Jupyter Notebooks, or a plain terminal.
|
||||||
|
Students work in the tools real developers use.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="rounded-xl border border-border bg-white p-6">
|
||||||
|
<h3 className="text-lg font-semibold text-foreground">
|
||||||
|
Advanced Projects
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground-light">
|
||||||
|
Combine the rover with other Python libraries for computer
|
||||||
|
vision, data analysis, machine learning, and more.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Pathway */}
|
||||||
|
<LearningPathway
|
||||||
|
title="From Blocks to Python"
|
||||||
|
subtitle="The Python library is the final step. Students who started with blocks in Junior and progressed through the Code Editor can now write professional Python."
|
||||||
|
activeStep={3}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* Related Resources */}
|
||||||
|
<RelatedResources
|
||||||
|
resources={relatedResources}
|
||||||
|
seeAllHref="/resources"
|
||||||
|
seeAllLabel="See all resources"
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* CTA */}
|
||||||
|
<section className="bg-brand py-16">
|
||||||
|
<Container>
|
||||||
|
<div className="text-center">
|
||||||
|
<h2 className="text-3xl font-bold text-foreground sm:text-4xl">
|
||||||
|
Ready to Get Started?
|
||||||
|
</h2>
|
||||||
|
<p className="mt-4 text-lg text-foreground-light">
|
||||||
|
Install the library and start controlling your rover in minutes.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8 flex flex-col items-center gap-4 sm:flex-row sm:justify-center">
|
||||||
|
<Button
|
||||||
|
href="https://pypi.org/project/micromelon/"
|
||||||
|
className="bg-foreground text-white hover:bg-foreground-light"
|
||||||
|
>
|
||||||
|
View on PyPI
|
||||||
|
</Button>
|
||||||
|
<Button href="/resources/advanced-guides" variant="outline">
|
||||||
|
Advanced Guides
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -117,6 +117,14 @@ export default function RoverPage() {
|
|||||||
Long battery life, tough, and packed with sensors to make a
|
Long battery life, tough, and packed with sensors to make a
|
||||||
great classroom tool. Connect and run code in seconds.
|
great classroom tool. Connect and run code in seconds.
|
||||||
</p>
|
</p>
|
||||||
|
<div className="mt-8 flex flex-col gap-3 sm:flex-row">
|
||||||
|
<Button href="/store" variant="primary">
|
||||||
|
Build Your Kit
|
||||||
|
</Button>
|
||||||
|
<Button href="/download" variant="outline">
|
||||||
|
Download Code Editor
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<Image
|
<Image
|
||||||
@@ -193,7 +201,7 @@ export default function RoverPage() {
|
|||||||
Expansion & 3D Printing
|
Expansion & 3D Printing
|
||||||
</Button>
|
</Button>
|
||||||
<Button href="/store" variant="outline">
|
<Button href="/store" variant="outline">
|
||||||
Visit Store
|
Build Your Kit
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,7 +5,17 @@ export interface NavItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const navigation: NavItem[] = [
|
export const navigation: NavItem[] = [
|
||||||
{ label: "Platform", href: "/platform" },
|
{
|
||||||
|
label: "Platform",
|
||||||
|
href: "/platform",
|
||||||
|
children: [
|
||||||
|
{ label: "Micromelon Rover", href: "/rover" },
|
||||||
|
{ label: "Junior", href: "/junior" },
|
||||||
|
{ label: "Code Editor", href: "/code-editor" },
|
||||||
|
{ label: "Python Library", href: "/python" },
|
||||||
|
{ label: "Robot Simulator", href: "/robot-simulator" },
|
||||||
|
],
|
||||||
|
},
|
||||||
{ label: "Resources", href: "/resources" },
|
{ label: "Resources", href: "/resources" },
|
||||||
{ label: "News", href: "/news" },
|
{ label: "News", href: "/news" },
|
||||||
{ label: "About Us", href: "/about-us" },
|
{ label: "About Us", href: "/about-us" },
|
||||||
@@ -30,6 +40,8 @@ export const footerNavigation = {
|
|||||||
{ label: "Micromelon Rover", href: "/rover" },
|
{ label: "Micromelon Rover", href: "/rover" },
|
||||||
{ label: "Code Editor", href: "/code-editor" },
|
{ label: "Code Editor", href: "/code-editor" },
|
||||||
{ label: "Robot Simulator", href: "/robot-simulator" },
|
{ label: "Robot Simulator", href: "/robot-simulator" },
|
||||||
|
{ label: "Junior", href: "/junior" },
|
||||||
|
{ label: "Python Library", href: "/python" },
|
||||||
],
|
],
|
||||||
support: [
|
support: [
|
||||||
{ label: "Resources", href: "/resources" },
|
{ label: "Resources", href: "/resources" },
|
||||||
|
|||||||
Reference in New Issue
Block a user