Modern church website built with Next.js App Router, React, TailwindCSS, and shadcn/ui style components.
This project powers the public website for Redemption Apostolic Church.
Key goals:
- Fast, responsive marketing site
- Modern UI components
- SEO-ready metadata (Open Graph, Twitter cards, canonical URLs)
- Search-engine readiness (robots + sitemap)
- Next.js (App Router)
- React
- Tailwind CSS
- Radix UI / shadcn-style UI primitives
npm installnpm run devThen open:
npm run build
npm run startCreate a .env.local file in the project root if you need to override defaults:
- Purpose: Base URL used for canonical URLs, Open Graph URLs, robots sitemap URL, and sitemap generation.
- Example:
NEXT_PUBLIC_SITE_URL=https://your-domain.com- Purpose: Google Search Console verification token.
- Example:
NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION=your_verification_tokenThe site uses Next.js Metadata APIs and per-route metadata:
-
Global metadata:
app/layout.tsxmetadataBase- OpenGraph
- Twitter card
- icons / favicons
- Google verification (when env var is provided)
-
Canonical URLs
- Static pages export
metadata.alternates.canonical - Dynamic routes use
generateMetadatato set:- canonical URL
- OpenGraph and Twitter
images
- Static pages export
- Sitemap:
app/sitemap.ts(generated fromNEXT_PUBLIC_SITE_URL) - Robots:
app/robots.ts(includes absolute sitemap URL)
Static assets live in:
public/public/images/
Key brand assets:
public/logo.png(RAC logo)public/k-logo.png(Kawerify Tech logo)
The site is configured with images.unoptimized = true in next.config.mjs, so Next.js image optimization is disabled.
The home hero includes a smart typeahead branch search:
- Suggests featured branches when empty
- Suggests matching branches as you type
- Keyboard navigation (Up/Down/Enter/Esc)
- Navigates directly to a branch detail page or to
/branches?q=...
Branch summary data is centralized in:
lib/branches-data.ts
app/- Next.js routes (App Router)components/- UI sections and reusable componentslib/- shared utilities and shared datapublic/- static assets
- TypeScript type-checking is skipped during build (see
next.config.mjs). - If you enable strict type-checking later, run:
npm run lintPrivate/internal project.