فلیش کارڈ میکر

Create professional digital flashcards with AI assistance. Features spaced repetition, multiple study modes, multimedia support, and export to popular platforms like Anki and Quizlet.

نیا فلیش کارڈ بنائیں

فلیش کارڈ بنانے کے لیے سامنے اور پیچھے کا مواد شامل کریں

اپنے فلیش کارڈ کی نمائش دیکھنے کے لیے یہاں کلک کریں
پیچھے کا حصہ دیکھنے کے لیے مواد شامل کریں
🔄
فلیش کارڈز
کلاسک فلپ کارڈ مطالعہ
🧠
وقفہ دار دہرائی
سائنسی طور پر بہتر جائزہ
کوئز موڈ
کثیر انتخابی ٹیسٹ
🎯
میچ گیم
اصطلاحات کو تعریفوں سے ملائیں
میرے فلیش کارڈز
0 cards 0 studied today
📚 No flashcards created yet. Go to "Create Cards" to get started!
0 کل کارڈز
0 Study Streak (days)
0 مہارت یافتہ کارڈز
0% درستگی کی شرح

📤 Export Your Flashcards

Export your flashcards to popular study platforms or download for offline use.

🎴
انکی
اے پی کے جی فارمیٹ
📚
کوئزلیٹ
سی ایس وی فارمیٹ
📊
سی ایس وی فائل
سپریڈشیٹ
💾
جے ایس او این
بیک اپ فارمیٹ
🖨️
پی ڈی ایف پرنٹ
فزیکل کارڈز
🌐
آن لائن شیئر کریں
پبلک لنک
Supports CSV, JSON, TXT, and APKG files from Anki, Quizlet, and other platforms

📚 Planning Educational Travel or Study Abroad?

بین الاقوامی تعلیمی تجربات اور تعلیمی سفر سے اپنی تعلیم کو بہتر بنائیں

Smart Nation's Core Infrastructure: WIA Code

Drone·Robot delivery, autonomous driving, emergency rescue and more - Experience the future in 30 days, completely free for your nation!

ڈبلیو آئی اے کوڈ کے بارے میں مزید جانیں

🤖 اپنا اے آئی اسسٹنٹ منتخب کریں

