This project is a modern, production-ready frontend for the Xebia Learning Platform built with React 19 + Vite 8 + Tailwind CSS v4.
The project follows a component-driven architecture:
src/
โโโ assets/ # Asset files (SVG icons, static images)
โ โโโ hero.png # The primary hero/login background image (Ganesha Neon)
โ โโโ react.svg
โ โโโ vite.svg
โโโ components/ # Modular react components
โ โโโ common/ # Reusable global layout & form controls
โ โ โโโ Button.jsx # Custom buttons (primary, outline, accents, loaders)
โ โ โโโ Card.jsx # Card container with Framer Motion hover animations
โ โ โโโ Container.jsx # Centered maximum-width wrapper
โ โ โโโ Input.jsx # Dual-style inputs ("nested" for Login, "outline" for Forms)
โ โ โโโ Loader.jsx # Brand themed loading spinner
โ โ โโโ SearchBar.jsx # Mockup 2 search block with attached purple button
โ โ โโโ SectionTitle.jsx # Reusable headers
โ โโโ navbar/ # Header navigation bar components
โ โ โโโ Logo.jsx # Solid purple brand typography logo
โ โ โโโ NavItem.jsx # Clean text navigation links with active underline
โ โ โโโ NavLinks.jsx # Mapper for navigation arrays
โ โ โโโ SearchInput.jsx # Centered rectangular search input in navigation
โ โ โโโ Navbar.jsx # Header container & mobile slide-out drawer
โ โโโ hero/ # Landing page landing layouts
โ โโโ auth/ # Login form, login card layout, Google OAuth mock button
โ โโโ faq/ # FAQ accordion container, items, support sidebar cards
โ โโโ contact/ # Contact form layout
โ โโโ footer/ # Footer with quick links and copyright details
โโโ layouts/ # Layout wrappers
โ โโโ MainLayout.jsx # Persistent header, main container, footer wrapper
โโโ pages/ # High level routed page views
โ โโโ Landing.jsx # Home Route (/)
โ โโโ Login.jsx # Authentication Route (/login)
โ โโโ FAQ.jsx # FAQ search & list Route (/faq)
โ โโโ Contact.jsx # Contact Form Route (/contact)
โโโ routes/ # App routing rules
โ โโโ AppRoutes.jsx # React Router DOM mapping
โโโ services/ # Service mock API layer
โ โโโ api.js # Unified accessor for local JSON configs
โโโ data/ # Configuration JSON files (Strictly NO hardcoded text in UI)
โ โโโ navbar.json # Logo text, Search Placeholders, Links, login buttons
โ โโโ landing.json # Hero descriptions, Features items, CTA buttons
โ โโโ login.json # Login cards, placeholders, bullet benefits
โ โโโ faq.json # FAQ accordion items (Q&A lists), support details
โ โโโ contact.json # Forms descriptors, HQ locations
โโโ App.jsx # React router context mount
โโโ main.jsx # Application root entry point
โโโ index.css # Tailwind v4 import & custom Color Palette config
Tailwind CSS v4 handles configuration directly inside src/index.css using the @theme directive (no tailwind.config.js is needed).
To change any colors, open index.css and edit the hex codes under @theme:
@theme {
/* Brand color definitions (hex codes from your palette image) */
--color-primary-600: #6C1D5F; /* Tranquil Velvet (Logo, Active Links, Main CTAs) */
--color-primary-700: #4A1E47; /* Tranquil Velvet Dark (Button hover gradients) */
--color-primary-400: #84117C; /* Bright Tr. Velvet (Secondary gradient borders) */
--color-accent-500: #01AC9F; /* Emerald (Teal links, Support cards, Send Message) */
--color-accent-600: #FF6200; /* CTA Orange (Secondary orange accent) */
--color-bg-base: #F7F8FC; /* Blueish Grey (Global app background) */
}
These mapped CSS variables compile automatically to standard classes (e.g. bg-primary-600, text-accent-500, border-primary-200, bg-bg-base).
No user-facing text is written directly in the React codebase. To update text, placeholders, labels, or paths, edit the respective file in the src/data/ directory:
"items" array to add new accordions).The hero graphic is mounted dynamically via HeroImage.jsx and used in both the Home page and the Login split-screen.
To replace the image:
hero.png.src/assets/ directory (overwriting the existing src/assets/hero.png).variant="nested" styling in LoginForm.jsx, whereas standard form inputs (like in Contact Us) use the variant="outline" styling. You can configure this prop in Input.jsx.<motion.div> tags inside the pages located at src/pages/./courses), define it in src/pages/, import it, and register the path inside AppRoutes.jsx.To start the hot-reloading development server:
npm run dev
To test the production build locally:
npm run build
To redeploy the production build to your live Vercel environment:
npx vercel --prod --yes
To push local changes to GitHub:
git add .
git commit -m "commit message details"
git push origin main
6 commits
JavaScript
96.2%
CSS
3.2%
This project is a modern, production-ready frontend for the Xebia Learning Platform built with React 19 + Vite 8 + Tailwind CSS v4.
The project follows a component-driven architecture:
src/
โโโ assets/ # Asset files (SVG icons, static images)
โ โโโ hero.png # The primary hero/login background image (Ganesha Neon)
โ โโโ react.svg
โ โโโ vite.svg
โโโ components/ # Modular react components
โ โโโ common/ # Reusable global layout & form controls
โ โ โโโ Button.jsx # Custom buttons (primary, outline, accents, loaders)
โ โ โโโ Card.jsx # Card container with Framer Motion hover animations
โ โ โโโ Container.jsx # Centered maximum-width wrapper
โ โ โโโ Input.jsx # Dual-style inputs ("nested" for Login, "outline" for Forms)
โ โ โโโ Loader.jsx # Brand themed loading spinner
โ โ โโโ SearchBar.jsx # Mockup 2 search block with attached purple button
โ โ โโโ SectionTitle.jsx # Reusable headers
โ โโโ navbar/ # Header navigation bar components
โ โ โโโ Logo.jsx # Solid purple brand typography logo
โ โ โโโ NavItem.jsx # Clean text navigation links with active underline
โ โ โโโ NavLinks.jsx # Mapper for navigation arrays
โ โ โโโ SearchInput.jsx # Centered rectangular search input in navigation
โ โ โโโ Navbar.jsx # Header container & mobile slide-out drawer
โ โโโ hero/ # Landing page landing layouts
โ โโโ auth/ # Login form, login card layout, Google OAuth mock button
โ โโโ faq/ # FAQ accordion container, items, support sidebar cards
โ โโโ contact/ # Contact form layout
โ โโโ footer/ # Footer with quick links and copyright details
โโโ layouts/ # Layout wrappers
โ โโโ MainLayout.jsx # Persistent header, main container, footer wrapper
โโโ pages/ # High level routed page views
โ โโโ Landing.jsx # Home Route (/)
โ โโโ Login.jsx # Authentication Route (/login)
โ โโโ FAQ.jsx # FAQ search & list Route (/faq)
โ โโโ Contact.jsx # Contact Form Route (/contact)
โโโ routes/ # App routing rules
โ โโโ AppRoutes.jsx # React Router DOM mapping
โโโ services/ # Service mock API layer
โ โโโ api.js # Unified accessor for local JSON configs
โโโ data/ # Configuration JSON files (Strictly NO hardcoded text in UI)
โ โโโ navbar.json # Logo text, Search Placeholders, Links, login buttons
โ โโโ landing.json # Hero descriptions, Features items, CTA buttons
โ โโโ login.json # Login cards, placeholders, bullet benefits
โ โโโ faq.json # FAQ accordion items (Q&A lists), support details
โ โโโ contact.json # Forms descriptors, HQ locations
โโโ App.jsx # React router context mount
โโโ main.jsx # Application root entry point
โโโ index.css # Tailwind v4 import & custom Color Palette config
Tailwind CSS v4 handles configuration directly inside src/index.css using the @theme directive (no tailwind.config.js is needed).
To change any colors, open index.css and edit the hex codes under @theme:
@theme {
/* Brand color definitions (hex codes from your palette image) */
--color-primary-600: #6C1D5F; /* Tranquil Velvet (Logo, Active Links, Main CTAs) */
--color-primary-700: #4A1E47; /* Tranquil Velvet Dark (Button hover gradients) */
--color-primary-400: #84117C; /* Bright Tr. Velvet (Secondary gradient borders) */
--color-accent-500: #01AC9F; /* Emerald (Teal links, Support cards, Send Message) */
--color-accent-600: #FF6200; /* CTA Orange (Secondary orange accent) */
--color-bg-base: #F7F8FC; /* Blueish Grey (Global app background) */
}
These mapped CSS variables compile automatically to standard classes (e.g. bg-primary-600, text-accent-500, border-primary-200, bg-bg-base).
No user-facing text is written directly in the React codebase. To update text, placeholders, labels, or paths, edit the respective file in the src/data/ directory:
"items" array to add new accordions).The hero graphic is mounted dynamically via HeroImage.jsx and used in both the Home page and the Login split-screen.
To replace the image:
hero.png.src/assets/ directory (overwriting the existing src/assets/hero.png).variant="nested" styling in LoginForm.jsx, whereas standard form inputs (like in Contact Us) use the variant="outline" styling. You can configure this prop in Input.jsx.<motion.div> tags inside the pages located at src/pages/./courses), define it in src/pages/, import it, and register the path inside AppRoutes.jsx.To start the hot-reloading development server:
npm run dev
To test the production build locally:
npm run build
To redeploy the production build to your live Vercel environment:
npx vercel --prod --yes
To push local changes to GitHub:
git add .
git commit -m "commit message details"
git push origin main
6 commits
JavaScript
96.2%
CSS
3.2%