diff --git a/.env.example b/.env.example index cba2397..c6e783d 100644 --- a/.env.example +++ b/.env.example @@ -5,31 +5,28 @@ VITE_GA_MEASUREMENT_ID=G-XXXXXXXXXX VITE_ANALYTICS_ENABLED=true -# Contact Information +# Contact Information (canonical: src/content/siteContent.ts) VITE_CONTACT_EMAIL=info@mim4u.org -VITE_PHONE_NUMBER=+15551234567 -VITE_ADDRESS="123 Community Way, Hometown, ST 12345" +VITE_PHONE_NUMBER=+18184916884 +VITE_ADDRESS="Los Angeles County, California" # Donation Processing -VITE_DONATION_ENDPOINT=https://api.donation-processor.com/v1 -VITE_PAYPAL_CLIENT_ID=your_paypal_client_id -VITE_STRIPE_PUBLISHABLE_KEY=pk_test_your_stripe_key +VITE_DONATION_ENDPOINT= +VITE_PAYPAL_CLIENT_ID= +VITE_STRIPE_PUBLISHABLE_KEY= # Organization Details -VITE_EIN=12-3456789 -VITE_ORG_NAME="Miracles In Motion" -VITE_ORG_DESCRIPTION="A 501(c)3 non-profit providing essentials for student success" +VITE_EIN=33-4887159 +VITE_ORG_NAME="Miracles in Motion Foundation" +VITE_ORG_DESCRIPTION="Restoring hope through compassion, community, and faith. Serving Los Angeles County." -# Social Media -VITE_FACEBOOK_URL=https://facebook.com/miraclesinmotion -VITE_INSTAGRAM_URL=https://instagram.com/miraclesinmotion -VITE_TWITTER_URL=https://twitter.com/miraclesinmotion -VITE_LINKEDIN_URL=https://linkedin.com/company/miraclesinmotion +# Social Media (canonical Instagram: siteContent SOCIAL) +VITE_INSTAGRAM_URL=https://www.instagram.com/miraclesinmotionfoundation -# API Endpoints -VITE_API_BASE_URL=https://api.miraclesinmotion.org -VITE_VOLUNTEER_FORM_URL=https://forms.miraclesinmotion.org/volunteer -VITE_CONTACT_FORM_URL=https://forms.miraclesinmotion.org/contact +# API Endpoints (set when backend is deployed on mim4u.org) +VITE_API_BASE_URL= +VITE_VOLUNTEER_FORM_URL= +VITE_CONTACT_FORM_URL= # Feature Flags VITE_ENABLE_CHAT=false @@ -38,9 +35,4 @@ VITE_ENABLE_EVENTS=true VITE_ENABLE_BLOG=false # Optional chat API override -# Default is same-origin /api/ai/chat via nginx proxy on the web container. -# VITE_CHAT_API_BASE_URL=https://mim4u.org - -# Development -VITE_DEV_MODE=true -VITE_LOG_LEVEL=info +# VITE_CHAT_API_URL= diff --git a/api/src/ai/chat.ts b/api/src/ai/chat.ts index 108c19a..796d773 100644 --- a/api/src/ai/chat.ts +++ b/api/src/ai/chat.ts @@ -62,7 +62,7 @@ function normalizeMessages(messages: ChatMessage[] | undefined): ChatMessage[] { function buildSystemPrompt(pagePath: string): string { return [ 'You are the Miracles in Motion website assistant for MIM4U.', - 'Answer as a warm, concise concierge for a nonprofit that supports students with school supplies, clothing, shoes, emergency support, volunteer coordination, donations, and sponsorships.', + 'Answer as a warm, concise concierge for Miracles in Motion Foundation — a faith-centered nonprofit serving Los Angeles County with outreach, emergency assistance, resource navigation, wellness support, volunteer coordination, donations, and corporate partnerships.', 'Use only the provided context and the user messages. If you are unsure, say so and direct the user to info@mim4u.org.', 'Keep replies practical and short. Prefer bullets only when they improve clarity.', 'When relevant, guide users to these routes: #/donate, #/volunteers, #/request-assistance, #/impact, #/stories.', diff --git a/index.html b/index.html index d5d5059..1028f1a 100644 --- a/index.html +++ b/index.html @@ -16,13 +16,13 @@ - + - + diff --git a/package.json b/package.json index 555c29e..d74dcf2 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "type": "git", "url": "https://github.com/Miracles-In-Motion/public-web.git" }, - "homepage": "https://miraclesinmotion.org", + "homepage": "https://mim4u.org", "dependencies": { "@fontsource/inter": "^5.2.8", "@fontsource/playfair-display": "^5.2.8", diff --git a/public/brand/MIM4U-Brand-Kit.zip b/public/brand/MIM4U-Brand-Kit.zip index dd89bfb..fe9d2e5 100644 Binary files a/public/brand/MIM4U-Brand-Kit.zip and b/public/brand/MIM4U-Brand-Kit.zip differ diff --git a/public/brand/logo-symbol-1024.png b/public/brand/logo-symbol-1024.png index aacf27a..3c05b65 100644 Binary files a/public/brand/logo-symbol-1024.png and b/public/brand/logo-symbol-1024.png differ diff --git a/public/site.webmanifest b/public/site.webmanifest index c95df33..9252dd8 100644 --- a/public/site.webmanifest +++ b/public/site.webmanifest @@ -1,7 +1,7 @@ { - "name": "Miracles In Motion Foundation", + "name": "Miracles in Motion Foundation", "short_name": "MiM", - "description": "A 501(c)3 non-profit providing essentials for student success", + "description": "Restoring hope through compassion, community, and faith. Serving Los Angeles County.", "start_url": "/", "display": "standalone", "background_color": "#1a3c34", @@ -26,7 +26,7 @@ "purpose": "any" } ], - "categories": ["education", "social", "non-profit"], + "categories": ["non-profit", "social", "charity"], "lang": "en-US", "dir": "ltr", "orientation": "portrait-primary", diff --git a/src/App.tsx b/src/App.tsx index 71ec76f..a524447 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -501,7 +501,7 @@ function SEOHead({ title, description, image }: { title?: string, description?: updateOGTag('og:title', title || `${SITE.name} — ${SITE.brandMessage}`) updateOGTag('og:description', description || 'Faith-centered nonprofit bringing hope, outreach, emergency assistance, and wellness support to families in Los Angeles County.') - updateOGTag('og:image', image || '/og-image.jpg') + updateOGTag('og:image', image || `${SITE.url}/og-image.png`) updateOGTag('og:type', 'website') }, [title, description, image]) @@ -2659,7 +2659,7 @@ function AssistanceRequestPage() { required type="tel" className={`input ${errors['contactInfo.phone'] ? 'border-red-500 dark:border-red-400' : ''}`} - placeholder="(555) 123-4567" + placeholder={SITE.phone} value={formData.contactInfo.phone} onChange={(e) => { setFormData({ ...formData, contactInfo: { ...formData.contactInfo, phone: e.target.value } }) diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index eecaa7b..9833410 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -120,12 +120,7 @@ export function Footer() {

