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 (
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 */}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.
Our Engineering Track Record
2011
Established
{completedProjects}+
Projects
{activeClients}+
Active Clients
Wireframes and structural guidelines for web dashboards, native iOS/Android, and high-productivity desktop software.
Declarative Kubernetes cluster blueprints, Docker multi-stage configurations, and cloud setups on khongisa.co.za.
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.
We separate our specialties into cohesive pillars. Explore our capabilities to see how we plan, design, and roll out interfaces and infrastructure.
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!
Find instant answers regarding our site planning timelines, khongisa.co.za cloud hosting options, Gauteng region operations, and modern cloud deployment configurations.
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.
Email Us
contact@litecharms.co.za
Call Office
+27 (0) 87 265 9463
Core Office Hours
Mon - Fri: 08:00 - 17:00
1633 Liebenburg Rd, Boordwyk, Midrand, Gauteng, ZA
Have a general service query or want to request a hardcopy portfolio handover? Leave your request below.
Thank you for contacting LiteCharms (PTY) Ltd. Your inquiry has been cataloged. Our South African helpdesk will reply within 4 business hours.