Marketing Website (vitaravox.ca)
React 19 single-page marketing website for VitaraVox
Overview
| Attribute |
Value |
| URL |
https://vitaravox.ca |
| Source |
/home/ubuntu/Vitaravox/ |
| Framework |
React 19.2 + TypeScript 5.9 |
| Build Tool |
Vite 7.2 |
| Styling |
Tailwind CSS 4.1 |
| Last Review |
January 21, 2026 |
Technology Stack
| Layer |
Technology |
Version |
| UI Framework |
React |
19.2.0 |
| Language |
TypeScript |
5.9.3 |
| Build Tool |
Vite |
7.2.4 |
| CSS Framework |
Tailwind CSS |
4.1.18 |
| Icons |
Lucide React |
0.561.0 |
| PostCSS |
@tailwindcss/postcss |
4.1.18 |
Architecture
Single-Page Scroll Design
┌─────────────────────────────────────────┐
│ Navigation │ Fixed header, mobile menu
├─────────────────────────────────────────┤
│ Hero │ Landing + CTAs
├─────────────────────────────────────────┤
│ Features │ 4 feature cards
├─────────────────────────────────────────┤
│ Benefits │ 3 benefit categories
├─────────────────────────────────────────┤
│ About │ Company mission
├─────────────────────────────────────────┤
│ ForPhysicians │ Target audience
├─────────────────────────────────────────┤
│ SecurityCompliance │ PIPEDA/PHIPA badges
├─────────────────────────────────────────┤
│ HowItWorks │ 4-step process
├─────────────────────────────────────────┤
│ Contact │ Form + API integration
├─────────────────────────────────────────┤
│ Footer │ Links + contact info
└─────────────────────────────────────────┘
Component Structure
src/
├── components/
│ ├── Navigation.tsx # Mobile menu state (useState)
│ ├── Hero.tsx # Landing section
│ ├── Features.tsx # 4 feature cards
│ ├── Benefits.tsx # 3 benefit categories
│ ├── About.tsx # Company philosophy
│ ├── ForPhysicians.tsx # Target audience
│ ├── SecurityCompliance.tsx # Compliance badges
│ ├── HowItWorks.tsx # 4-step process
│ ├── Contact.tsx # Form with 5 state hooks
│ └── Footer.tsx # Links and contact
├── assets/
│ └── logo.png # VitaraVox logo (570KB)
├── App.tsx # Root composition
├── main.tsx # React 19 entry
└── index.css # Tailwind 4 CSS-first
State Management
Minimal local state only - no global state management.
| Component |
State |
Purpose |
| Navigation |
isMenuOpen |
Mobile menu toggle |
| Contact |
formData |
Form input values |
| Contact |
isSubmitting |
Loading state |
| Contact |
isSubmitted |
Success state |
| Contact |
error |
Error message |
API Integration
Endpoint: POST https://files.zatuka.ai/api/upload
| Field |
Type |
Required |
| name |
string |
Yes |
| email |
string |
Yes |
| phone |
string |
No |
| clinicName |
string |
No |
| message |
string |
Yes |
Implementation (Contact.tsx:23-82):
- Creates text file with timestamp + form data
- Uploads via FormData POST
- Stores at path VitaraVox_Contacts
- Uses credentials: 'include'
Styling System
Custom Colors (Tailwind)
| Token |
Value |
Usage |
vitara-cyan |
#24d6f6 |
Accents, CTAs |
vitara-blue |
#04618f |
Primary, headers |
vitara-gray |
#dadada |
Borders |
vitara-bg |
#dce9ef |
Backgrounds |
Typography
- Font: Montserrat (Google Fonts)
- Weights: 400, 500, 600, 700, 800
Build & Deploy
Development
cd ~/Vitaravox
npm install
npm run dev # localhost:5174
Production
npm run build # tsc -b && vite build
npm run preview # Preview at localhost:4174
Scripts
| Command |
Action |
npm run dev |
Start dev server (port 5174) |
npm run build |
TypeScript + Vite production build |
npm run lint |
ESLint check |
npm run preview |
Preview production build |
SEO Configuration
Meta tags defined in index.html:
| Tag |
Value |
| Title |
VitaraVox - AI-Powered Medical Reception |
| Description |
Voice AI assistant for Canadian healthcare |
| Keywords |
medical AI, voice assistant, healthcare |
| Canonical |
https://vitaravox.ca/ |
| Geo Region |
CA-BC |
| OG Image |
Configured |
| Metric |
Status |
| Bundle Size |
~30KB (minified JS) |
| First Contentful Paint |
Fast (static content) |
| Largest Contentful Paint |
Good (hero text) |
| Code Splitting |
Not needed (single page) |
| Image Optimization |
Via Vite |
Last updated: January 21, 2026