diff --git a/public/images/home/hero-1200.jpg b/public/images/home/hero-1200.jpg new file mode 100644 index 00000000..dc4e1257 Binary files /dev/null and b/public/images/home/hero-1200.jpg differ diff --git a/public/images/home/hero-1200.webp b/public/images/home/hero-1200.webp new file mode 100644 index 00000000..9b61105f Binary files /dev/null and b/public/images/home/hero-1200.webp differ diff --git a/public/images/home/hero-1600.jpg b/public/images/home/hero-1600.jpg new file mode 100644 index 00000000..4b67e24b Binary files /dev/null and b/public/images/home/hero-1600.jpg differ diff --git a/public/images/home/hero-1600.webp b/public/images/home/hero-1600.webp new file mode 100644 index 00000000..c60a6de2 Binary files /dev/null and b/public/images/home/hero-1600.webp differ diff --git a/public/images/home/hero-2048.jpg b/public/images/home/hero-2048.jpg new file mode 100644 index 00000000..afaef28e Binary files /dev/null and b/public/images/home/hero-2048.jpg differ diff --git a/public/images/home/hero-2048.webp b/public/images/home/hero-2048.webp new file mode 100644 index 00000000..3cc57544 Binary files /dev/null and b/public/images/home/hero-2048.webp differ diff --git a/public/images/home/hero-960.jpg b/public/images/home/hero-960.jpg new file mode 100644 index 00000000..c75be638 Binary files /dev/null and b/public/images/home/hero-960.jpg differ diff --git a/public/images/home/hero-960.webp b/public/images/home/hero-960.webp new file mode 100644 index 00000000..50915b05 Binary files /dev/null and b/public/images/home/hero-960.webp differ diff --git a/public/images/home/og-home.jpg b/public/images/home/og-home.jpg new file mode 100644 index 00000000..e40e59e1 Binary files /dev/null and b/public/images/home/og-home.jpg differ diff --git a/public/images/home/press/aljazeera-upscrolled.jpg b/public/images/home/press/aljazeera-upscrolled.jpg new file mode 100644 index 00000000..74e5909d Binary files /dev/null and b/public/images/home/press/aljazeera-upscrolled.jpg differ diff --git a/public/images/home/press/aljazeera-upscrolled.webp b/public/images/home/press/aljazeera-upscrolled.webp new file mode 100644 index 00000000..ddaa720f Binary files /dev/null and b/public/images/home/press/aljazeera-upscrolled.webp differ diff --git a/public/images/home/press/eureports-barcelona.jpg b/public/images/home/press/eureports-barcelona.jpg new file mode 100644 index 00000000..8e3f2ce9 Binary files /dev/null and b/public/images/home/press/eureports-barcelona.jpg differ diff --git a/public/images/home/press/eureports-barcelona.webp b/public/images/home/press/eureports-barcelona.webp new file mode 100644 index 00000000..644ae663 Binary files /dev/null and b/public/images/home/press/eureports-barcelona.webp differ diff --git a/public/images/home/press/ssir-tech-against-genocide.jpg b/public/images/home/press/ssir-tech-against-genocide.jpg new file mode 100644 index 00000000..08299c73 Binary files /dev/null and b/public/images/home/press/ssir-tech-against-genocide.jpg differ diff --git a/public/images/home/press/ssir-tech-against-genocide.webp b/public/images/home/press/ssir-tech-against-genocide.webp new file mode 100644 index 00000000..15d5a485 Binary files /dev/null and b/public/images/home/press/ssir-tech-against-genocide.webp differ diff --git a/public/images/home/press/techcrunch-launch.jpg b/public/images/home/press/techcrunch-launch.jpg new file mode 100644 index 00000000..cac9d0fe Binary files /dev/null and b/public/images/home/press/techcrunch-launch.jpg differ diff --git a/public/images/home/press/techcrunch-launch.webp b/public/images/home/press/techcrunch-launch.webp new file mode 100644 index 00000000..413d811f Binary files /dev/null and b/public/images/home/press/techcrunch-launch.webp differ diff --git a/public/images/home/press/techtimes-rally.jpg b/public/images/home/press/techtimes-rally.jpg new file mode 100644 index 00000000..71bc779f Binary files /dev/null and b/public/images/home/press/techtimes-rally.jpg differ diff --git a/public/images/home/press/techtimes-rally.webp b/public/images/home/press/techtimes-rally.webp new file mode 100644 index 00000000..c2fb4a24 Binary files /dev/null and b/public/images/home/press/techtimes-rally.webp differ diff --git a/public/images/home/press/trt-world.jpg b/public/images/home/press/trt-world.jpg new file mode 100644 index 00000000..2402b9de Binary files /dev/null and b/public/images/home/press/trt-world.jpg differ diff --git a/public/images/home/press/trt-world.webp b/public/images/home/press/trt-world.webp new file mode 100644 index 00000000..1d7bc071 Binary files /dev/null and b/public/images/home/press/trt-world.webp differ diff --git a/public/llms.txt b/public/llms.txt index 7ca0381c..23508d01 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -6,6 +6,7 @@ Tech for Palestine's mission is to harness technology and human innovation for a ## Key pages +- [Homepage](https://techforpalestine.org/): The incubator behind 90+ projects for a free Palestine — headline portfolio outcomes, what T4P provides to projects, and press coverage. - [About](https://techforpalestine.org/about): Mission, founder, and organizational background. - [Donate](https://techforpalestine.org/donate): Support Tech for Palestine's work; donations are generally tax-deductible in the US. - [Incubator](https://techforpalestine.org/incubator): How the T4P Incubator supports early-stage advocacy projects with mentorship, volunteers, and funding. @@ -23,6 +24,22 @@ Tech for Palestine's mission is to harness technology and human innovation for a - [Entrepreneurs for Palestine](https://techforpalestine.org/e4p): A global community of founders and CEOs pledging to steer hiring, sourcing, and fundraising in support of Palestinian liberation. - [Legal & Financial Notice](https://techforpalestine.org/legal): 501(c)(3) status, EIN, and financial transparency. +## Scale + +- 90+ projects incubated +- 3,000+ volunteers worldwide +- 350+ Entrepreneurs for Palestine signatories +- 50+ Investors for Palestine + +## Selected portfolio outcomes + +- Upscrolled — 5M users in 7 months and #1 on the global App Store. A social platform with no shadowbans or algorithmic ranking. Launched and scaled through the T4P incubator. +- Boycat — $500M of products boycotted across 3M+ users. Scan a product for ethical compliance and find alternatives; the official BDS partner app. Connected to the BDS partnership by T4P. +- Find a Protest — 500k visits per week. Protest listings powered by organizers and volunteer data collectors. Refocused and volunteer-powered through T4P. +- Apricot — $1M+ paid to placed talent, connecting Middle Eastern and Palestinian refugee tech workers with US companies. Customer introductions and strategic refocus via T4P. +- Newscord — 40k+ messages sent to hold outlets accountable for biased reporting, plus AI news summaries across hundreds of sources. MVP refocused with T4P ecosystem partners. +- Thaura.ai — profitable, an ethical alternative to the major LLMs built around environmental, social, and privacy concerns. Launched via the T4P network. + ## Organization facts - Legal name: Tech for Palestine diff --git a/src/components/Footer.astro b/src/components/Footer.astro index f725b699..6d83d0c7 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -61,7 +61,7 @@ const footerNavigation: Record @@ -76,7 +76,7 @@ const footerNavigation: Record Support Our Work (
- - {category} - + {href ? ( + + {category} + + ) : ( +

{category}

+ )}
{links.map(([label, linkHref]) => ( Privacy Policy Terms of Service Legal & Financial
diff --git a/src/layouts/HomeLayout.astro b/src/layouts/HomeLayout.astro index 756d023e..3e795feb 100644 --- a/src/layouts/HomeLayout.astro +++ b/src/layouts/HomeLayout.astro @@ -1,6 +1,7 @@ --- import FooterSection from "../components/home/FooterSection.astro"; import { getEnv } from "../utils/getEnv"; +import { organizationSchema as organizationSchema_ } from "../utils/organizationSchema"; import "@fontsource/fraunces/latin-400.css"; import "@fontsource/outfit/latin-400.css"; import "@fontsource/outfit/latin-500.css"; @@ -43,35 +44,7 @@ const canonicalUrl = canonicalUrlOverride || new URL(normalizedPathname, Astro.site || "https://techforpalestine.org").toString(); -const organizationSchema = { - "@context": "https://schema.org", - "@type": "NonprofitOrganization", - "@id": "https://techforpalestine.org/#organization", - ...organizationSchemaExtra, - name: "Tech for Palestine", - url: "https://techforpalestine.org", - logo: "https://techforpalestine.org/t4p-social-logo.png", - taxID: "99-3441367", - address: { - "@type": "PostalAddress", - streetAddress: "548 Market St #266950", - addressLocality: "San Francisco", - addressRegion: "CA", - postalCode: "94104-5401", - addressCountry: "US", - }, - sameAs: [ - "https://www.instagram.com/techforpalestine", - "https://twitter.com/tech4palestine", - "https://github.com/TechForPalestine/", - "https://www.linkedin.com/company/techforpalestine/", - "https://infosec.exchange/@tech4palestine", - "https://www.youtube.com/@tech4palestine", - "https://techforpalestine.org/discord-invite", - "https://www.tiktok.com/@techforpalestine", - "https://bsky.app/profile/techforpalestine.org", - ], -}; +const organizationSchema = organizationSchema_(organizationSchemaExtra); --- diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index a818310b..76fa0bc7 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,6 +1,16 @@ --- import Navigation from "../components/Navigation.astro"; import Footer from "../components/Footer.astro"; +import { organizationSchema } from "../utils/organizationSchema"; +// ?url lets Vite resolve the content-hashed asset path for the preload hints. +import frauncesWoff2 from "@fontsource/fraunces/files/fraunces-latin-400-normal.woff2?url"; +import outfitWoff2 from "@fontsource/outfit/files/outfit-latin-400-normal.woff2?url"; +// Site fonts live in the layout (not per-page) so the shared Navigation and +// Footer render in the brand faces on every page, not just the homepage. +import "@fontsource/fraunces/latin-400.css"; +import "@fontsource/outfit/latin-400.css"; +import "@fontsource/outfit/latin-500.css"; +import "@fontsource/outfit/latin-600.css"; interface Props { title: string; description?: string; @@ -33,6 +43,9 @@ const canonicalUrl = new URL( {noindex && } + + + + + Skip to content + @@ -167,7 +186,7 @@ const canonicalUrl = new URL( ) } -
+