Technical Documentation

As-Built Documentation

A complete breakdown of how the Cloud Ready Solutions website was built — architecture, components, data structures, design decisions, and the prompt needed to rebuild it from scratch.

Last updated: 13 April 2026

17
Pages
15
Components
9
Vendors
9
Solution Pages
2
Edge Functions
3
DB Tables
40+
UI Components
1300+
Lines Vendor Data

Site Breakdown

How to use this prompt: Copy the prompt below and paste it into Famous.ai as your first message when starting a new project. This single prompt contains enough context to rebuild the entire site structure, though you may need follow-up prompts for individual page content and refinements.

Build a complete website for Cloud Ready Solutions — an Australian IT distributor that distributes technology vendors to MSPs (Managed Service Providers) and enterprise buyers across Australia, New Zealand, and the Pacific Islands. CRITICAL POSITIONING: Cloud Ready Solutions is a DISTRIBUTOR, not a professional services firm, not a consultant, and not an MSP. They curate, validate, and distribute vendor technology. They provide partner enablement, regional support, and simplified procurement — not consulting or implementation services. --- TECH STACK: - React 18 with TypeScript - Vite for build tooling - Tailwind CSS for styling - shadcn/ui component library (Card, Button, Dialog, Drawer, Accordion, etc.) - React Router v6 for client-side routing - Lucide React for icons (NO emoji in the UI) - Supabase for backend (edge functions for partner auth, contact enquiries) - React Query (@tanstack/react-query) for data fetching - next-themes for theme provider (light mode default) --- ARCHITECTURE: App.tsx → defines all routes using React Router Index.tsx → wraps AppLayout in AppProvider context AppLayout.tsx → homepage layout composing: Header, HeroSection, SolutionPillars, FeaturedVendors, WhyCloudReady, PartnerTestimonials, DualPathSection, Footer, plus modals (PartnerModal, EnquiryModal, VendorDrawer) Contexts: - AuthContext.tsx — partner authentication with login/logout/password reset, session tokens stored in localStorage/sessionStorage, validates via Supabase edge function "partner-auth" - AppContext.tsx — simple sidebar toggle state --- VENDOR DATA (src/data/vendorData.ts): A single TypeScript file exporting a Record<string, VendorData> with comprehensive data for each vendor. Each vendor entry includes: - id, name, logo (initials), logoColor (gradient classes), brandColor (hex) - tagline, valueProposition, category, description, fullDescription (multi-paragraph) - forWhom (string array), keyCapabilities (string array), useCases (string array) - whyDistribute (why CRS distributes this vendor), crsValue (how CRS adds value) - website URL - technicalSpecs (grouped specs with label/value pairs) - pricingTiers (name, description, features array, optional highlight boolean) - caseStudies (title, company, industry, challenge, solution, results array) - integrations (name, description, type: Platform|API|Plugin|Native) - faqs (question/answer pairs) - For Keepit specifically: supportedWorkloads (categorised SaaS platforms) The 9 vendors are: 1. Wasabi — Hot cloud storage, no egress fees, 80% cheaper than hyperscalers, S3-compatible, Object Lock immutability. Green brand. 2. Keepit — Independent SaaS backup for M365, Google Workspace, Salesforce, and 14+ SaaS platforms. Teal/cyan brand. Has a special "Supported Workloads" section showing all protected SaaS platforms by category. 3. UFSConnect — Cloud-enable existing file servers without migration, secure HTTPS access, no VPN. Purple brand. 4. StoneFly — Enterprise storage & DR appliances, air-gapped protection, iSCSI pioneers. Amber/stone brand. 5. NAKIVO — VM & cloud backup for VMware, Hyper-V, Nutanix, AWS, M365. Multi-tenant MSP architecture. Orange brand. 6. Proxmox — Open-source virtualisation (KVM + LXC), no per-socket licensing, web management. Orange/amber brand. 7. QSAN — Enterprise SAN/NAS storage, dual controllers, NVMe, up to 11PB. Red brand. 8. Cibecs — Endpoint backup for laptops/desktops/remote workers, continuous protection. Green/emerald brand. 9. RackCorp — Australian sovereign cloud infrastructure, IRAP assessed, Tier III+ data centres. Red/slate brand. --- PAGES & ROUTES: / — Homepage (Index.tsx → AppLayout.tsx) Hero section with dark gradient background, animated rings visualisation, rotating stats, rotating partner testimonial quotes, trust indicators (15+ vendors, 200+ partners, 3 regional markets), two CTAs (Browse Vendors, Become a Partner). Solution Pillars section — 9 solution categories in a 2-column grid, each with icon, title, outcome description, vendor pills (linking to vendor pages), expandable use cases on hover, and "Learn More" link to solution page. Featured Vendors section — 9 vendor cards in 3-column grid with filter bar (All, Backup & DR, Cloud & Storage, Infrastructure), each card shows logo, tagline, capabilities, "For: Enterprise & MSP" label, clicking navigates to vendor page. Why Cloud Ready section — 3 value props (ANZ & Pacific Support, Enablement Hub, Commercial Value), stats bar, regional coverage map visualisation with animated dots for AU/NZ/Pacific. Partner Testimonials — 5 themed clusters (Fast Quoting, Technical Expertise, Responsive Support, Trusted Partnership, DR Expertise), each with 3 real partner quotes with names and companies. Dual Path Section — two large gradient cards side by side: "For MSPs & Channel Partners" (orange) and "For Enterprise IT Leaders" (blue), each with benefits and CTAs. /vendors — Vendors Hub (VendorsHub.tsx) Hero with "Curated Technology, Not a Catalogue" messaging. Vendors grouped by 4 solution categories (Backup & DR, Ransomware Protection, Hybrid Cloud, Infrastructure), each with vendor cards showing logo, outcome description, MSP/Enterprise badge, and link to vendor page. /vendors/:vendorSlug — Individual Vendor Page (VendorPage.tsx) Dynamic page using vendor slug to load from vendorData.ts. Vendor-branded hero section with gradient matching vendor brand colour. Sticky tab navigation: Overview, Supported Workloads (Keepit only), Technical Specs, Pricing, Case Studies, Integrations. Left column (2/3): tab content including full description, who it's for, key capabilities, use cases, "Why CRS Distributes" section, FAQ accordion. Right column (1/3): sticky enquiry form (VendorEnquiryForm component) + vendor-specific partner testimonial quote. /solutions/backup-disaster-recovery — Backup & DR solution page /solutions/ransomware-protection — Ransomware Protection solution page /solutions/hybrid-cloud — Hybrid Cloud Infrastructure solution page /solutions/virtualisation — Virtualisation & HCI solution page /solutions/storage — Enterprise Storage solution page /solutions/file-access — Modern File Access solution page /solutions/endpoint — Endpoint Protection solution page /solutions/saas-backup — SaaS Backup solution page /solutions/msp-platforms — MSP Platforms & Enablement solution page Each solution page follows the same structure: 1. Hero with gradient background and solution category badge 2. "The Problem" section — plain English explanation of the business/technical challenge 3. "Why This Matters to the Business" — 3 cards explaining business impact 4. "Vendors That Solve This Problem" — list of relevant vendors with one-sentence role descriptions, audience tags, and "View Vendor" buttons 5. "How Cloud Ready Solutions Enables This Solution" — 4 pillars: Distribution, Regional Support, Partner Enablement, Local Pricing (dark background section) 6. "Who This Solution Is For" — 3 audience segments with recommended vendors 7. CTA section with gradient background The MSP Platforms page has additional sections: Service Categories, MSP Capabilities grid, Economics callout, Common MSP Scenarios, and "We're a Distributor, Not an MSP" disclaimer. /contact — Contact Us page (ContactUs.tsx) Hero section, comprehensive enquiry form with: - Enquiry type selection (Partner, Vendor, Sales, Support, General) as clickable cards - Personal details (first name, last name, email, phone, company, job title) - Subject, message textarea with validation - Preferred contact method (Email, Phone, Video Call) - "How did you hear about us" dropdown - Newsletter opt-in checkbox Form submits to Supabase edge function "contact-enquiry" and shows success confirmation with reference number. Sidebar: Quick contact (phone, email), business hours, "Become a Partner" CTA, social links. 4 Australian office locations (Sydney HQ, Melbourne, Brisbane, Perth) with addresses, phone numbers, emails. FAQ section. /partner-login — Partner Login (PartnerLogin.tsx) Full-page login form with orange-branded header, email/password fields, remember me, forgot password flow. Authenticates via AuthContext → Supabase edge function "partner-auth". Demo credentials shown: demo@msppartner.com.au / demo123. /partner-portal — Partner Portal (PartnerPortal.tsx) Protected page (redirects to login if not authenticated). Partner dashboard with welcome message, deal registration, training resources, etc. /partner-application — Partner Application (PartnerApplication.tsx) Multi-step application form for new partners to apply. --- COMPONENTS: Header.tsx — Sticky header with CRS logo, desktop nav (Solutions dropdown, Vendors dropdown with all 9 vendors, Why CRS, For Partners, For Enterprise, Contact), partner login/portal button, "Become a Partner" CTA. Mobile hamburger menu. Uses useAuth() to show partner avatar when authenticated. Footer.tsx — Dark slate background. Newsletter subscription form. 6-column layout: Brand column (logo, description, contact info, social links), Solutions links, Partners links, Enterprise links, Company links. Collapsible "Vendors A-Z" index. Bottom bar with copyright and legal links. HeroSection.tsx — Dark gradient hero with animated concentric rings, 4 tech layer cards positioned around a central CRS logo, rotating stats, rotating partner testimonial quotes with dot indicators. SolutionPillars.tsx — 9 solution category cards in 2-column grid. Each card has coloured icon, title, outcome text, vendor pills linking to vendor pages, expandable use cases on hover, and link to solution page. FeaturedVendors.tsx — 9 vendor cards with filter bar. Cards show logo, tagline, capability tags, audience label. Clicking navigates to /vendors/:slug. WhyCloudReady.tsx — 3 value proposition cards, stats bar (4hr response, 98% satisfaction, 15+ years), regional coverage section with animated map dots. PartnerTestimonials.tsx — 5 themed testimonial clusters with real partner quotes. Stats summary (64+ reviews, 4.8 rating, 15+ years, 200+ partners). DualPathSection.tsx — Two gradient cards (orange for MSPs, blue for Enterprise) with benefits and CTAs. PartnerModal.tsx — Modal for partner-related actions. EnquiryModal.tsx — Modal with enterprise enquiry form (company, contact, email, phone, vendor selector, timeline, message). VendorDrawer.tsx — Slide-in drawer from right showing vendor overview, capabilities, use cases, with "Request Information" and "View Full Page" CTAs. VendorEnquiryForm.tsx — Reusable form component used on vendor pages for enquiries. SupportedWorkloadsSection.tsx — Keepit-specific component showing all supported SaaS platforms grouped by category. --- DESIGN SYSTEM: Colour palette: - Primary: Blue (blue-600 for buttons, blue-900 for dark backgrounds) - Secondary: Orange (orange-500 for partner/MSP CTAs) - Each vendor has a unique brand gradient (defined in vendorData.ts logoColor field) - Dark sections use slate-900 / blue-900 gradients - Light sections alternate between white and gray-50 Typography: System font stack via Tailwind defaults. Bold headings (text-3xl to text-6xl font-bold). Body text in gray-600. Spacing: Consistent py-16/py-20 section padding. max-w-7xl containers. px-4 sm:px-6 lg:px-8 horizontal padding. Cards: rounded-2xl with border border-gray-200, hover:shadow-xl transitions. Gradient headers on some cards. Icons: Lucide React exclusively. No emoji characters anywhere in the UI. Responsive: Mobile-first with sm:, md:, lg: breakpoints. Mobile hamburger menu in header. Grid columns collapse on mobile. --- DATABASE / BACKEND: Supabase edge functions: 1. "partner-auth" — handles login, logout, session validation, password reset request, password reset 2. "contact-enquiry" — handles form submission, stores enquiries with fields: first_name, last_name, email, phone, company_name, job_title, enquiry_type, subject, message, preferred_contact_method, how_did_you_hear, newsletter_opt_in Database tables: - partners (id, email, password_hash, company_name, contact_name, phone, location, business_type, status, created_at) - partner_sessions (id, partner_id, token, expires_at, created_at) - contact_enquiries (id, first_name, last_name, email, phone, company_name, job_title, enquiry_type, subject, message, preferred_contact_method, how_did_you_hear, newsletter_opt_in, status, created_at) --- KEY DESIGN DECISIONS: 1. Vendor data is hardcoded in vendorData.ts, not fetched from database — this is intentional for performance and because vendor info changes infrequently. 2. Solution pages follow a consistent template but are individual files (not generated from data) to allow per-solution customisation. 3. The homepage uses composition of separate components (HeroSection, SolutionPillars, etc.) rather than one monolithic file. 4. Partner authentication uses custom session tokens stored in Supabase, not Supabase Auth — this was a deliberate choice for the partner portal. 5. The site positions CRS as a distributor throughout — never as a consultant or MSP. This messaging is critical and should be maintained. 6. Australian English spelling is used throughout (virtualisation, organisation, colour, etc.). 7. Real partner testimonials with first names and company names are used — these are verified quotes from Quotient reviews. --- IMPORTANT NOTES FOR REBUILD: - The Header component has dropdown menus for Solutions (9 items) and Vendors (9 items) with proper routing - The Footer has a newsletter form, 4-column link layout, and collapsible vendor A-Z index - Each vendor page uses dynamic colour theming based on the vendor's brand - The Keepit vendor page has a special "Supported Workloads" tab not present on other vendor pages - Solution pages use the same visual structure but different content — do NOT create a generic template that generates them - The contact form integrates with Supabase edge functions for real form submission - Partner login/portal uses session-based auth with remember-me functionality - All interactive elements must have real functionality (no placeholder onClick handlers)

Prompt length: ~14,175 characters / ~1,885 words

Want to explore the live site?

Navigate through the pages documented above to see everything in action.