diff --git a/public/llms.txt b/public/llms.txt
index f6b2f97..7d846d6 100644
--- a/public/llms.txt
+++ b/public/llms.txt
@@ -4,6 +4,18 @@ This repository is a high-performance webpage built on **Next.js 16 (App Router)
---
+## Website Navigation
+
+- [Documentation](https://pictopy.aossie.org/documentation)
+- [Contribute](https://pictopy.aossie.org/contribute)
+- [About Us](https://pictopy.aossie.org/about)
+- [Contact](https://pictopy.aossie.org/contact)
+
+## Project Resources
+
+- [PictoPy Website](https://pictopy.aossie.org/)
+- [PictoPy Website GitHub Repository](https://github.com/AOSSIE-Org/PictoPy-Website)
+
## ЁЯУВ Project Architecture
- **`src/app/[locale]/`**: Localized dynamic route group. All pages and layouts live here.
diff --git a/src/app/[locale]/globals.css b/src/app/[locale]/globals.css
index e3a6e17..a4e70ba 100644
--- a/src/app/[locale]/globals.css
+++ b/src/app/[locale]/globals.css
@@ -2,24 +2,6 @@
@theme {
- /* Bind Tailwind v4 variables directly to semantic CSS variables */
- --color-background-primary: var(--background);
- --color-background-secondary: var(--background-secondary);
- --color-foreground-primary: var(--foreground);
- --color-foreground-secondary: var(--foreground-secondary);
- --color-foreground-muted: var(--foreground-muted);
- --color-border-default: var(--border);
-
- --color-button-primary-bg: var(--button-primary-bg);
- --color-button-primary-text: var(--button-primary-text);
- --color-button-primary-border: var(--button-primary-border);
- --color-button-primary-hover-bg: var(--button-primary-hover-bg);
- --color-button-primary-hover-border: var(--button-primary-hover-border);
-
- --color-card-bg: var(--card-bg);
- --color-card-border: var(--card-border);
- --shadow-card: var(--card-shadow);
-
--color-status-error-bg: var(--status-error-bg);
--color-status-error-text: var(--status-error-text);
--color-status-neutral-bg: var(--status-neutral-bg);
@@ -34,24 +16,6 @@
/* --- LIGHT MODE (Default) --- */
:root {
- --background: #f5f5f5;
- --background-secondary: #ffffff;
-
- --foreground: #1c1c1c;
- --foreground-secondary: #121212;
- --foreground-muted: #4d4d4d;
-
- --border: #e2e2e7;
-
- --button-primary-bg: #121212;
- --button-primary-text: #ffffff;
- --button-primary-border: #121212;
- --button-primary-hover-bg: #2d2d2d;
- --button-primary-hover-border: #2d2d2d;
-
- --card-bg: rgba(255, 255, 255, 0.85);
- --card-border: #e2e2e7;
- --card-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
--status-error-bg: #fee2e2;
--status-error-text: #dc2626;
@@ -65,24 +29,6 @@
/* --- DARK MODE --- */
.dark {
- --background: #101010;
- --background-secondary: #000000;
-
- --foreground: #d3d3d3;
- --foreground-secondary: #b4b4b4;
- --foreground-muted: #7f8188;
-
- --border: #1e1e24;
-
- --button-primary-bg: #ffffff;
- --button-primary-text: #101010;
- --button-primary-border: transparent;
- --button-primary-hover-bg: #e4e4e7;
- --button-primary-hover-border: #e4e4e7;
-
- --card-bg: rgba(22, 22, 22, 0.85);
- --card-border: #1e1e24;
- --card-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
--status-error-bg: rgba(69, 10, 10, 0.5);
--status-error-text: #f87171;
diff --git a/src/components/CTA.tsx b/src/components/CTA.tsx
new file mode 100644
index 0000000..0b3b950
--- /dev/null
+++ b/src/components/CTA.tsx
@@ -0,0 +1,30 @@
+import { getTranslations } from "next-intl/server";
+import Download from "./Download";
+
+async function CTA() {
+ const t = await getTranslations("Home.cta");
+ return (
+
+
+
+
+ {t("title")}
+
+
+
+ {t("description")}
+
+
+
+
+
+
+
+
+ );
+}
+
+export default CTA;
diff --git a/src/components/Download.tsx b/src/components/Download.tsx
index 8a9347f..a99f102 100644
--- a/src/components/Download.tsx
+++ b/src/components/Download.tsx
@@ -82,7 +82,7 @@ function DownloadButton({ value }: DownloadButtonProps) {
}}
className="h-9 px-3 rounded-lg flex items-center gap-2 text-sm font-medium transition"
>
-
+
{value.label}
);
diff --git a/src/components/FAQ.tsx b/src/components/FAQ.tsx
new file mode 100644
index 0000000..8c516e2
--- /dev/null
+++ b/src/components/FAQ.tsx
@@ -0,0 +1,64 @@
+import { getTranslations } from "next-intl/server";
+
+interface FAQItem {
+ question: string;
+ answer: string;
+}
+
+export default async function FAQ() {
+ const t = await getTranslations("Home.faq");
+ const faqs: FAQItem[] = t.raw("items") as FAQItem[];
+ return (
+
+
+ {/* Header */}
+
+
+ {t("title")}
+
+
+
+ {t("description")}
+
+
+
+ {/* FAQ list */}
+
+ {faqs.map((faq, index) => (
+
+
+
+ {faq.question}
+
+
+ {/* Plus / Minus */}
+
+
+
+
+
+
+
+
+ {faq.answer}
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/src/components/HomePage.tsx b/src/components/HomePage.tsx
index 2d101f8..d3a1aae 100644
--- a/src/components/HomePage.tsx
+++ b/src/components/HomePage.tsx
@@ -7,6 +7,10 @@ import MockUpWithDesc from "@/components/MockUpWithDesc";
import Metrics from "@/components/Metrics";
import SocialMediaCTA from "@/components/SocialMediaCTA";
import MacMockDesc from "@/components/MacMockDesc";
+import FAQ from "./FAQ";
+import CTA from "./CTA";
+import PictoPyText from "./PictpPyText";
+import Footer from "./ui/Footer";
export default function HomePage() {
return (
@@ -18,6 +22,10 @@ export default function HomePage() {
+
+
+
+
>
);
}
diff --git a/src/components/PictpPyText.tsx b/src/components/PictpPyText.tsx
new file mode 100644
index 0000000..121f855
--- /dev/null
+++ b/src/components/PictpPyText.tsx
@@ -0,0 +1,14 @@
+export default function PictoPyText() {
+ return (
+
+
+ PictoPy
+
+
+ );
+}
diff --git a/src/components/ShuffleGrid.tsx b/src/components/ShuffleGrid.tsx
index d14447b..cc7664b 100644
--- a/src/components/ShuffleGrid.tsx
+++ b/src/components/ShuffleGrid.tsx
@@ -2,6 +2,7 @@
import { motion } from "framer-motion";
import { useEffect, useRef, useState } from "react";
import { squareData } from "@/const/const";
+import Image from "next/image";
const shuffle = (array: (typeof squareData)[0][]) => {
let currentIndex = array.length,
@@ -20,7 +21,6 @@ const shuffle = (array: (typeof squareData)[0][]) => {
return array;
};
-
const ShuffleGrid = () => {
const timeoutRef = useRef | null>(null);
const [squares, setSquares] = useState(squareData);
@@ -49,13 +49,18 @@ const ShuffleGrid = () => {
initial={{ opacity: 0, scale: 0.9 }}
animate={{ opacity: 0.1, scale: 1 }}
transition={{ duration: 1.5, type: "spring" }}
- className="w-full h-full"
- style={{
- backgroundImage: `url(${sq.src})`,
- backgroundSize: "cover",
- }}
- />
- ))}{" "}
+ className="w-full h-full relative overflow-hidden"
+ >
+
+
+ ))}
{squares.map((sq) => (
@@ -65,13 +70,18 @@ const ShuffleGrid = () => {
initial={{ opacity: 0, scale: 0.9 }}
animate={{ opacity: 0.1, scale: 1 }}
transition={{ duration: 1.5, type: "spring" }}
- className="w-full h-full"
- style={{
- backgroundImage: `url(${sq.src})`,
- backgroundSize: "cover",
- }}
- />
- ))}{" "}
+ className="w-full h-full relative overflow-hidden"
+ >
+
+
+ ))}
>
);
diff --git a/src/components/ui/Footer.tsx b/src/components/ui/Footer.tsx
new file mode 100644
index 0000000..f12e062
--- /dev/null
+++ b/src/components/ui/Footer.tsx
@@ -0,0 +1,164 @@
+import { Mail } from "lucide-react";
+import { getTranslations } from "next-intl/server";
+import { FaDiscord, FaGithub, FaYoutube, FaLinkedinIn } from "react-icons/fa";
+import { FiLink } from "react-icons/fi";
+import { SiX } from "react-icons/si";
+
+async function Footer() {
+ const t = await getTranslations("Home");
+ const footerLinks = [
+ {
+ title: t("footer.product"),
+ links: [
+ { name: t("footer.software"), link: "#" },
+ { name: t("footer.website"), link: "#" },
+ ],
+ },
+ {
+ title: t("footer.parentOrg"),
+ links: [
+ { name: "AOSSIE", link: "#" },
+ { name: "GitHub", link: "#" },
+ ],
+ },
+ {
+ title: t("footer.contribute"),
+ links: [
+ { name: t("footer.designTools"), link: "#" },
+ { name: t("footer.developerTools"), link: "#" },
+ ],
+ },
+ {
+ title: t("footer.projects"),
+ links: [
+ { name: "Resonate", link: "#" },
+ { name: "EduAid", link: "#" },
+ ],
+ },
+ {
+ title: t("footer.community"),
+ links: [
+ { name: t("footer.communityStories"), link: "#" },
+ { name: t("footer.ambassadors"), link: "#" },
+ ],
+ },
+ ];
+ return (
+
+ );
+}
+
+export default Footer;
diff --git a/src/components/ui/Navbar.tsx b/src/components/ui/Navbar.tsx
index a944128..1390b62 100644
--- a/src/components/ui/Navbar.tsx
+++ b/src/components/ui/Navbar.tsx
@@ -35,19 +35,19 @@ const Navbar: React.FC = () => {
const navItems = [
{
label: tN("documentation"),
- href: "/documentation",
+ href: "#",
},
{
label: tN("contribute"),
- href: "/contribute",
+ href: "#",
},
{
label: tN("aboutUs"),
- href: "/about",
+ href: "#",
},
{
label: tN("contact"),
- href: "/contact",
+ href: "#",
},
];
useEffect(() => {
@@ -115,7 +115,7 @@ const Navbar: React.FC = () => {
className="h-9 px-3 rounded-lg flex items-center gap-2 text-sm font-medium transition"
>
-
+
Download
diff --git a/src/index.css b/src/index.css
index aefabcb..d0815bf 100644
--- a/src/index.css
+++ b/src/index.css
@@ -4,9 +4,6 @@
@custom-variant dark (&:where(.dark, .dark *));
-body {
- font-family: "Inter", sans-serif;
-}
@theme {
--color-bg: var(--bg);
diff --git a/src/messages/en.json b/src/messages/en.json
index 97c0c6e..2b5b8bb 100644
--- a/src/messages/en.json
+++ b/src/messages/en.json
@@ -95,6 +95,49 @@
"description": "Check out our YouTube channel to learn about PictoPy and even more projects.",
"button": "Subscribe"
}
+ },
+
+ "faq": {
+ "title": "PictoPy FAQs",
+ "description": "Everything you need to know about PictoPy's smart photo organization and AI-powered tagging features.",
+ "items": [
+ {
+ "question": "What is PictoPy?",
+ "answer": "PictoPy is an intelligent photo management application that uses advanced AI to automatically tag and organize your photos based on detected objects, faces, and scenes. It's designed to make your photo collection searchable and easily accessible while maintaining your privacy."
+ },
+ {
+ "question": "How does the smart tagging feature work?",
+ "answer": "Our smart tagging system uses AI-powered object detection and facial recognition to analyze your photos. It automatically identifies people, objects, scenes, and activities in your images, creating searchable tags without requiring manual input. All processing happens on your device for maximum privacy."
+ },
+ {
+ "question": "Is my privacy protected when using PictoPy?",
+ "answer": "Absolutely. PictoPy is built with a privacy-first approach. All image analysis and processing is performed locally on your device, and your photos never leave your control unless you explicitly choose to share them. We don't store or access your photos on our servers."
+ },
+ {
+ "question": "What platforms does PictoPy support?",
+ "answer": "PictoPy is designed for cross-platform compatibility. It's available on iOS, Android, macOS, and Windows, allowing you to manage your photo collection seamlessly across all your devices with synchronization options that respect your privacy preferences."
+ }
+ ]
+ },
+
+ "cta": {
+ "title": "Take the powerful way.",
+ "description": "Download and use PictoPy for free."
+ },
+
+ "footer": {
+ "product": "Product",
+ "software": "Software",
+ "website": "Website",
+ "parentOrg": "Parent Org",
+ "contribute": "Contribute",
+ "designTools": "Design Tools",
+ "developerTools": "Developer Tools",
+ "projects": "Projects",
+ "community": "Community",
+ "communityStories": "Community Stories",
+ "ambassadors": "Ambassadors",
+ "madeWith": "Made with тЩе by AOSSIE Community"
}
},
diff --git a/src/messages/hi.json b/src/messages/hi.json
index 02bb5da..67c5eef 100644
--- a/src/messages/hi.json
+++ b/src/messages/hi.json
@@ -96,6 +96,49 @@
"description": "PictoPy рдФрд░ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ YouTube рдЪреИрдирд▓ рджреЗрдЦреЗрдВред",
"button": "рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВ"
}
+ },
+
+ "faq": {
+ "title": "PictoPy рдХреЗ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓",
+ "description": "PictoPy рдХреА рд╕реНрдорд╛рд░реНрдЯ рдлреЛрдЯреЛ рдСрд░реНрдЧрдирд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ AI-рд╕рдВрдЪрд╛рд▓рд┐рдд рдЯреИрдЧрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рдпрд╣рд╛рдБ рдорд┐рд▓реЗрдЧрд╛ред",
+ "items": [
+ {
+ "question": "PictoPy рдХреНрдпрд╛ рд╣реИ?",
+ "answer": "PictoPy рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдлреЛрдЯреЛ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдЬреЛ рдПрдбрд╡рд╛рдВрд╕реНрдб AI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╡рд╕реНрддреБрдУрдВ, рдЪреЗрд╣рд░реЛрдВ рдФрд░ рджреГрд╢реНрдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдХрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЖрдк рдЯреИрдЧ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдЖрдкрдХреА рдлреЛрдЯреЛ рдХрд▓реЗрдХреНрд╢рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреЛрдЬрдиреЗ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЖрдкрдХреА рдЧреЛрдкрдиреАрдпрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред"
+ },
+ {
+ "question": "рд╕реНрдорд╛рд░реНрдЯ рдЯреИрдЧрд┐рдВрдЧ рдлреАрдЪрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?",
+ "answer": "рд╣рдорд╛рд░рд╛ рд╕реНрдорд╛рд░реНрдЯ рдЯреИрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AI-рд╕рдВрдЪрд╛рд▓рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдФрд░ рдлреЗрд╕ рд░рд┐рдХрдЧреНрдирд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рд▓реЛрдЧреЛрдВ, рд╡рд╕реНрддреБрдУрдВ, рджреГрд╢реНрдпреЛрдВ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдкрд╣рдЪрд╛рдирдХрд░ рдЦреЛрдЬрдиреЗ рдпреЛрдЧреНрдп рдЯреИрдЧ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯреИрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред рдЖрдкрдХреА рдЕрдзрд┐рдХрддрдо рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЖрдкрдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╣реА рд╣реЛрддреА рд╣реИред"
+ },
+ {
+ "question": "рдХреНрдпрд╛ PictoPy рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╕рдордп рдореЗрд░реА рдЧреЛрдкрдиреАрдпрддрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рддреА рд╣реИ?",
+ "answer": "рдмрд┐рд▓реНрдХреБрд▓ред PictoPy рдХреЛ рдкреНрд░рд╛рдЗрд╡реЗрд╕реА-рдлрд░реНрд╕реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдЗрдореЗрдЬ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЖрдкрдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрдкрдХреА рддрд╕реНрд╡реАрд░реЗрдВ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЬрд╛рддреАрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рди рдЪреБрдиреЗрдВред рд╣рдо рдЖрдкрдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдЯреЛрд░ рдпрд╛ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред"
+ },
+ {
+ "question": "PictoPy рдХрд┐рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ?",
+ "answer": "PictoPy рдХреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ iOS, Android, macOS рдФрд░ Windows рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреА рдлреЛрдЯреЛ рдХрд▓реЗрдХреНрд╢рди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдореИрдиреЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдЖрдкрдХреА рдкреНрд░рд╛рдЗрд╡реЗрд╕реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред"
+ }
+ ]
+ },
+
+ "cta": {
+ "title": "рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрд░реАрдХреЗ рдХреЛ рдЕрдкрдирд╛рдПрдБред",
+ "description": "PictoPy рдХреЛ рдореБрдлрд╝реНрдд рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред"
+ },
+
+ "footer": {
+ "product": "рдЙрддреНрдкрд╛рдж",
+ "software": "рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░",
+ "website": "рд╡реЗрдмрд╕рд╛рдЗрдЯ",
+ "parentOrg": "рдореВрд▓ рд╕рдВрдЧрдарди",
+ "contribute": "рдпреЛрдЧрджрд╛рди рдХрд░реЗрдВ",
+ "designTools": "рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреВрд▓реНрд╕",
+ "developerTools": "рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓реНрд╕",
+ "projects": "рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕",
+ "community": "рд╕рдореБрджрд╛рдп",
+ "communityStories": "рд╕рдореБрджрд╛рдп рдХреА рдХрд╣рд╛рдирд┐рдпрд╛рдБ",
+ "ambassadors": "рдПрдВрдмреЗрд╕рдбрд░",
+ "madeWith": "AOSSIE Community рджреНрд╡рд╛рд░рд╛ тЩе рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛"
}
},