Install EasySBTET
Add to home screen for faster access
Loading your SBTET data…
Please wait a moment while we fetch your records

👤 Student Profile

📚 Consolidated Result

📅 Attendance Summary

⚠️ Backlogs Summary

🔔 Notification Status

📈 Semester Performance (SGPA)

🗓️ Attendance Calendar

← swipe to see more months →

🎯 75% Attendance

📜 Academic History

🎓
Student Registered Just now
Loading...

How to use EasySBTET | Terms & Conditions | Privacy Policy

Creatively Crafted by NSD Creations

Follow @easysbtet WhatsApp Channel

🔔 Notifications

// ── Bulletproof Ad Engine & Sponsor Showcase ─────────────────────── (function() { const MASTER_FALLBACK_CAMPAIGNS = [ { id: "camp-1789147381671-4394", name: "Employability Skills DLH", imageUrl: "https://jziobbkrkblxjufvzagh.supabase.co/storage/v1/object/public/ads/ad-1789147397649-newEmpoyabilitySkills.png", linkUrl: "https://wa.me/919032708241?text=Hello%20Mam%2C%20I%20am%20interested%20in%20the%20Employability%20Skills%20program%20advertised%20on%20the%20EasySBTET%20Website.%20I%20would%20like%20to%20know%20more%20about%20the%20course%2C%20including%20the%20syllabus%2C%20fees%2C%20class%20timings%2C%20and%20registration%20process.%20Please%20share%20the%20details.%20Thank%20you%2C%20Mam.&source=easysbtet", startDate: "", endDate: "", isActive: true, placements: ["home-top", "dashboard-bottom"] }, { id: "camp-1789147420467-1658", name: "DLH Spoken English", imageUrl: "https://jziobbkrkblxjufvzagh.supabase.co/storage/v1/object/public/ads/ad-1789147432178-newspokenenglishdlh.png", linkUrl: "https://dheeruslearnershub.vercel.app/courses?source=easysbtet&utm_source=easysbtet&utm_medium=banner&utm_campaign=spoken_english", startDate: "", endDate: "", isActive: true, placements: ["home-top", "dashboard-bottom"] }, { id: "camp-1789147446967-9733", name: "EasySBTET Instagram Ad", imageUrl: "https://jziobbkrkblxjufvzagh.supabase.co/storage/v1/object/public/ads/ad-1789147458112-easysbtetinstaad.png", linkUrl: "https://instagram.com/easysbtet?source=easysbtet", startDate: "", endDate: "", isActive: true, placements: ["home-top", "home-bottom", "dashboard-top", "dashboard-bottom"] }, { id: "camp-1789147477037-2259", name: "sree academy", imageUrl: "https://jziobbkrkblxjufvzagh.supabase.co/storage/v1/object/public/ads/ad-1789147531876-sree_academy_adv.png.jpeg", linkUrl: "https://play.google.com/store/apps/details?id=co.alicia.bxkbu&referrer=utm_source%3Deasysbtet%26utm_medium%3Dbanner%26utm_campaign%3Dsree_academy%26source%3Deasysbtet", startDate: "", endDate: "", isActive: true, placements: ["home-bottom", "dashboard-top"] }, { id: "camp-1789147549276-136", name: "IT Sree Academy", imageUrl: "https://jziobbkrkblxjufvzagh.supabase.co/storage/v1/object/public/ads/ad-1789147559479-ITadsreeacademy.png.jpeg", linkUrl: "https://pixelsolutionsonline.com/?source=easysbtet&utm_source=easysbtet&utm_medium=banner&utm_campaign=sree_academy_it", startDate: "", endDate: "", isActive: true, placements: ["home-bottom", "dashboard-top"] } ]; function isCampaignValid(camp) { if (!camp || camp.isActive === false) return false; if (!camp.imageUrl || camp.imageUrl.trim() === '') return false; const now = new Date(); if (camp.startDate && camp.startDate.trim() !== '') { const s = new Date(camp.startDate); if (!isNaN(s) && now < s) return false; } if (camp.endDate && camp.endDate.trim() !== '') { const e = new Date(camp.endDate); if (!isNaN(e) && now > e) return false; } return true; } function formatTrackedAdUrl(rawUrl, camp, spotId) { if (!rawUrl || rawUrl === '#' || rawUrl.startsWith('javascript:')) return rawUrl || '#'; try { const slug = (camp && camp.name) ? camp.name.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '') : 'sponsor_ad'; // Google Play Store URL — must use official &referrer= param for app install tracking if (rawUrl.includes('play.google.com/store/apps/details')) { const urlObj = new URL(rawUrl); const referrerVal = `utm_source=easysbtet&utm_medium=banner&utm_campaign=${encodeURIComponent(slug)}&source=easysbtet` + (spotId ? `&utm_content=${encodeURIComponent(spotId)}` : ''); if (!urlObj.searchParams.has('referrer')) { urlObj.searchParams.set('referrer', referrerVal); } if (!urlObj.searchParams.has('source')) urlObj.searchParams.set('source', 'easysbtet'); return urlObj.toString(); } // WhatsApp click-to-chat links if (rawUrl.includes('wa.me') || rawUrl.includes('api.whatsapp.com')) { const sep = rawUrl.includes('?') ? '&' : '?'; if (!rawUrl.includes('source=')) { return rawUrl + sep + 'source=easysbtet'; } return rawUrl; } // Instagram profile links if (rawUrl.includes('instagram.com')) { const urlObj = new URL(rawUrl); if (!urlObj.searchParams.has('source')) urlObj.searchParams.set('source', 'easysbtet'); return urlObj.toString(); } // All regular web URLs const urlObj = new URL(rawUrl, window.location.origin); urlObj.searchParams.set('source', 'easysbtet'); urlObj.searchParams.set('utm_source', 'easysbtet'); urlObj.searchParams.set('utm_medium', 'banner'); if (!urlObj.searchParams.has('utm_campaign')) urlObj.searchParams.set('utm_campaign', slug); if (spotId && !urlObj.searchParams.has('utm_content')) urlObj.searchParams.set('utm_content', spotId); return urlObj.toString(); } catch(e) { const sep = rawUrl.includes('?') ? '&' : '?'; return rawUrl + sep + 'source=easysbtet&utm_source=easysbtet&utm_medium=banner'; } } window.trackAdClick = function(campId, campName, spotId, destUrl) { try { const payload = JSON.stringify({ campaign_id: campId, campaign_name: campName, spot_id: spotId, destination_url: destUrl, page: window.location.pathname }); if (navigator.sendBeacon) { navigator.sendBeacon('/api/ads/click', payload); } else { fetch('/api/ads/click', { method: 'POST', body: payload, headers: { 'Content-Type': 'application/json' }, keepalive: true }).catch(() => {}); } } catch(e) {} }; function renderAds(config) { let campaigns = []; if (config && config.campaigns && Array.isArray(config.campaigns) && config.campaigns.length > 0) { campaigns = config.campaigns; } else { campaigns = MASTER_FALLBACK_CAMPAIGNS; } const validCampaigns = campaigns.filter(isCampaignValid); const activePool = validCampaigns.length > 0 ? validCampaigns : MASTER_FALLBACK_CAMPAIGNS; const spotAdMap = {}; activePool.forEach(camp => { const placements = (camp.placements && Array.isArray(camp.placements) && camp.placements.length > 0) ? camp.placements : ['dashboard-top', 'dashboard-bottom']; placements.forEach(spotId => { if (!spotAdMap[spotId]) spotAdMap[spotId] = []; spotAdMap[spotId].push(camp); }); }); const isAdManager = new URLSearchParams(window.location.search).get('ad-manager') === 'true' && window.innerWidth > 640; document.querySelectorAll('.ad-spot').forEach(spot => { const spotId = spot.getAttribute('data-spot-id') || 'dashboard-top'; // If no ad specifically assigned to this spot, gracefully use any active campaign let ads = spotAdMap[spotId] || []; if (ads.length === 0 && activePool.length > 0) { ads = activePool; } if (spot._carouselInterval) { clearInterval(spot._carouselInterval); spot._carouselInterval = null; } if (ads.length > 0) { spot.dataset.hasAds = 'true'; let adsHtml = ''; ads.forEach((ad, index) => { const opacity = index === 0 ? '1' : '0'; const zIndex = index === 0 ? '2' : '1'; const pointerEvents = index === 0 ? 'auto' : 'none'; const finalUrl = formatTrackedAdUrl(ad.linkUrl, ad, spotId); const safeCampName = (ad.name || 'Ad').replace(/"/g, '"'); const safeCampId = (ad.id || '').replace(/"/g, '"'); adsHtml += ` Official Sponsor `; }); let managerOverlay = ''; if (isAdManager) { managerOverlay = `
📍 ${spotId} (${ads.length} ongoing ad${ads.length > 1 ? 's' : ''})
${ads.map((ad, idx) => ` `).join('')}
`; } spot.innerHTML = `
SPONSORED ${managerOverlay}
${adsHtml}
`; spot.style.removeProperty('display'); spot.style.display = 'block'; if (ads.length > 1) { let currentIndex = 0; const slides = spot.querySelectorAll('.ad-slide'); spot._carouselInterval = setInterval(() => { if (!slides || slides.length === 0) return; const currentSlide = slides[currentIndex]; currentIndex = (currentIndex + 1) % slides.length; const nextSlide = slides[currentIndex]; if (nextSlide && currentSlide) { nextSlide.style.opacity = '1'; nextSlide.style.zIndex = '2'; nextSlide.style.pointerEvents = 'auto'; currentSlide.style.opacity = '0'; currentSlide.style.zIndex = '1'; currentSlide.style.pointerEvents = 'none'; } }, 5000); } } }); } // 1. Initial 0ms synchronous render from cache or fallback try { const cachedStr = localStorage.getItem('cached_ad_config_v2'); if (cachedStr) { const parsed = JSON.parse(cachedStr); if (parsed && parsed.campaigns && parsed.campaigns.length > 0) { renderAds(parsed); } else { renderAds({ campaigns: MASTER_FALLBACK_CAMPAIGNS }); } } else { renderAds({ campaigns: MASTER_FALLBACK_CAMPAIGNS }); } } catch(e) { renderAds({ campaigns: MASTER_FALLBACK_CAMPAIGNS }); } // 2. Real-time Live Ad Sync let isSyncingAds = false; function syncAdConfigLive() { if (isSyncingAds) return; isSyncingAds = true; fetch('/api/ad-config?t=' + Date.now()) .then(r => r.json()) .then(data => { isSyncingAds = false; if (data && data.success && data.config) { const cfg = (data.config.campaigns && data.config.campaigns.length > 0) ? data.config : { campaigns: MASTER_FALLBACK_CAMPAIGNS }; const newStr = JSON.stringify(cfg); try { localStorage.setItem('cached_ad_config_v2', newStr); localStorage.removeItem('cached_ad_config'); } catch(e) {} renderAds(cfg); } else { renderAds({ campaigns: MASTER_FALLBACK_CAMPAIGNS }); } }) .catch(e => { isSyncingAds = false; renderAds({ campaigns: MASTER_FALLBACK_CAMPAIGNS }); }); } // Initial fetch immediately syncAdConfigLive(); // Periodic heartbeat sync (every 15 seconds) setInterval(syncAdConfigLive, 5 * 60 * 1000); // Sync on tab focus / visibility document.addEventListener('visibilitychange', () => { if (document.visibilityState === 'visible') syncAdConfigLive(); }); window.addEventListener('focus', syncAdConfigLive); // Cross-tab instant sync window.addEventListener('storage', (e) => { if (e.key === 'cached_ad_config_v2' && e.newValue) { try { const newConfig = JSON.parse(e.newValue); renderAds(newConfig); } catch(err) {} } }); window.renderAds = renderAds; })();
Subscribe for Updates
🔔