/* Axon.ps website kit — ProductOrbit, Process, Founder, Contact, Footer */ const PRODUCT_META = { plexus: { tag: 'Research', side: 'right', lead: true }, nowah: { tag: 'Government', side: 'left', reveal: true }, synap: { tag: 'Infrastructure', side: 'right' }, madar: { tag: 'Privacy', side: 'left', soon: true, reveal: true }, }; /* One product as a node on the central signal spine */ function ProductNode({ p, num }) { const m = PRODUCT_META[p.id]; const soon = !!m.soon; const reveal = !!m.reveal; const cls = ['pnode', m.side, m.lead ? 'lead' : '', (soon || reveal) ? 'dim' : '', 'fade-up'].filter(Boolean).join(' '); return (
{num} {reveal ? 'Awaiting reveal' : m.tag}
{p.name}{reveal && }
{reveal ? (

Kept under wraps — to be revealed when {p.name} is ready.

) : ( <>
{p.tagline}

{p.line}

)}
); } function ProductOrbit() { const reveal = useReveal(); const [plexus, nowah, synap, madar] = AXON_PRODUCTS; return (
Product ecosystem

One core. Four signals.

Four products, one shared core — the same intelligence and engineering, tuned to a different field. Synap is the studio's local-AI infrastructure layer.

{/* the signal spine threading all four products as nodes of one system */}
{/* origin — the Axon core */}
AXON CORE · SHARED INTELLIGENCE
{/* terminus — closes the system */}
ONE TEAM · ONE CORE · ONE SYSTEM
); } function Process() { const reveal = useReveal(); const STEPS = [ { num: '01', title: 'Discovery', desc: 'Understand the problem, map the constraints, define the scope.' }, { num: '02', title: 'Architecture', desc: 'Design the system — data flow, stack choices, integration points.' }, { num: '03', title: 'Build', desc: 'Execute with precision. Iterative delivery, continuous feedback.' }, { num: '04', title: 'Launch & support', desc: 'Ship to production. Monitor, optimize, and iterate.' }, ]; return (
Process

How a system gets built.

{STEPS.map((s, i) => (
{s.num}

{s.title}

{s.desc}

))}
); } function Founder() { const reveal = useReveal(); const [open, setOpen] = React.useState(null); const TEAM = [ { id: 'tareq', name: 'Tareq Sartawi', role: 'Founder & Product Builder', initial: 'T', photo: 'assets/tareq.jpg', bio: "Computer Science graduate and founder of Axon.ps. He has worked across software projects, companies, and independent products — including Menha.ps — building practical systems, workflows, and AI-driven tools from Palestine, for the world.", filled: true }, { id: 'laith', name: 'Laith Sarsour', role: 'Strategy & Partnerships Advisor', initial: 'L', photo: 'assets/laith.jpg', bio: "Laith Sarsour is a strategy and partnerships advisor at Axon, contributing to project direction, partnerships, and impact-driven innovation. With experience in program design, resource mobilization, humanitarian response, and sustainable livelihoods across Palestine, he helps shape practical solutions that connect real needs with accountable systems.", filled: true }, { id: 'mohammad', name: 'Mohammad Salah', role: 'Legal, Finance & Relations Advisor', initial: 'M', photo: 'assets/mohammad.jpg', bio: "Mohammad Salah is a member of the Axon team, supporting the studio’s legal, financial, and public relations direction. He helps strengthen the structure behind Axon’s projects through practical advisory work, clear coordination, and responsible decision support.", filled: true }, ]; const active = TEAM.find(t => t.id === open); return (
Our team

The people behind the signal.

We don't just build software — we build the infrastructure that makes your work smarter. A small studio, deliberately.

{TEAM.map(t => ( ))}
{active && (
{active.photo ? {active.name} : active.initial}
{active.name} {active.role}

{active.bio}

)}
); } /* Studio ethos — the founding principle, in Arabic, as a centered manuscript centerpiece. Its own calm moment; a different axis from the founder quote. */ function ArabicEthos() { const reveal = useReveal(); return (

نحن نبتكر لكي نكون شريكًا في إبداعك، لا بديلًا عن وجودك.

“We innovate to be a partner in your creativity — not a replacement for your presence.”

مبدأ التأسيس
); } function Contact() { const [sent, setSent] = React.useState(false); const [mailtoHref, setMailtoHref] = React.useState('mailto:info@axon.ps'); const onSubmit = (e) => { e.preventDefault(); const fd = new FormData(e.currentTarget); const name = (fd.get('name') || '').toString().trim(); const email = (fd.get('email') || '').toString().trim(); const message = (fd.get('message') || '').toString().trim(); const subject = encodeURIComponent('New project enquiry' + (name ? ' — ' + name : '')); const body = encodeURIComponent( 'Name: ' + name + '\n' + 'Email: ' + email + '\n\n' + 'Project:\n' + message + '\n\n' + '— Sent from axon.ps' ); const href = 'mailto:info@axon.ps?subject=' + subject + '&body=' + body; setMailtoHref(href); // open the user's email client with the message prefilled (frontend-only, no backend) window.location.href = href; setSent(true); }; return (
{/* faint structural core echo, top-right — not pattern wallpaper */}
There has never been a better time in history to do it; it's the golden age. You and your agents can build a giant company.
Boris Cherny — Founder, Claude Code
Start a project 04 — Invitation

Bring us the problem that doesn't fit the template.

Whether it's a research platform, an automation layer, or sovereign AI on your own hardware — tell us what you're building, and we'll take it from there.

Emailinfo@axon.ps
StudioPalestine · Available globally
{sent ? (
Your message is ready to send.

Your email app should have opened with the message addressed to info@axon.ps. If it didn't, send it to us directly:

info@axon.ps
) : (
Project brief 01 — 03
Opens your email app, ready to send.
)}
); } function Footer() { return ( ); } Object.assign(window, { ProductOrbit, Process, Founder, ArabicEthos, Contact, Footer });