💬 چیٹ جی پی ٹی
Most versatile • Best for content generation
🧠 کلاؤڈ
Best reasoning • Perfect for study strategies
جیمنی مفت
Free daily limits • Built-in chat
`); printWindow.document.close(); printWindow.print(); showNotification('Print preview opened', 'success'); } // Share online function shareOnline() { const shareData = { title: 'میرے فلیش کارڈز', text: `Check out my ${flashcards.length} flashcards created with WIA Code Flash Card Maker!`, url: window.location.href }; if (navigator.share) { navigator.share(shareData); } else { const text = `${shareData.text}\n\n${shareData.url}`; copyToClipboard(text); showNotification('Share link copied to clipboard!', 'success'); } } // Handle import function handleImport() { const file = document.getElementById('importFile').files[0]; if (!file) return; const reader = new FileReader(); reader.onload = function(e) { try { const content = e.target.result; let importedCards = []; if (file.name.endsWith('.json')) { importedCards = JSON.parse(content); } else if (file.name.endsWith('.csv')) { importedCards = parseCSV(content); } else if (file.name.endsWith('.txt')) { importedCards = parseTXT(content); } if (importedCards.length > 0) { flashcards = flashcards.concat(importedCards); saveData(); updateDeckDisplay(); updateStats(); showNotification(`Imported ${importedCards.length} flashcards!`, 'success'); } else { showNotification('No valid flashcards found in file', 'error'); } } catch (error) { showNotification('Error importing file: ' + error.message, 'error'); } }; reader.readAsText(file); } // Parse CSV import function parseCSV(content) { const lines = content.split('\n').filter(line => line.trim()); const cards = []; for (let i = 1; i < lines.length; i++) { // Skip header const parts = lines[i].split(','); if (parts.length >= 2) { cards.push({ id: Date.now().toString() + i, front: parts[0].replace(/"/g, '').trim(), back: parts[1].replace(/"/g, '').trim(), tags: parts[2] ? parts[2].replace(/"/g, '').split(';').map(t => t.trim()) : [], created: new Date().toISOString(), interval: 0, easiness: 2.5, repetitions: 0, nextReview: new Date().toISOString() }); } } return cards; } // Parse TXT import (tab-separated) function parseTXT(content) { const lines = content.split('\n').filter(line => line.trim()); const cards = []; lines.forEach((line, i) => { const parts = line.split('\t'); if (parts.length >= 2) { cards.push({ id: Date.now().toString() + i, front: parts[0].trim(), back: parts[1].trim(), tags: parts[2] ? parts[2].split(' ').filter(t => t.trim()) : [], created: new Date().toISOString(), interval: 0, easiness: 2.5, repetitions: 0, nextReview: new Date().toISOString() }); } }); return cards; } // ========== UTILITY FUNCTIONS ========== // Download file function downloadFile(content, filename, mimeType) { const blob = new Blob([content], { type: mimeType }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); } // Save data to localStorage function saveData() { localStorage.setItem('flashcards', JSON.stringify(flashcards)); localStorage.setItem('studyStats', JSON.stringify(studyStats)); } // Copy to clipboard function copyToClipboard(text) { navigator.clipboard.writeText(text).then(() => { showNotification('Copied to clipboard!', 'success'); }).catch(() => { // Fallback for older browsers const textArea = document.createElement('textarea'); textArea.value = text; document.body.appendChild(textArea); textArea.select(); document.execCommand('copy'); document.body.removeChild(textArea); showNotification('Copied to clipboard!', 'success'); }); } // Show notification toast function showNotification(message, type = 'success') { const toast = document.createElement('div'); toast.className = `toast ${type}`; toast.textContent = message; document.body.appendChild(toast); setTimeout(() => { toast.remove(); }, 3000); return toast; } // Show OTA section function showOTA() { const otaContainer = document.getElementById('otaContainer'); if (otaContainer && (otaContainer.style.display === 'none' || !otaContainer.style.display)) { otaContainer.style.display = 'block'; setTimeout(() => { const otaHeader = document.querySelector('.ota-header h3'); if (otaHeader) { otaHeader.style.animation = 'pulse 1s ease-in-out'; } }, 100); } } // Analytics tracking function trackEvent(eventName, data = {}) { if (typeof gtag !== 'undefined') { gtag('event', eventName, { 'event_category': TOOL_CONFIG.category, 'event_label': TOOL_CONFIG.name, ...data }); } } // ========== AI ASSISTANT FUNCTIONS ========== // AI 모달 열기 function openAIModal() { const modal = document.getElementById('aiModal'); modal.classList.add('show'); if (aiModalState.apiKey && aiModalState.currentView === 'gemini') { showGeminiChat(); } else { showAISelector(); } updateAPIKeyStatus(); } // AI 모달 닫기 function closeAIModal() { const modal = document.getElementById('aiModal'); modal.classList.remove('show'); setTimeout(() => { aiModalState.currentView = 'selector'; showAISelector(); }, 300); } // AI 선택 화면 표시 function showAISelector() { document.getElementById('aiModalTitle').textContent = 'اپنا اے آئی اسسٹنٹ منتخب کریں'; document.getElementById('aiSelector').style.display = 'flex'; document.getElementById('geminiChat').style.display = 'none'; document.getElementById('apiKeySetup').style.display = 'none'; aiModalState.currentView = 'selector'; } // Gemini 채팅 화면 표시 function showGeminiChat() { document.getElementById('aiModalTitle').innerHTML = ' Gemini AI Assistant'; document.getElementById('aiSelector').style.display = 'none'; document.getElementById('geminiChat').style.display = 'flex'; document.getElementById('apiKeySetup').style.display = 'none'; aiModalState.currentView = 'gemini'; const chatMessages = document.getElementById('chatMessages'); if (!chatMessages.innerHTML.trim()) { addMessage('assistant', `Hello! I can help you with: • Creating effective flashcard content • Study techniques and memorization strategies • Spaced repetition optimization • Converting notes into flashcard format • Memory improvement tips What would you like to know about flashcards or studying?`); } } // API 키 설정 화면 표시 function showAPIKeySetup() { document.getElementById('aiModalTitle').textContent = 'Setup Gemini API'; document.getElementById('aiSelector').style.display = 'none'; document.getElementById('geminiChat').style.display = 'none'; document.getElementById('apiKeySetup').style.display = 'block'; aiModalState.currentView = 'setup'; } // AI 선택 처리 function selectAI(aiType) { const cardCount = flashcards.length; switch(aiType) { case 'chatgpt': let chatContext = `I'm using a Flash Card Maker tool on WIA Code platform. `; if (cardCount > 0) { chatContext += `I have ${cardCount} flashcards created. `; } chatContext += `Can you help me with flashcard creation strategies, study techniques, or memory improvement methods?`; const chatUrl = `https://chat.openai.com/?q=${encodeURIComponent(chatContext)}`; window.open(chatUrl, '_blank'); closeAIModal(); trackEvent('ai_selection', { ai_type: 'chatgpt' }); break; case 'claude': let claudeContext = `I'm using a Flash Card Maker tool. `; if (cardCount > 0) { claudeContext += `I have ${cardCount} flashcards in my deck. `; } claudeContext += `Please help me with effective flashcard design, spaced repetition strategies, or study optimization techniques.`; const claudeUrl = `https://claude.ai/chat?q=${encodeURIComponent(claudeContext)}`; window.open(claudeUrl, '_blank'); closeAIModal(); trackEvent('ai_selection', { ai_type: 'claude' }); break; case 'gemini': if (!aiModalState.apiKey) { showAPIKeySetup(); } else { showGeminiChat(); } trackEvent('ai_selection', { ai_type: 'gemini' }); break; } } // API 키 저장 function saveGeminiApiKey() { const apiKey = document.getElementById('geminiApiKeyInput').value.trim(); if (apiKey) { localStorage.setItem('geminiApiKey', apiKey); aiModalState.apiKey = apiKey; showGeminiChat(); updateAPIKeyStatus(); } else { alert('Please enter a valid API key'); } } // API 키 상태 업데이트 function updateAPIKeyStatus() { const statusEl = document.getElementById('apiKeyStatus'); if (aiModalState.apiKey) { statusEl.innerHTML = 'اے پی آئی کی تبدیل کریں'; } else { statusEl.textContent = 'No API key set'; } } // 채팅 메시지 추가 function addMessage(type, content) { const chatMessages = document.getElementById('chatMessages'); const messageDiv = document.createElement('div'); messageDiv.className = `message ${type}`; if (type === 'user') { messageDiv.innerHTML = `You: ${content}`; } else { messageDiv.innerHTML = `✨ Gemini:
${content.replace(/\n/g, '
')}`; } chatMessages.appendChild(messageDiv); chatMessages.scrollTop = chatMessages.scrollHeight; } // Gemini에 메시지 전송 async function sendToGemini() { const input = document.getElementById('geminiInput'); const message = input.value.trim(); if (!message) return; addMessage('user', message); input.value = ''; const loadingMsg = document.createElement('div'); loadingMsg.className = 'message assistant'; loadingMsg.innerHTML = '✨ Gemini:
Thinking...'; loadingMsg.id = 'loading-message'; document.getElementById('chatMessages').appendChild(loadingMsg); try { let context = `Context: User is using a Flash Card Maker on WIA Code platform. `; if (flashcards.length > 0) { context += `Current deck has ${flashcards.length} flashcards. `; const recentCard = flashcards[flashcards.length - 1]; context += `Most recent card: "${recentCard.front}" -> "${recentCard.back}". `; } context += `User question: ${message}`; const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${aiModalState.apiKey}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ contents: [{ parts: [{ text: context }] }], generationConfig: { temperature: 0.7, maxOutputTokens: 1000 } }) }); const data = await response.json(); document.getElementById('loading-message').remove(); if (data.candidates && data.candidates[0] && data.candidates[0].content) { const reply = data.candidates[0].content.parts[0].text; addMessage('assistant', reply); } else { addMessage('assistant', 'Sorry, I could not generate a response. Please try again.'); } } catch (error) { document.getElementById('loading-message')?.remove(); if (error.message.includes('API key')) { addMessage('error', 'Invalid API key. Please check your API key and try again.'); showAPIKeySetup(); } else { addMessage('error', 'Failed to connect to Gemini. Please check your internet connection and try again.'); } } } // ========== EVENT LISTENERS ========== document.addEventListener('DOMContentLoaded', function() { // Initialize updateStats(); updateDeckDisplay(); updatePreview(); // AI 버튼 이벤트 document.getElementById('aiBtn').addEventListener('click', openAIModal); // 모달 외부 클릭시 닫기 document.getElementById('aiModal').addEventListener('click', function(e) { if (e.target === this) { closeAIModal(); } }); // 키보드 이벤트 document.addEventListener('keydown', function(e) { if (e.key === 'Enter') { const geminiInput = document.getElementById('geminiInput'); if (document.activeElement === geminiInput) { sendToGemini(); } } if (e.key === 'Escape') { closeAIModal(); } // Study mode keyboard shortcuts if (!document.getElementById('studyInterface').classList.contains('hidden')) { if (e.key === ' ') { e.preventDefault(); flipCard('studyCard'); } else if (e.key === 'ArrowRight' || e.key === 'Enter') { e.preventDefault(); nextCard(); } } }); // 초기 API 키 상태 업데이트 updateAPIKeyStatus(); updateCurrentYear(); updateToolCount(); }); // Track analytics events document.querySelectorAll('a[href*="wia"]').forEach(link => { link.addEventListener('click', function() { trackEvent('wia_link_click', { link: link.textContent }); }); }); // ========== DYNAMIC TOOL COUNT ========== async function updateToolCount() { try { const fallbackCount = 333; document.querySelectorAll('.dynamic-tools-count').forEach(el => { el.textContent = `${fallbackCount}+ free online tools in 206 languages. No signup, no fees, just tools that work.`; }); document.querySelectorAll('.dynamic-count').forEach(el => { const prefix = el.getAttribute('data-text') || ''; const suffix = el.getAttribute('data-suffix') || ''; const icon = el.textContent.split(' ')[0] || ''; el.textContent = `${icon} ${prefix} ${fallbackCount}+ ${suffix}`; }); } catch (error) { console.log('Tool count API not available'); } } function updateCurrentYear() { const currentYear = new Date().getFullYear(); document.querySelectorAll('.current-year').forEach(el => { el.textContent = currentYear; }); } // ========== ANALYTICS ========== window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-XXXXXXXXX'); trackEvent('page_view', { tool: TOOL_CONFIG.name, category: TOOL_CONFIG.category });