An interactive educational resource about Jewish history, identity, Israel, and modern antisemitism.
Visit the live site | Explore the topics
Fight Antisemitism, presented publicly as About Jews, is a source-oriented learning platform built to make a difficult and often distorted subject easier to explore. It combines historical context, clear definitions, interactive experiences, and links to supporting material in one accessible application.
The project is designed for readers who want to understand Jewish history and identity, examine common misconceptions, and recognize how antisemitic narratives develop and spread.
- Interactive timeline: Browse historical events through a synchronized timeline, map, and date controls.
- Definitions: Learn the meaning and context of terms frequently used in discussions about Jews, Judaism, Israel, Zionism, and antisemitism.
- Misconceptions: Review common claims and follow the supporting context and source links.
- Conspiracy theories: Examine recurring antisemitic narratives, their framing, and their historical patterns.
- Public rhetoric: Read source-linked profiles and examples of rhetoric that contributes to antisemitism.
- Talmud references: Explore responses to frequently circulated claims about Jewish texts.
- Guided presentations: Move through visual, structured lessons on Jewish history.
- Reader accounts: Track reading progress, manage a profile, and submit questions to the project.
The application uses a React and Vite frontend with an Express API. MySQL stores editorial content, accounts, reading progress, questions, and page-view data. In production, Express serves both the compiled frontend and the API from a single service.
Browser
|-- React 19 + React Router + Vite
|-- Leaflet maps and interactive learning components
|
Express API
|-- Content, authentication, progress, and contact endpoints
|
MySQL
|-- Source-backed content and application data
- Node.js 20.19 or newer
- npm
- A MySQL database
-
Clone the repository and install dependencies:
git clone https://github.com/aribradshaw/FightAntisemitism.git cd FightAntisemitism npm install -
Copy
.env.exampleto.env, then add your MySQL credentials:DB_HOST=your_database_host DB_USER=your_database_user DB_PASSWORD=your_database_password DB_NAME=your_database_name
-
Create and seed the database:
npm run db:schema npm run db:seed
-
Start the frontend and API together:
npm run dev
-
Open http://localhost:5173. The API runs on port
3001by default and Vite proxies/apirequests to it.
Contact-form email and reCAPTCHA configuration are optional for basic local development. See reCAPTCHA setup and contact email setup when working on those features.
| Command | Purpose |
|---|---|
npm run dev |
Run the Vite frontend and Express API |
npm run build |
Create a production frontend build in dist/ |
npm start |
Start the Express server |
npm run lint |
Run ESLint across the project |
npm run db:schema |
Create the database schema |
npm run db:seed |
Seed all editorial content |
npm run db:seed:<section> |
Seed one content section, such as timeline or definitions |
database/ Schema, migrations, source data, and seed scripts
docs/ Configuration guides for integrated services
public/ Static images, maps, and geographic data
server/ Express API, authentication, and production server
src/ React pages, components, contexts, and client data
Most database-backed editorial content lives in database/data/. After editing a content file, run the matching seed command to update the database. Some interface-specific data also lives in src/data/.
The production application is deployed as a Node.js service and is available at antisemitism.hashem.faith. Railway configuration is included in railway.toml, with /api/healthz used as the service health check.
See DEPLOY.md for required environment variables, Railway setup, production checks, and database connectivity troubleshooting.
This repository addresses sensitive historical, religious, and political subjects. Contributions should be precise, respectful, and supported by credible sources. When proposing content changes:
- Preserve the context of quotations and historical claims.
- Prefer primary sources and reputable scholarship where available.
- Include clear source labels and working URLs.
- Separate factual corrections from commentary or interpretation.
- Test relevant routes and database seeds before submitting changes.
See CONTRIBUTING.md for the review and development workflow.
This project is provided for educational purposes. External sources are linked so readers can review supporting material and reach their own informed conclusions.
Copyright © 2026 Ari Daniel Bradshaw. All rights reserved.