{SITE.name}

{SITE.legalStatus}

-

- EIN:{' '} - - {SITE.ein} - -

+

EIN: {SITE.ein}

© {new Date().getFullYear()} {SITE.shortName}. All rights reserved. Donations may be tax-deductible to the extent allowed by law. diff --git a/src/components/SEO/index.tsx b/src/components/SEO/index.tsx index 60ab6f7..fe0e61e 100644 --- a/src/components/SEO/index.tsx +++ b/src/components/SEO/index.tsx @@ -11,28 +11,28 @@ interface SEOProps { } export const SEO: React.FC = ({ - title = 'Miracles In Motion - Supporting Students in Need', - description = 'A 501(c)3 non-profit providing school supplies, clothing, and emergency assistance to students and families in need.', - keywords = ['nonprofit', 'charity', '501c3', 'student assistance', 'school supplies', 'donations'], - image = 'https://miraclesinmotion.org/og-image.png', - url = 'https://miraclesinmotion.org', + title = 'Miracles in Motion Foundation', + description = 'Restoring hope through compassion, community, and faith. Serving Los Angeles County with outreach, emergency assistance, and advocacy for families in crisis.', + keywords = ['nonprofit', 'charity', '501c3', 'miracles in motion', 'Los Angeles County', 'donations', 'volunteer'], + image = 'https://mim4u.org/og-image.png', + url = 'https://mim4u.org', type = 'website' }) => { const structuredData = { "@context": "https://schema.org", "@type": "Organization", - "name": "Miracles In Motion", + "name": "Miracles in Motion Foundation", "description": description, "url": url, - "logo": "https://miraclesinmotion.org/logo.png", + "logo": "https://mim4u.org/logo-symbol.png", "contactPoint": { "@type": "ContactPoint", - "telephone": "+1-555-123-4567", - "contactType": "Customer Service" + "telephone": "+1-818-491-6884", + "contactType": "Customer Service", + "email": "info@mim4u.org" }, "sameAs": [ - "https://facebook.com/miraclesinmotion", - "https://instagram.com/miraclesinmotion" + "https://www.instagram.com/miraclesinmotionfoundation" ] } @@ -62,7 +62,7 @@ export const SEO: React.FC = ({ {/* Additional Meta Tags */} - + ) diff --git a/src/components/payments/StripePaymentForm.tsx b/src/components/payments/StripePaymentForm.tsx index c301942..a990228 100644 --- a/src/components/payments/StripePaymentForm.tsx +++ b/src/components/payments/StripePaymentForm.tsx @@ -201,7 +201,7 @@ function PaymentForm({ amount, isRecurring = false, onSuccess, onError }: Paymen value={customerInfo.phone} onChange={(e) => setCustomerInfo(prev => ({ ...prev, phone: e.target.value }))} className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500" - placeholder="(555) 123-4567" + placeholder="(818) 491-6884" />

diff --git a/src/components/ui/LogoMark.tsx b/src/components/ui/LogoMark.tsx index 59bfc06..a81d922 100644 --- a/src/components/ui/LogoMark.tsx +++ b/src/components/ui/LogoMark.tsx @@ -50,10 +50,18 @@ export function LogoMark({ variant = 'nav', className = '' }: LogoMarkProps) { className={['logo-mark', 'logo-mark--footer', className].filter(Boolean).join(' ')} aria-hidden={true} > + = ({ children }) => // Mock user data based on email const mockUsers: Record = { - 'admin@miraclesinmotion.org': { + 'admin@mim4u.org': { id: '1', - email: 'admin@miraclesinmotion.org', + email: 'admin@mim4u.org', role: 'admin', name: 'Admin User', lastLogin: new Date(), permissions: ['all'] }, - 'volunteer@miraclesinmotion.org': { + 'volunteer@mim4u.org': { id: '2', - email: 'volunteer@miraclesinmotion.org', + email: 'volunteer@mim4u.org', role: 'volunteer', name: 'Volunteer User', lastLogin: new Date(), diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 8fd592f..c86e1f7 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -13,9 +13,9 @@ "settings": "Settings" }, "hero": { - "title": "Empowering Students with", - "titleHighlight": "Essential Support", - "subtitle": "A 501(c)(3) nonprofit providing students with school supplies, clothing, and emergency support to help them succeed in school and life.", + "title": "Restoring hope through", + "titleHighlight": "compassion & community", + "subtitle": "Miracles in Motion Foundation serves Los Angeles County with faith-centered outreach, emergency assistance, and wellness support for families in crisis.", "primaryButton": "Make a Donation", "secondaryButton": "Learn More", "stats": { @@ -88,11 +88,11 @@ }, "footer": { "mission": "Our Mission", - "missionText": "Empowering students with essential resources for educational success and personal growth.", + "missionText": "Restoring hope through compassion, community, and faith.", "quickLinks": "Quick Links", "contact": "Contact Info", - "address": "123 Hope Street, Education City, EC 12345", - "phone": "+1 (555) 123-4567", + "address": "Los Angeles County, California", + "phone": "(818) 491-6884", "email": "info@mim4u.org", "social": "Follow Us", "newsletter": "Newsletter", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 988e218..4bc6367 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -13,9 +13,9 @@ "settings": "Configuración" }, "hero": { - "title": "Empoderando Estudiantes con", - "titleHighlight": "Apoyo Esencial", - "subtitle": "Una organización sin fines de lucro 501(c)(3) que proporciona a los estudiantes útiles escolares, ropa y apoyo de emergencia para ayudarlos a tener éxito en la escuela y la vida.", + "title": "Restaurando la esperanza con", + "titleHighlight": "compasión y comunidad", + "subtitle": "Miracles in Motion Foundation sirve al condado de Los Ángeles con alcance centrado en la fe, asistencia de emergencia y apoyo de bienestar para familias en crisis.", "primaryButton": "Hacer una Donación", "secondaryButton": "Saber Más", "stats": { @@ -88,11 +88,11 @@ }, "footer": { "mission": "Nuestra Misión", - "missionText": "Empoderando estudiantes con recursos esenciales para el éxito educativo y crecimiento personal.", + "missionText": "Restaurando la esperanza con compasión, comunidad y fe.", "quickLinks": "Enlaces Rápidos", "contact": "Información de Contacto", - "address": "123 Hope Street, Education City, EC 12345", - "phone": "+1 (555) 123-4567", + "address": "Condado de Los Ángeles, California", + "phone": "(818) 491-6884", "email": "info@mim4u.org", "social": "Síguenos", "newsletter": "Boletín", diff --git a/src/index.css b/src/index.css index 56b0cf2..e47196e 100644 --- a/src/index.css +++ b/src/index.css @@ -158,11 +158,17 @@ } } - /* Footer: always horizontal */ + /* Footer: horizontal on light; symbol on dark (horizontal PNG has opaque panel) */ .logo-mark--footer { height: 2.75rem; } + .logo-mark--footer .logo-mark__img--symbol { + height: 100%; + width: auto; + max-width: 3.25rem; + } + .logo-mark--footer .logo-mark__img--horizontal { height: 100%; width: auto; diff --git a/src/pages/DonatePage/index.tsx b/src/pages/DonatePage/index.tsx index a252eea..0b152e5 100644 --- a/src/pages/DonatePage/index.tsx +++ b/src/pages/DonatePage/index.tsx @@ -6,6 +6,7 @@ import { useDonationImpact } from '@/hooks/useDonationImpact' import { useFormValidation } from '@/hooks/useDonationImpact' import { formatCurrency } from '@/utils/helpers' import { trackEvent, trackPageView } from '@/utils/analytics' +import { SITE } from '@/content/siteContent' interface DonatePageProps { className?: string @@ -362,7 +363,7 @@ const TrustBadges: React.FC = () => (

- EIN: 33-4887159 • All donations are tax-deductible to the fullest extent allowed by law. + EIN: {SITE.ein} • All donations are tax-deductible to the fullest extent allowed by law.