पोर्टफोलियो क्यों ज़रूरी है? "Hello, World" से आगे कैसे बढ़ें
\nJavaScript की नौकरी के इंटरव्यू में, कंपनियां आपके कोर्स सर्टिफिकेट नहीं, बल्कि तीन चीज़ें देखती हैं: कोड, लॉजिक और प्रोजेक्ट को पूरा करने की क्षमता। JavaScript पोर्टफोलियो प्रोजेक्ट्स ही वह पुल हैं जो "मुझे थ्योरी आती है" से "मैं बिज़नेस की समस्या हल कर सकता हूं" तक ले जाते हैं।
\nज्यादातर शुरुआती लोग अनगिनत ट्यूटोरियल्स में फंस जाते हैं। "एक हफ्ते में 10 प्रोजेक्ट बनाओ" - यह अच्छा लगता है, लेकिन असल में आप एक ही कैलकुलेटर के 10 क्लोन बना लेते हैं। मैं एक अलग रास्ता सुझाता हूं: 5 ऐसे प्रोजेक्ट्स जो आपकी असली क्षमता दिखाएंगे और Junior/Middle JavaScript Developer की 90% ज़रूरतों को पूरा करेंगे।
\nइस लेख में आपको सिर्फ आइडियाज नहीं, बल्कि तैयार आर्किटेक्चर, रियल कोड के टुकड़े और यह समझ मिलेगी कि क्यों यह प्रोजेक्ट आपको दूसरे कैंडिडेट्स से अलग करेगा। चलिए शुरू करते हैं!
\n\n\n\n
1. एडवांस्ड To-Do List: सिर्फ "जोड़ें-हटाएं" नहीं
\nयह दुनिया का सबसे सामान्य प्रोजेक्ट है। लेकिन अगर आप इसे बाकियों की तरह बनाएंगे, तो कोई नोटिस नहीं करेगा। बनाएं एक Kanban बोर्ड drag-and-drop के साथ पूरी तरह से JavaScript में। इससे पता चलेगा कि आप DOM इवेंट्स, LocalStorage और async/async को समझते हैं।
\n\nइसमें क्या होना चाहिए
\n- \n
- तीन कॉलम: "प्लान में", "काम चल रहा है", "पूरा हो गया" \n
- कार्ड को खींचकर दूसरे कॉलम में डालें, पोजीशन LocalStorage में सेव हो \n
- टैग के हिसाब से फिल्टर (काम/निजी/जरूरी)
- डार्क थीम (UX के प्रति आपकी समझ दिखाता है)
शुद्ध JS में drag-and-drop का उदाहरण
\nconst draggables = document.querySelectorAll('.task');\nconst containers = document.querySelectorAll('.column');\n\ndraggables.forEach(task => {\n task.addEventListener('dragstart', () => {\n task.classList.add('dragging');\n });\n\n task.addEventListener('dragend', () => {\n task.classList.remove('dragging');\n saveToLocalStorage(); // कस्टम सेव फंक्शन\n });\n});\n\ncontainers.forEach(column => {\n column.addEventListener('dragover', e => {\n e.preventDefault();\n const afterElement = getDragAfterElement(column, e.clientY);\n const draggable = document.querySelector('.dragging');\n if (afterElement == null) {\n column.appendChild(draggable);\n } else {\n column.insertBefore(draggable, afterElement);\n }\n });\n});\n\nfunction getDragAfterElement(container, y) {\n const draggableElements = [...container.querySelectorAll('.task:not(.dragging)')];\n return draggableElements.reduce((closest, child) => {\n const box = child.getBoundingClientRect();\n const offset = y - box.top - box.height / 2;\n if (offset < 0 && offset > closest.offset) {\n return { offset: offset, element: child };\n } else {\n return closest;\n }\n }, { offset: Number.NEGATIVE_INFINITY }).element;\n}\n\n\nयह क्यों शानदार है: आप ब्राउज़र की इवेंट मॉडल, कोऑर्डिनेट्स के साथ काम और परफॉरमेंस ऑप्टिमाइज़ेशन (debounce ज़रूरी नहीं, लेकिन readme में ज़िक्र कर सकते हैं) की समझ दिखाते हैं।
\n\n\n\n
2. जियोलोकेशन और एनिमेशन के साथ मौसम ऐप
\nAPI रिक्वेस्ट आधुनिक फ्रंटएंड की नींव है। fetch, async/await और एरर हैंडलिंग वाला JavaScript प्रोजेक्ट पोर्टफोलियो में ज़रूर होना चाहिए। इसमें विज़ुअलाइज़ेशन जोड़ें: एनिमेटेड बादल, बारिश या बर्फ CSS/Canvas पर।
मुख्य फीचर्स
\n- \n
- Geolocation API से लोकेशन पता करें \n
- शहरों की खोज सुझावों के साथ (input पर debounce) \n
- तापमान, नमी, हवा और मौसम आइकन दिखाएं \n
- 5 दिन का तापमान ग्राफ (Chart.js या कस्टम SVG) \n
OpenWeatherMap API कॉल का उदाहरण
\nasync function getWeather(city) {\n const API_KEY = 'आपकी_कुंजी';\n const url = `https://api.openweatherm