A premium, searchable Islamic history website focused on the Companions of the Prophet Muhammad (peace be upon him). Built with Next.js, TypeScript, Tailwind CSS, and shadcn/ui.
npm install
npm run devOpen http://localhost:3000 to view the site.
# Production build
npm run build && npm startsrc/
├── app/ # Next.js App Router pages
│ ├── page.tsx # Homepage
│ ├── companions/ # Directory + [slug] profiles
│ ├── battles/ # Explorer + [slug] details
│ ├── caliphs/ # Four Caliphs page
│ ├── ten-promised/ # Ten Promised Jannah page
│ ├── timeline/ # Visual timeline
│ ├── topics/ # Topic exploration
│ ├── about/ # About & Methodology
│ └── search/ # Search results
├── components/
│ ├── ui/ # shadcn/ui primitives
│ ├── layout/ # Navbar, Footer, ThemeProvider
│ ├── shared/ # Reusable components (cards, tabs, etc.)
│ └── motion/ # Animation wrappers
├── data/
│ ├── companions/ # One JSON file per companion
│ ├── battles/ # One JSON file per battle
│ ├── topics.json # Topic categories
│ └── timeline-events.json
├── lib/ # Data loading, search, constants, SEO
├── types/ # TypeScript interfaces
└── hooks/ # Client-side hooks
- Companions:
src/data/companions/*.json— one file per companion - Battles:
src/data/battles/*.json— one file per battle - Timeline:
src/data/timeline-events.json - Topics:
src/data/topics.json
- Create a new JSON file in
src/data/companions/(e.g.,bilal-ibn-rabah.json) - Follow the schema in
src/types/companion.ts— key fields:id,slug,nameArabic,nameEnglish,fullNameisCaliph,isAsharaMubasharah,isEarlyConvert,isBadrVeteran,isMuhajirtabs— 11 content sections, each withContentBlock[]battleParticipation— links to battle slugssortOrder— controls display order
- Each
ContentBlockhas astatus:"verified","reported", or"pending" - The companion automatically appears in directory, search, and related sections
- Create a new JSON file in
src/data/battles/(e.g.,yarmouk.json) - Follow the schema in
src/types/battle.ts - Link companions via
companionSlugsandnotableParticipants - The battle automatically appears in the explorer and search
Every piece of content carries a verification status:
verified— Sourced from reliable, widely-accepted referencesreported— Mentioned in some sources; displayed with a notepending— Not yet fully sourced; shown with placeholder text
- Next.js 16 with App Router (full static generation)
- TypeScript for type safety
- Tailwind CSS v4 with custom cream/green Islamic theme
- shadcn/ui component library
- Fuse.js for client-side fuzzy search
- Motion (Framer Motion) for subtle animations
- Lucide icons
- next-themes for dark/light mode
10 Companions (The Ten Promised Paradise): Abu Bakr, Umar, Uthman, Ali, Talha, Al-Zubayr, Abdur-Rahman ibn Awf, Sa'd ibn Abi Waqqas, Sa'id ibn Zayd, Abu Ubayda ibn Al-Jarrah
6 Battles: Badr, Uhud, Khandaq, Khaybar, Hunayn, Tabuk
22 Timeline Events: From the first revelation (610 CE) through the Caliphate of Ali (656 CE)
The site is fully statically generated. Deploy to Vercel, Netlify, or any static hosting:
npm run build
# Output in .next/ — or use `next export` for static HTML