FrenchWithKunal - Language Learning Hub

<!DOCTYPE html> FrenchWithKunal - Language Learning Hub

    <div class="shape"></div>
    <div class="shape"></div>
    <div class="shape"></div>
</div>

<div class="landing-container">
    <div class="landing-card">
        <div class="landing-header">
            <div class="language-switcher">
                <button class="language-btn active" onclick="switchLanguage('en')" id="enBtn">🇬🇧 EN</button>
                <button class="language-btn" onclick="switchLanguage('fr')" id="frBtn">🇫🇷 FR</button>
            </div>
            
            <h1>
                <i class="fas fa-graduation-cap me-3"></i>
                FrenchWithKunal
            </h1>
            <p data-en="Where mastering French meets the art of Parisian living" data-fr="Où maîtriser le français rencontre l'art de vivre parisien">Where mastering French meets the art of Parisian living</p>
            <div class="flag-decoration"></div>
        </div>
        
        <div class="landing-body">
            <!-- Video Section -->
            <div class="video-container">
                <iframe width="100%" height="450" src="https://www.youtube.com/embed/hU07FOM1klQ?start=10" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
            </div>
            
            <p style="text-align: center; font-size: 1.1rem; margin-bottom: 2rem;" data-en="Bonjour! I'm Kunal, your guide to speaking French with authentic pronunciation, real culture, and a Parisian touch." data-fr="Bonjour! Je suis Kunal, votre guide pour parler français avec une prononciation authentique, une vraie culture et une touche parisienne.">
                Bonjour! I'm Kunal, your guide to speaking French with authentic pronunciation, real culture, and a Parisian touch.
            </p>
            
            <div class="practice-options">
                <!-- TEF/TCF Practice -->
                <a href="/tef-practice" class="practice-option tef">
                    <div class="practice-icon">
                        <i class="fas fa-clipboard-check"></i>
                    </div>
                    <div class="practice-title" data-en="TEF/TCF Practice" data-fr="Pratique TEF/TCF">TEF/TCF Practice</div>
                    <div class="practice-description" data-en="Prepare for official French exams with realistic practice tests and personalized feedback" data-fr="Préparez-vous aux examens officiels de français avec des tests pratiques réalistes et des commentaires personnalisés">
                        Prepare for official French exams with realistic practice tests and personalized feedback
                    </div>
                    <div class="practice-btn">
                        <i class="fas fa-arrow-right me-2"></i>
                        <span data-en="Start Practicing" data-fr="Commencer">Start Practicing</span>
                    </div>
                </a>
                
                <!-- Practice with AI -->
                <a href="/ai-practice" class="practice-option ai">
                    <div class="practice-icon">
                        <i class="fas fa-robot"></i>
                    </div>
                    <div class="practice-title" data-en="Practice with AI" data-fr="Pratique avec IA">Practice with AI</div>
                    <div class="practice-description" data-en="Get instant feedback on your French with our AI tutor, available 24/7" data-fr="Obtenez des commentaires instantanés sur votre français avec notre tuteur IA, disponible 24h/24">
                        Get instant feedback on your French with our AI tutor, available 24/7
                    </div>
                    <div class="practice-btn">
                        <i class="fas fa-arrow-right me-2"></i>
                        <span data-en="Try AI Tutor" data-fr="Essayer">Try AI Tutor</span>
                    </div>
                </a>
                
                <!-- Parisian Culture -->
                <a href="/culture" class="practice-option culture">
                    <div class="practice-icon">
                        <i class="fas fa-landmark"></i>
                    </div>
                    <div class="practice-title" data-en="Parisian Culture" data-fr="Culture Parisienne">Parisian Culture</div>
                    <div class="practice-description" data-en="Immerse yourself in authentic Parisian life through language, art, and traditions" data-fr="Plongez-vous dans la vie parisienne authentique à travers la langue, l'art et les traditions">
                        Immerse yourself in authentic Parisian life through language, art, and traditions
                    </div>
                    <div class="practice-btn">
                        <i class="fas fa-arrow-right me-2"></i>
                        <span data-en="Explore Culture" data-fr="Explorer">Explore Culture</span>
                    </div>
                </a>
            </div>
            
            <!-- Newsletter Section -->
            <div class="card" style="margin-top: 3rem; background: rgba(233, 236, 239, 0.5); border: 2px dashed var(--french-blue); padding: 2rem; text-align: center; border-radius: 15px;">
                <h3 style="margin-bottom: 1rem;">
                    <i class="fas fa-envelope-open-text"></i> 
                    <span data-en="Get your weekly dose of authentic French!" data-fr="Recevez votre dose hebdomadaire de français authentique!">Get your weekly dose of authentic French!</span>
                </h3>
                <p data-en="Every week: 1 cultural tip, 1 slang expression, and 1 mini-lesson straight to your inbox." data-fr="Chaque semaine : 1 conseil culturel, 1 expression argotique et 1 mini-leçon directement dans votre boîte de réception.">
                    Every week: 1 cultural tip, 1 slang expression, and 1 mini-lesson straight to your inbox.
                </p>
                
                <form id="subscribeForm" style="margin-top: 1.5rem;">
                    <input type="email" id="subscriberEmail" name="email" placeholder="Enter your email" required style="padding: 10px; border-radius: 5px; border: 1px solid #ccc; width: 80%; max-width: 300px;"> 
                    <br> 
                    <button type="submit" class="practice-btn tef" style="margin-top: 1rem; display: inline-block;">
                        <span data-en="Yes, I want it!" data-fr="Oui, je le veux!">Yes, I want it!</span>
                    </button>
                </form>
            </div>
            
            <div class="footer-info">
                <small class="text-muted">
                    <i class="fas fa-heart text-danger me-1"></i>
                    <span data-en="Created with passion for French learning" data-fr="Créé avec passion pour l'apprentissage du français">Created with passion for French learning</span>
                </small>
            </div>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
    // Language switching functionality
    let currentLanguage = 'en';
    
    function switchLanguage(lang) {
        currentLanguage = lang;
        
        // Update active button
        document.getElementById('enBtn').classList.toggle('active', lang === 'en');
        document.getElementById('frBtn').classList.toggle('active', lang === 'fr');
        
        // Update html lang attribute
        document.getElementById('htmlLang').setAttribute('lang', lang);
        
        // Update all elements with data attributes
        const elements = document.querySelectorAll('[data-en][data-fr]');
        elements.forEach(element => {
            const text = element.getAttribute('data-' + lang);
            if (text) {
                if (element.tagName === 'TITLE') {
                    element.textContent = text;
                } else {
                    element.textContent = text;
                }
            }
        });
        
        // Store preference
        localStorage.setItem('preferredLanguage', lang);
    }
    
    // Load saved language preference
    document.addEventListener('DOMContentLoaded', function() {
        const savedLang = localStorage.getItem('preferredLanguage') || 'en';
        switchLanguage(savedLang);
        
        // Add smooth entrance animation
        const card = document.querySelector('.landing-card');
        card.style.transform = 'translateY(50px)';
        card.style.opacity = '0';
        
        setTimeout(() => {
            card.style.transition = 'all 0.8s ease-out';
            card.style.transform = 'translateY(0)';
            card.style.opacity = '1';
        }, 100);
        
        // Newsletter form submission
        document.getElementById('subscribeForm').addEventListener('submit', async function(e) {
            e.preventDefault();
            const email = document.getElementById('subscriberEmail').value;
            
            try {
                const response = await fetch('https://frenchwithkunal-cdf6ea3f88ce.herokuapp.com/api/v1/subscribers/create-subscriber', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({ email: email })
                });

                if (response.ok) {
                    alert(currentLanguage === 'en' ? 'Thank you! You are now subscribed to our newsletter.' : 'Merci! Vous êtes maintenant abonné à notre newsletter.');
                    document.getElementById('subscriberEmail').value = '';
                } else {
                    alert(currentLanguage === 'en' ? 'There was a problem with your subscription. Please try again later.' : 'Un problème est survenu avec votre abonnement. Veuillez réessayer plus tard.');
                }
            } catch (error) {
                console.error('Error:', error);
                alert(currentLanguage === 'en' ? 'An error occurred. Please try again later.' : 'Une erreur est survenue. Veuillez réessayer plus tard.');
            }
        });
    });
</script>