import { useState, useEffect, FormEvent } from 'react'; import Header from './components/Header'; import ServiceExplorer from './components/ServiceExplorer'; import ProjectEstimator from './components/ProjectEstimator'; import CompanyTimeline from './components/CompanyTimeline'; import FAQSection from './components/FAQSection'; import AuroraBackground from './components/AuroraBackground'; import { BrandIcon, BrandLogo } from './components/BrandAssets'; import { Inquiry } from './types'; import { MapPin, Mail, Phone, Clock, Send, CheckCircle2, ArrowRight, Sparkles } from 'lucide-react'; export default function App() { // General Contact Form States const [contactName, setContactName] = useState(''); const [contactEmail, setContactEmail] = useState(''); const [contactSubject, setContactSubject] = useState('General Services Inquiry'); const [contactMessage, setContactMessage] = useState(''); const [contactSuccess, setContactSuccess] = useState(false); const [contactLoading, setContactLoading] = useState(false); // Stats Counters state for load-in effect const [activeClients, setActiveClients] = useState(12); const [completedProjects, setCompletedProjects] = useState(25); useEffect(() => { // Soft animate stats for visual delight const clientsTimer = setInterval(() => { setActiveClients((prev) => { if (prev >= 65) { clearInterval(clientsTimer); return 65; } return prev + 2; }); }, 40); const projectsTimer = setInterval(() => { setCompletedProjects((prev) => { if (prev >= 142) { clearInterval(projectsTimer); return 142; } return prev + 4; }); }, 25); return () => { clearInterval(clientsTimer); clearInterval(projectsTimer); }; }, []); const scrollToSection = (id: string) => { const element = document.getElementById(id); if (element) { const headerOffset = 80; const elementPosition = element.getBoundingClientRect().top + window.scrollY; const offsetPosition = elementPosition - headerOffset; window.scrollTo({ top: offsetPosition, behavior: 'smooth', }); } }; const handleGeneralContactSubmit = async (e: FormEvent) => { e.preventDefault(); if (!contactName || !contactEmail || !contactMessage) return; setContactLoading(true); // Save general inquiry to localStorage const savedMsg = { id: `contact-${Date.now()}`, name: contactName, email: contactEmail, subject: contactSubject, message: contactMessage, date: new Date().toLocaleDateString('en-ZA'), }; const pastMsgs = JSON.parse(localStorage.getItem('litecharms_general_contacts') || '[]'); pastMsgs.push(savedMsg); localStorage.setItem('litecharms_general_contacts', JSON.stringify(pastMsgs)); try { await fetch('/api/send-email', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: contactName, email: contactEmail, subject: contactSubject, message: contactMessage, isEstimate: false, }), }); } catch (err) { console.error('SMTP API Submission failed. Saved locally instead:', err); } finally { setContactLoading(false); setContactSuccess(true); setContactName(''); setContactEmail(''); setContactMessage(''); } }; const handleEstimatorInquiry = (inquiry: Inquiry) => { console.log('Received Estimate Inquiry:', inquiry); }; return (
{/* Aurora Background */} {/* Navigation Header */}
{/* 1. Hero Section */}
{/* Hero Left Content */}
{/* South Africa Tag */}
Established 2011 • Midrand, South Africa
{/* Display Headline */}

Bespoke App Design &
Cloud Deployments

{/* Narrative Subhead */}

LiteCharms (PTY) Ltd provides an integrated approach to software layouts and modern deployment solutions. We engineer immersive interfaces for web, mobile, and desktop systems, alongside Docker containerization, Kubernetes configurations, and cloud hosting for clients who do not have hosting environments.

{/* CTAs */}
{/* Deployment Disclaimer Badge */}
IaC

Cloud & Container Ready: Built to compile as a lightweight optimized single-page layout, ready to deploy flawlessly inside containerized Docker environments or on our khongisa.co.za private cloud.

{/* Hero Right Visuals - Bento grid style */}
{/* Card 1: Main Stats Box */}

Our Engineering Track Record

2011

Established

{completedProjects}+

Projects

{activeClients}+

Active Clients

{/* Card 2: Core Focus A */}

Responsive App Layouts

Wireframes and structural guidelines for web dashboards, native iOS/Android, and high-productivity desktop software.

{/* Card 3: Core Focus B */}
IaC

Docker & Kubernetes

Declarative Kubernetes cluster blueprints, Docker multi-stage configurations, and cloud setups on khongisa.co.za.

{/* 2. About Section & Timeline */}
{/* Left side text */}
Our Heritage

Established in Midrand.
Sustained by Engineering.

LiteCharms (PTY) Ltd was born in Midrand in 2011, initially serving as a specialist interface consulting firm for the emerging mobile industry in South Africa. As local enterprise operations expanded, we observed a crucial bottleneck: software layout design cannot achieve its full potential if clients lack reliable, containerized hosting environments and flexible scale options.

In 2017, we expanded our core divisions to provide automated Docker container layouts, declarative Kubernetes blueprints, and cloud setups, powered by our high-performance private cloud platform, khongisa.co.za.

Today, we bridge the gap between user experience and modern cloud orchestration, delivering reliable structures that are optimized, secure, and fully documented.

{/* Physical Address details widget */}
Grand Central Office Park, Midrand, Johannesburg, 1685, South Africa
Monday - Friday: 08:00 - 17:00 (GMT+2)
{/* Right side interactive timeline */}
{/* 3. Services Section */}
Full Suite Solutions

Bespoke Digital Design & Cloud Deployments

We separate our specialties into cohesive pillars. Explore our capabilities to see how we plan, design, and roll out interfaces and infrastructure.

{/* Service Explorer Accordion / Tabs */}
{/* 4. Project Estimator Section */}
Interactive Estimator

Model Your Custom Project Scope

Select your required app layout services or cloud hosting parameters. Our system computes an investment range in South African Rands (ZAR) instantly. Submit the configuration to lock in your draft!

{/* 5. FAQs Section */}
Support Center

Frequently Answered Questions

Find instant answers regarding our site planning timelines, khongisa.co.za cloud hosting options, Gauteng region operations, and modern cloud deployment configurations.

{/* 6. Contact & Directions Section */}
{/* Contact Info Panel */}
Get In Touch

Reach Our Midrand Office

Ready to map out your infrastructure or design high-performance software layouts? Contact our directors directly or submit the general inquiry form. You can also visit our offices in Gauteng.

{/* Direct Info list */} {/* Graphic Midrand South Africa Map Representation */}

Midrand Headquarters

1633 Liebenburg Rd, Boordwyk, Midrand, Gauteng, ZA

Gauteng Corridor
{/* Styled geometric CSS map visual */}
{/* Grid background lines */}
{/* Johannesburg - Pretoria corridor labels */} Pretoria (N1 North) Johannesburg (N1 South) {/* Pulsing local coordinate pointer */}
LiteCharms Offices
{/* General Contact Form */}

General Message Form

Have a general service query or want to request a hardcopy portfolio handover? Leave your request below.

{contactSuccess ? (

Message Delivered!

Thank you for contacting LiteCharms (PTY) Ltd. Your inquiry has been cataloged. Our South African helpdesk will reply within 4 business hours.

) : (
setContactName(e.target.value)} placeholder="Sipho Cele" className="w-full px-4 py-2.5 rounded-xl border border-slate-800 focus:outline-none focus:ring-2 focus:ring-brand-500 text-sm bg-slate-900/50 text-white placeholder:text-slate-600" />
setContactEmail(e.target.value)} placeholder="sipho@company.co.za" className="w-full px-4 py-2.5 rounded-xl border border-slate-800 focus:outline-none focus:ring-2 focus:ring-brand-500 text-sm bg-slate-900/50 text-white placeholder:text-slate-600" />