diff --git a/T-115_QuanDevs/.vscode/settings.json b/T-115_QuanDevs/.vscode/settings.json new file mode 100644 index 00000000..6f3a2913 --- /dev/null +++ b/T-115_QuanDevs/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/T-115_QuanDevs/README.md b/T-115_QuanDevs/README.md new file mode 100644 index 00000000..b67dff0d --- /dev/null +++ b/T-115_QuanDevs/README.md @@ -0,0 +1,58 @@ +# πŸ₯ HealthSpot +**Your Health, Our Priority** + +🌐 Hosted Website: [πŸ‘‰ Click Here](https://myhealthspot.netlify.app/) + +--- + +## πŸ“Œ Project Overview +**HealthSpot** is a healthcare web application built to simplify storing, accessing, and managing medical records. +It generates a **unique 9-digit Health ID Number πŸͺͺ** for every user, which securely stores their complete health history and records online. + +--- + +## πŸš€ Features +- βœ… Generates a **9-digit unique Health ID** +- 🩺 Stores and manages **complete health records** +- πŸ’» Clean, responsive, and user-friendly interface +- ☁️ Cloud-based access – no installation needed + +--- + +## πŸ“Έ Screenshot + + +### πŸ–ΌοΈ Local Project Screenshot +![HealthSpot SS](https://raw.githubusercontent.com/Gurkirat19/DevCreate-BuildFest/main/T-115_QuanDevs/src/HEalthSpot-SS.png) + +![HealthSpot Screenshot](https://github.com/iarmaansingh/HealthSpot/assets/141659365/696f9577-381c-47c2-ac5d-98468f4f8327) + +--- + +## πŸ‘¨β€πŸ’» Team Information + +| Team Name | QunDevs | +|-----------|----------| +| **Team ID** | t115 | + +### πŸ‘₯ Members & Roles +- **Rajdeep** – Team Leader & Overall Manager +- **Gurkirat** – Backend Developer +- **Nikhil** – Frontend Developer +- **Armaan** – Frontend Developer +- **Ipsit** – Presentation (PPT) + +--- + +## πŸ› οΈ Tech Stack Used +- **Frontend:** HTML, CSS, JavaScript +- **Backend:** Python + +--- + +## βš™οΈ How to Run the Project + +### 🌐 Option 1: Run Online +The project is deployed and can be accessed directly here: +πŸ‘‰ [HealthSpot Live Website](https://myhealthspot.netlify.app/) + diff --git a/T-115_QuanDevs/T-115_QuanDev.pptx b/T-115_QuanDevs/T-115_QuanDev.pptx new file mode 100644 index 00000000..8ccb33de Binary files /dev/null and b/T-115_QuanDevs/T-115_QuanDev.pptx differ diff --git a/T-115_QuanDevs/index.html b/T-115_QuanDevs/index.html new file mode 100644 index 00000000..75564205 --- /dev/null +++ b/T-115_QuanDevs/index.html @@ -0,0 +1,310 @@ + + + + + + + HealthSpot - Aadhaar For Healthcare + + + + + + + + + + + + + + + + + +
+
+
+ +

Aadhaar For Healthcare

+

Simplify your medical records with HealthSpot’s secure, + Aadhaar-like Health ID. Access anytime, anywhere.

+
+ +
+
+
+ + Medical illustration +
+
+
+ + + +
+
+

Why Choose HealthSpot?

+
+
+
πŸ†”
+

Universal Health ID

+

Carry your complete medical history in one secure digital HealthSpot ID.

+
+
+
πŸ“±
+

QR Code for Easy Sharing

+

Generate a secure QR code to instantly share your health data with doctors, hospitals, or emergency + responders.

+
+
+
⚑
+

Instant Access

+

Access your health data anytime, from any device, in seconds.

+
+
+
+
+ + +
+
+

Applications & Use Cases

+ +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/T-115_QuanDevs/pages/admin.html b/T-115_QuanDevs/pages/admin.html new file mode 100644 index 00000000..98abf83a --- /dev/null +++ b/T-115_QuanDevs/pages/admin.html @@ -0,0 +1,110 @@ + + + + + + Admin Login - HealthSpot + + + + + + + + +
+ + 🩺 HealthSpot + +
+ + + + + + + +
+
+

Admin Login

+ + + + + + + + +
+
+ + + + + + + + diff --git a/T-115_QuanDevs/pages/admin.js b/T-115_QuanDevs/pages/admin.js new file mode 100644 index 00000000..b56e856d --- /dev/null +++ b/T-115_QuanDevs/pages/admin.js @@ -0,0 +1,406 @@ +const BIN_ID = '68344ecd8a456b7966a583dd'; +const API_KEY = '$2a$10$zyQpm6tNv6SvPgWM2E1D1eDfvL1zWu8pc2YI1prGoUikZKK4Zwhd.'; + +document.addEventListener('DOMContentLoaded', () => { + const loginForm = document.getElementById('loginForm'); + loginForm.addEventListener('submit', handleLogin); + + // Add loader CSS globally once + const style = document.createElement('style'); + style.innerHTML = ` + .loader { + border: 8px solid #e5e7eb; + border-top: 8px solid #3490dc; + border-radius: 9999px; + width: 6rem; + height: 6rem; + animation: spin 1s linear infinite; + } + @keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } + `; + document.head.appendChild(style); +}); + +async function handleLogin(event) { + event.preventDefault(); + const loginId = event.target.loginId.value.trim(); + const password = event.target.password.value; + + if (loginId === 'admin' && password === 'singh@armaan') { + const main = document.getElementById('mainContent'); + main.innerHTML = ` +
+
+

Loading user data...

+
+ `; + + await loadAllUsers(); + } else { + alert('Invalid login ID or password'); + } +} + +async function loadAllUsers() { + const main = document.getElementById('mainContent'); + main.innerHTML = ` +
+
+

Loading all users...

+
+ `; + + try { + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + + if (!response.ok) throw new Error('Failed to fetch user data'); + + const data = await response.json(); + const users = data.record || []; + + + showAllUsers(users); + } catch (error) { + main.innerHTML = `

Error loading user data: ${error.message}

`; + } +} + + + + + function renderSearchBar() { + const main = document.getElementById('mainContent'); + + // Remove existing search container if any + const existingSearch = document.getElementById('searchContainer'); + if (existingSearch) existingSearch.remove(); + + const searchContainer = document.createElement('div'); + searchContainer.id = 'searchContainer'; + searchContainer.className = 'max-w-3xl mx-auto mb-6 flex items-center gap-2'; + + searchContainer.innerHTML = ` + + + + `; + + main.appendChild(searchContainer); + + document.getElementById('searchInput').addEventListener('keydown', (e) => { + if (e.key === 'Enter') searchUsers(); + }); + } + + function resetSearch() { + const searchInput = document.getElementById('searchInput'); + if (!searchInput) return; + + searchInput.value = ''; + // Reload all users + loadAllUsers(); // assuming you have a function to load and show all users + } + +function showAllUsers(users) { + const main = document.getElementById('mainContent'); + main.innerHTML = ''; + main.className = 'p-6 mt-20 min-h-screen'; + + // Add Search Bar at the top + renderSearchBar(); + + const deleteAllBtn = document.getElementById('deleteAllBtn'); + + if (users.length > 0) { + deleteAllBtn.style.display = 'inline-block'; + + users.sort((a, b) => { + // Check if a or b is the default user (no fullName or 'User') + const aIsDefault = !a.fullName || a.fullName === 'Default User'; + const bIsDefault = !b.fullName || b.fullName === 'Default User'; + + if (aIsDefault && !bIsDefault) return 1; // a should come after b + if (!aIsDefault && bIsDefault) return -1; // a should come before b + + // If both are default or both not default, sort by date desc + return new Date(b.registeredAt) - new Date(a.registeredAt); + }); + } else { + deleteAllBtn.style.display = 'none'; + renderSearchBar(); + main.innerHTML += `

No users found matching your search.

`; + return; + } + + users.forEach(user => { + const container = document.createElement('div'); + container.className = 'bg-white p-6 rounded-xl shadow-md mb-6 max-w-3xl mx-auto w-full text-blue-900'; + + const date = new Date(user.registeredAt); + const formattedDate = `${date.getDate()} ${date.toLocaleString('default', { month: 'short' })} ${date.getFullYear()} - ${date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: true })}`; + + container.innerHTML = ` +
+

${user.fullName || 'User'}

+
+ + +
+
+
+
Health ID: ${user.healthId || 'N/A'}
+
Email: ${user.email || 'N/A'}
+
Phone: ${user.phone || 'N/A'}
+
DOB: ${user.dob || 'N/A'}
+
Gender: ${user.gender || 'N/A'}
+
Blood Group: ${user.bloodGroup || 'Not Provided'}
+
Allergies: ${user.allergies || 'Not Provided'}
+
Chronic Conditions: ${user.chronicConditions || 'Not Provided'}
+
Current Medications: ${user.currentMedications || 'Not Provided'}
+
Medical History: ${user.medicalHistory || 'None'}
+
Registered At: ${user.registeredAt ? formattedDate : 'N/A'}
+
+ `; + + main.appendChild(container); + }); +} + +async function searchUsers() { + const searchInput = document.getElementById('searchInput'); + if (!searchInput) { + console.error("Search input not found!"); + return; + } + + const query = searchInput.value.trim().toLowerCase(); + const main = document.getElementById('mainContent'); + + try { + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + if (!response.ok) throw new Error('Failed to fetch user data'); + const data = await response.json(); + const users = data.record || []; + + if (!query) { + showAllUsers(users); + return; + } + + const filteredUsers = users.filter(user => { + const fullName = (user.fullName || '').toLowerCase(); + const healthId = (user.healthId || '').toLowerCase(); + return fullName.includes(query) || healthId.includes(query); + }); + + if (filteredUsers.length === 0) { + main.innerHTML = ''; + main.className = 'p-6 mt-20 min-h-screen'; + renderSearchBar(); + main.innerHTML += `

No users found matching "${query}".

`; + return; + } + + showAllUsers(filteredUsers); + + } catch (error) { + main.innerHTML = `

Error loading user data: ${error.message}

`; + } +} + + + +async function deleteAllUsers() { + if (!confirm("Are you sure you want to delete ALL users? This action cannot be undone.")) return; + + // Default user to prevent blank bin error + const defaultUser = { + id: "default", + fullName: "Default User", + registeredAt: new Date().toISOString() + }; + + try { + const updateResponse = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + 'X-Master-Key': API_KEY, + 'X-Bin-Versioning': 'false' + }, + body: JSON.stringify([defaultUser]) + }); + + if (!updateResponse.ok) { + const errorData = await updateResponse.json(); + console.error('Delete all users error:', errorData); + throw new Error(errorData.message || 'Failed to delete all users'); + } + + alert('All users deleted successfully'); + await loadAllUsers(); + + } catch (error) { + alert(`Error deleting all users: ${error.message}`); + } +} + + + +async function deleteUser(healthId) { + if (!confirm("Are you sure you want to delete this user?")) return; + + try { + // Fetch latest data + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + const data = await response.json(); + let users = data.record || []; + + // Remove the selected user by healthId + users = users.filter(user => user.healthId !== healthId); + + // PUT the updated data back (with versioning disabled) + const updateResponse = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + 'X-Master-Key': API_KEY, + 'X-Bin-Versioning': 'false' + }, + body: JSON.stringify(users) + }); + + if (!updateResponse.ok) throw new Error('Failed to delete user'); + + alert('User deleted successfully'); + await loadAllUsers(); + + } catch (error) { + alert(`Error deleting user: ${error.message}`); + } +} + +function closeEditModal() { + document.getElementById('editModal').classList.add('hidden'); +} + +async function editUser(healthId) { + try { + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + const data = await response.json(); + const users = data.record || []; + const user = users.find(u => u.healthId === healthId); + + if (!user) { + alert('User not found!'); + return; + } + + // Fill form fields + const form = document.getElementById('editForm'); + form.healthId.value = user.healthId; + form.fullName.value = user.fullName || ''; + form.email.value = user.email || ''; + form.phone.value = user.phone || ''; + form.bloodGroup.value = user.bloodGroup || ''; + form.allergies.value = user.allergies || ''; + form.conditions.value = user.chronicConditions || ''; + form.medications.value = user.currentMedications || ''; + form.medicalHistory.value = user.medicalHistory || ''; + + // Show modal + document.getElementById('editModal').classList.remove('hidden'); + + } catch (error) { + alert(`Error fetching user: ${error.message}`); + } +} + +document.getElementById('editForm').addEventListener('submit', async (event) => { + event.preventDefault(); + const form = event.target; + + try { + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + const data = await response.json(); + let users = data.record || []; + + const index = users.findIndex(u => u.healthId === form.healthId.value); + if (index === -1) { + alert('User not found'); + return; + } + + // Update user object + users[index] = { + ...users[index], + fullName: form.fullName.value, + email: form.email.value, + phone: form.phone.value, + bloodGroup: form.bloodGroup.value, + allergies: form.allergies.value, + chronicConditions: form.conditions.value, + currentMedications: form.medications.value, + medicalHistory: form.medicalHistory.value + }; + + // PUT updated data back + const updateResponse = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + 'X-Master-Key': API_KEY, + 'X-Bin-Versioning': 'false' + }, + body: JSON.stringify(users) + }); + + if (!updateResponse.ok) throw new Error('Failed to update user'); + + alert('User updated successfully'); + closeEditModal(); + await loadAllUsers(); + + } catch (error) { + alert(`Error updating user: ${error.message}`); + } +}); + diff --git a/T-115_QuanDevs/pages/already-user.html b/T-115_QuanDevs/pages/already-user.html new file mode 100644 index 00000000..cacb122b --- /dev/null +++ b/T-115_QuanDevs/pages/already-user.html @@ -0,0 +1,73 @@ + + + + + + HealthSpot - Check Your Health Details + + + + + + +
+
+
+ +
+
+

🩺 HealthSpot

+

Check Your Health Details

+ + + + + + + +
+
+ + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/pages/already-user.js b/T-115_QuanDevs/pages/already-user.js new file mode 100644 index 00000000..60cc1487 --- /dev/null +++ b/T-115_QuanDevs/pages/already-user.js @@ -0,0 +1,78 @@ +window.addEventListener('load', () => { + setTimeout(() => { + const loader = document.getElementById('loader'); + const main = document.getElementById('main-content'); + loader.style.display = 'none'; + main.style.opacity = '1'; + }, 1000); +}); + +function showPopup(message) { + document.getElementById('popupMessage').innerText = message; + document.getElementById('messagePopup').classList.remove('hidden'); +} + +function closePopup() { + document.getElementById('messagePopup').classList.add('hidden'); +} + + +const BIN_ID = '68344ecd8a456b7966a583dd'; +const API_KEY = '$2a$10$zyQpm6tNv6SvPgWM2E1D1eDfvL1zWu8pc2YI1prGoUikZKK4Zwhd.'; + +// Track login attempts +let loginAttempts = 0; +const maxAttempts = 3; + +async function loginUser() { + const email = document.getElementById('loginEmailId').value.trim(); + const password = document.getElementById('loginPassword').value.trim(); + + if (!email || !password) { + showPopup('⚠️ Please enter both Email and Password.'); + return; + } + + if (loginAttempts >= maxAttempts) { + showPopup('🚫 You have reached the maximum number of login attempts.'); + return; + } + + try { + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + + if (!response.ok) { + throw new Error('Failed to fetch user data.'); + } + + const data = await response.json(); + const users = Array.isArray(data.record) ? data.record : []; + + const user = users.find(u => u.email === email && u.password === password); + + if (user) { + const popup = document.getElementById('popup'); + popup.classList.remove('hidden'); + + sessionStorage.setItem('loggedInUser', JSON.stringify(user)); + + setTimeout(() => { + window.location.href = 'healthid.html'; + }, 2000); + } else { + loginAttempts++; + const remainingAttempts = maxAttempts - loginAttempts; + + if (remainingAttempts > 0) { + showPopup(`❌ Invalid credentials. ${remainingAttempts} attempt(s) left.`); + } else { + showPopup('🚫 You have reached the maximum number of login attempts.'); + } + } + } catch (error) { + console.error(error); + alert('Failed to fetch user data.'); + } +} diff --git a/T-115_QuanDevs/pages/entery.html b/T-115_QuanDevs/pages/entery.html new file mode 100644 index 00000000..83e0a26c --- /dev/null +++ b/T-115_QuanDevs/pages/entery.html @@ -0,0 +1,47 @@ + + + + + + HealthSpot - Choose User Type + + + + + + + + + +
+ + 🩺 HealthSpot + + + + + + Admin Login + +
+ + +
+
+

Welcome to HealthSpot

+ +
+
+ + + diff --git a/T-115_QuanDevs/pages/healthid.html b/T-115_QuanDevs/pages/healthid.html new file mode 100644 index 00000000..ce8ca02f --- /dev/null +++ b/T-115_QuanDevs/pages/healthid.html @@ -0,0 +1,82 @@ + + + + + + HealthSpot - User Dashboard + + + + + + + + +
+

+ 🩺 HealthSpot +

+
+ + + + + +
+ + +
+

+ +

Your Health Details

+ +
+ +
+
+ + + +
+
+ + QR Code for HealthSpot ID + + + +
+

HealthSpot ID Card

+
ID:
+
Name:
+
Age:
+ +
+
+
+ + + + + + +
+ + + + diff --git a/T-115_QuanDevs/pages/healthid.js b/T-115_QuanDevs/pages/healthid.js new file mode 100644 index 00000000..21555a9c --- /dev/null +++ b/T-115_QuanDevs/pages/healthid.js @@ -0,0 +1,170 @@ + function formatHealthId(id) { + return id.toString().replace(/(\d{3})(\d{3})(\d{3})/, '$1-$2-$3'); + } + + function calculateAge(dob) { + const birthDate = new Date(dob); + const today = new Date(); + let age = today.getFullYear() - birthDate.getFullYear(); + const monthDiff = today.getMonth() - birthDate.getMonth(); + if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) { + age--; + } + return age; + } + +function loadUserDetails() { + const user = JSON.parse(sessionStorage.getItem('loggedInUser')); + const healthIdDisplay = document.getElementById('healthIdDisplay'); + const detailsDiv = document.getElementById('userDetails'); + + if (!user) { + detailsDiv.innerHTML = `

❌ No user data found. Please login first.

`; + healthIdDisplay.textContent = ''; + return; + } + + healthIdDisplay.textContent = `Health ID: ${formatHealthId(user.healthId)}`; + + detailsDiv.innerHTML = ` +
+ Name: + ${user.fullName} +
+
+ Email: + ${user.email} +
+
+ Phone: + ${user.phone} +
+
+ DOB: + ${user.dob} +
+
+ Gender: + ${user.gender} +
+
+ Blood Group: + ${user.bloodGroup || 'Not Provided'} +
+
+ Allergies: + ${user.allergies || 'Not Provided'} +
+
+ Chronic Conditions: + ${user.chronicConditions || 'Not Provided'} +
+
+ Current Medications: + ${user.currentMedications || 'Not Provided'} +
+
+ Medical History: + ${user.medicalHistory || 'None'} +
+
+ Registered At: + ${new Date(user.registeredAt).toLocaleString()} +
+ `; + + // Update ID Card Section + document.getElementById('cardHealthId').textContent = formatHealthId(user.healthId); + document.getElementById('cardName').textContent = user.fullName; + document.getElementById('cardAge').textContent = calculateAge(user.dob); +} + + function logout() { + sessionStorage.removeItem('loggedInUser'); + window.location.href = 'already-user.html'; + } + + window.onload = function() { + loadUserDetails(); + + const user = JSON.parse(sessionStorage.getItem('loggedInUser')); + if (!user) return; + + const qrImg = document.getElementById('qrCode'); + + const formatDate = (dateStr) => { + const options = { day: '2-digit', month: 'short', year: 'numeric' }; + return new Date(dateStr).toLocaleDateString(undefined, options); + }; + + const qrData = + `HealthSpot User Details:\n` + + `Health ID: ${formatHealthId(user.healthId)}\n` + + `Name: ${user.fullName}\n` + + `Email: ${user.email}\n` + + `Emergency Phone: ${user.phone}\n` + + `DOB: ${formatDate(user.dob)}\n` + + `Age: ${calculateAge(user.dob)}\n` + + `Gender: ${user.gender}\n` + + `Medical History: ${user.medicalHistory || 'None'}\n` + + `Registered At: ${formatDate(user.registeredAt)}`; + + + const encodedData = encodeURIComponent(qrData); + + qrImg.src = `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${encodedData}`; + }; + +// To print the card +document.getElementById('printCardBtn').onclick = async function() { + const card = document.querySelector('section.p-6.border-indigo-300'); + const qrImg = card.querySelector('#qrCode'); + + function waitForImageLoad(img) { + return new Promise((resolve) => { + if (img.complete && img.naturalWidth !== 0) { + resolve(); + } else { + img.onload = () => resolve(); + img.onerror = () => resolve(); + } + }); + } + + if (qrImg) { + await waitForImageLoad(qrImg); + } + + await imagesLoaded(card); + await new Promise(res => setTimeout(res, 300)); + + html2canvas(card, { scale: 2, useCORS: true }).then(canvas => { + const pdfWidth = 600; // fixed width + const aspectRatio = canvas.height / canvas.width; + const pdfHeight = pdfWidth * aspectRatio; + + const pdf = new jspdf.jsPDF({ + orientation: 'landscape', + unit: 'pt', + format: [pdfWidth, pdfHeight] + }); + + pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0, pdfWidth, pdfHeight); + pdf.save('HealthSpot_ID_Card.pdf'); + }); +}; + +function imagesLoaded(container) { + const imgs = container.querySelectorAll('img'); + const promises = []; + + imgs.forEach(img => { + if (!img.complete) { + promises.push(new Promise(resolve => { + img.onload = img.onerror = resolve; + })); + } + }); + + return Promise.all(promises); +} diff --git a/T-115_QuanDevs/pages/new-user.html b/T-115_QuanDevs/pages/new-user.html new file mode 100644 index 00000000..ba938606 --- /dev/null +++ b/T-115_QuanDevs/pages/new-user.html @@ -0,0 +1,261 @@ + + + + + + New User Registration - HealthSpot + + + + + + + +
+
+
+ + +
+ + 🩺 HealthSpot + +
+ + +
+
+ +

New User Registration

+
+
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+ + +
+ +
+ + + + + + +
+ + + + + + + +

+ Use a strong password with at least 8 characters, including letters, numbers & symbols. +

+
+ +
+
+
+ + +

+ πŸ”’ Your details is completely safe with us! +

+ + +
+ + only for testing +
+ + + + +
+ OTP has been sent to your email βœ… +
+ + + + + + + + + + + diff --git a/T-115_QuanDevs/pages/new-user.js b/T-115_QuanDevs/pages/new-user.js new file mode 100644 index 00000000..58ffc934 --- /dev/null +++ b/T-115_QuanDevs/pages/new-user.js @@ -0,0 +1,338 @@ +window.addEventListener('load', () => { + setTimeout(() => { + const loader = document.getElementById('loader'); + const main = document.getElementById('main-content'); + loader.style.display = 'none'; + main.style.opacity = '1'; + }, 1000); +}); + +// HealthID Number Generator + +function generateHealthId() { + return Math.floor(100000000 + Math.random() * 900000000).toString(); +} + +function isValidEmail(email) { + // Basic email regex + const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + return re.test(email); +} + +function showOtpNotification() { + const notification = document.getElementById('otpNotification'); + notification.style.display = 'block'; + + setTimeout(() => { + notification.style.display = 'none'; + }, 3500); // hide after 3.5 seconds +} + +function showPopup(message) { + document.getElementById('popupMessage').innerText = message; + document.getElementById('messagePopup').classList.remove('hidden'); +} + +function closePopup() { + document.getElementById('messagePopup').classList.add('hidden'); +} + + + +const BIN_ID = '68344ecd8a456b7966a583dd'; +const API_KEY = '$2a$10$zyQpm6tNv6SvPgWM2E1D1eDfvL1zWu8pc2YI1prGoUikZKK4Zwhd.'; + + +let passwordFlag = false; +let generatedOtp = null; +let emailVerified = false; + + + +document.addEventListener('DOMContentLoaded', () => { + const form = document.querySelector('form'); + + const emailInput = document.getElementById('email'); + const getOtpBtn = document.getElementById('getOtpBtn'); + const otpSection = document.getElementById('otpSection'); + const otpInput = document.getElementById('otpInput'); + const verifyOtpBtn = document.getElementById('verifyOtpBtn'); + const otpStatus = document.getElementById('otpStatus'); + + let generatedOtp = ''; // Declare globally + let otpRequestCount = 0; + const MAX_OTP_REQUESTS = 1; + let emailVerified = false; + + function isValidEmail(email) { + // Simple email validation regex + return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); + } + +getOtpBtn.addEventListener('click', async () => { + if (otpRequestCount >= MAX_OTP_REQUESTS) { + alert('You have reached the maximum number of OTP requests.'); + getOtpBtn.disabled = true; + return; + } + + const email = emailInput.value.trim(); + + if (!isValidEmail(email)) { + alert('Please enter a valid email address.'); + return; + } + + // Check if email exists in database + try { + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + + if (!response.ok) { + throw new Error('Failed to fetch user data.'); + } + + const data = await response.json(); + const users = Array.isArray(data.record) ? data.record : []; + + const emailExists = users.some(user => user.email === email); + + if (emailExists) { + showPopup('⚠️ This email is already registered.'); + return; + } + + } catch (error) { + console.error(error); + showPopup('❌ Failed to fetch user data.'); + return; + } + + // If OTP already generated for this session, skip generation + if (!generatedOtp) { + generatedOtp = Math.floor(1000 + Math.random() * 9000).toString(); + + // Send OTP email using EmailJS + const templateParams = { + to_email: email, + otp: generatedOtp, + }; + + const serviceID = 'service_v7qsk6z'; + const templateID = 'template_rtepvsd'; + + try { + showOtpNotification(); + await emailjs.send(serviceID, templateID, templateParams); + otpSection.style.display = 'flex'; + otpStatus.innerHTML = `OTP sent!`; + otpStatus.style.color = 'green'; + emailVerified = false; + + // Increment only if OTP sent successfully + otpRequestCount++; + + if (otpRequestCount === MAX_OTP_REQUESTS) { + getOtpBtn.disabled = true; + } + + } catch (error) { + alert('Failed to send OTP. Please try again later.'); + } + } +}); + + + + verifyOtpBtn.addEventListener('click', () => { + if (otpInput.value === generatedOtp) { + otpStatus.textContent = 'Email verified successfully! βœ”οΈ'; + otpStatus.style.color = 'green'; + emailVerified = true; + getOtpBtn.disabled = true; + otpInput.disabled = true; + verifyOtpBtn.disabled = true; + } else { + otpStatus.textContent = 'Incorrect OTP. Try again.'; + otpStatus.style.color = 'red'; + emailVerified = false; + } + }); + + + form.addEventListener('submit', async (e) => { + e.preventDefault(); + + if (!passwordFlag) { + alert('❌ Weak Password...'); + return; + } + + if (!emailVerified) { + alert('Please verify your email first by entering the correct OTP.'); + return; + } + + const newUser = { + fullName: document.getElementById('fullName').value, + email: document.getElementById('email').value, + phone: document.getElementById('phone').value, + dob: document.getElementById('dob').value, + gender: document.getElementById('gender').value, + medicalHistory: document.getElementById('medicalHistory').value, + bloodGroup: document.getElementById('bloodGroup').value, + allergies: document.getElementById('allergies').value, + chronicConditions: document.getElementById('conditions').value, // <-- this was missing + currentMedications: document.getElementById('medications').value, + healthId: generateHealthId(), + password: document.getElementById('password').value, + registeredAt: new Date().toISOString() + }; + + document.getElementById('form-loader').style.display = 'flex'; + + + try { + // Step 1️⃣: Fetch existing data + const response = await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}/latest`, { + headers: { 'X-Master-Key': API_KEY } + }); + const data = await response.json(); + const users = data.record || []; + + // Step 2️⃣: Add new user to array + users.push(newUser); + + // Step 3️⃣: PUT updated array back to JSONBin + await fetch(`https://api.jsonbin.io/v3/b/${BIN_ID}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + 'X-Master-Key': API_KEY + }, + body: JSON.stringify(users) + }); + + // Step 4️⃣: Save new user to sessionStorage + sessionStorage.setItem('loggedInUser', JSON.stringify(newUser)); + + alert('βœ… Registration successful! Redirecting to your health details...'); + + // Step 5️⃣: Redirect to healthid.html page + window.location.href = 'healthid.html'; + + form.reset(); + } catch (error) { + console.error(error); + alert('❌ Registration failed.'); + } + }); +}); + +// The Form password checking + const passwordInput = document.getElementById('password'); + const togglePasswordBtn = document.getElementById('togglePassword'); + const eyeIcon = document.getElementById('eyeIcon'); + const passwordHint = document.getElementById('passwordHint'); + + togglePasswordBtn.addEventListener('click', () => { + const isPassword = passwordInput.type === 'password'; + passwordInput.type = isPassword ? 'text' : 'password'; + + // Toggle eye icon (open/closed) + if (isPassword) { + // Now changing type to text (show password) + eyeIcon.innerHTML = ` + + + `; + } else { + // Now changing type to password (hide password) + eyeIcon.innerHTML = ` + + + `; + } + + }); + + passwordInput.addEventListener('input', () => { + const val = passwordInput.value; + + const lengthCheck = val.length >= 8; + const letterCheck = /[a-zA-Z]/.test(val); + const numberCheck = /\d/.test(val); + const symbolCheck = /[!@#$%^&*(),.?":{}|<>]/.test(val); + + if (!val) { + passwordHint.textContent = 'Use a strong password with at least 8 characters, including letters, numbers & symbols.'; + passwordHint.className = 'mt-1 text-sm text-green-600 font-semibold'; + } else if (!lengthCheck) { + passwordHint.textContent = 'Password is too short (min 8 characters).'; + passwordHint.className = 'mt-1 text-sm text-red-600 font-semibold'; + } else if (!letterCheck) { + passwordHint.textContent = 'Add letters to your password.'; + passwordHint.className = 'mt-1 text-sm text-red-600 font-semibold'; + } else if (!numberCheck) { + passwordHint.textContent = 'Add numbers to your password.'; + passwordHint.className = 'mt-1 text-sm text-red-600 font-semibold'; + } else if (!symbolCheck) { + passwordHint.textContent = 'Add symbols (e.g. !@#$%) to your password.'; + passwordHint.className = 'mt-1 text-sm text-red-600 font-semibold'; + } else { + passwordHint.textContent = 'Strong password! πŸ‘'; + passwordHint.className = 'mt-1 text-sm text-green-600 font-semibold'; + passwordFlag = true; + } + }); + + + // Fill Dummy Data + +document.getElementById('fillDummyBtn').addEventListener('click', () => { + const names = ['Armaan Khan', 'Riya Patel', 'Kabir Singh', 'Ayesha Kapoor', 'Dev Sharma']; + const emails = ['armaan@example.com', 'riya.p@gmail.com', 'kabir.singh@demo.com', 'ayesha.kapoor@test.com', 'dev.sharma@mail.com']; + const phones = ['9876543210', '9123456789', '9988776655', '9090909090', '8008008000']; + const bloodGroups = ['A+', 'A-', 'B+', 'O+', 'AB+']; + const allergies = ['Peanuts', 'Pollen', 'Dust', 'None', 'Gluten']; + const conditions = ['Asthma', 'Diabetes', 'Hypertension', 'None']; + const medications = ['Paracetamol', 'Insulin', 'Antihistamines', 'None']; + const histories = ['Had a surgery in 2018', 'Hospitalized in 2021', 'No major history', 'Minor fracture in 2017']; + + function getRandom(arr) { + return arr[Math.floor(Math.random() * arr.length)]; + } + + function getRandomPhone() { + return '9' + Math.floor(100000000 + Math.random() * 900000000); // Random 10 digit starting with 9 + } + + function getRandomDate(start, end) { + const date = new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())); + return date.toISOString().split('T')[0]; + } + + function getRandomPassword() { + const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$&'; + let pass = ''; + for (let i = 0; i < 10; i++) { + pass += chars.charAt(Math.floor(Math.random() * chars.length)); + } + return pass; + } + + document.getElementById('fullName').value = getRandom(names); + document.getElementById('dob').value = getRandomDate(new Date(1980, 0, 1), new Date(2005, 11, 31)); + document.getElementById('gender').value = ['Male', 'Female', 'Other'][Math.floor(Math.random() * 3)]; + document.getElementById('bloodGroup').value = getRandom(bloodGroups); + document.getElementById('allergies').value = getRandom(allergies); + document.getElementById('conditions').value = getRandom(conditions); + document.getElementById('medications').value = getRandom(medications); + document.getElementById('medicalHistory').value = getRandom(histories); + document.getElementById('password').value = getRandomPassword(); +}); diff --git a/T-115_QuanDevs/public/addRecord.html b/T-115_QuanDevs/public/addRecord.html new file mode 100644 index 00000000..3f536637 --- /dev/null +++ b/T-115_QuanDevs/public/addRecord.html @@ -0,0 +1,94 @@ + + + + + Add Medical Record + + + + +
+

Add Medical Record

+ +
+ + + + + + + + + +
+ + + + + + + + +
+ + + + + + diff --git a/T-115_QuanDevs/public/doctor.css b/T-115_QuanDevs/public/doctor.css new file mode 100644 index 00000000..eb9e98dd --- /dev/null +++ b/T-115_QuanDevs/public/doctor.css @@ -0,0 +1,193 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); + +*{ + margin: 0; + padding: 0; + font-family: 'Poppins', sans-serif; +} + + /* This is header part*/ + .header{ + height: 80px; + background-color: white; + } + + .line { + height: 1px; + background-color: rgb(168, 168, 168); + } + + a { + color: rgb(0, 0, 0); + text-decoration: none; + } + .header{ + display: flex; + align-items: center; + justify-content: space-between; + font-weight: 650; + font-size: 16px; + } + + + .logo img{ + height: 85px; + width: 260px; + } + + .doctor #hn { + font-size: 14px; + font-weight: 550; + } + + + .get { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #7bdeff; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); + } + + .get:hover { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #00befd; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); + } + + .get p { + font-size: 15px; + } + + .get #st { + align-self: flex-start; + padding-left:22px; +} + + /* This is Search*/ + + .search{ + height: 90px; + background-color: rgb(245, 245, 245); + display: flex; + justify-content: center; + align-items: center; + } + + .search-box { + margin-right: 550px; + display: flex; + justify-content: space-around; + align-items: center; + } + + .search-box input { + padding: 9px; + padding-right:215px ; + border-radius: 5px; + margin-right: 4px; + } + + + .search-button { + background-color: #007bff; + color: #fff; + border: none; + border-radius: 5px; + padding: 9px 20px; + cursor: pointer; + margin-left: 8px; + } + + .search-button:hover { + background-color: #0056b3; + } + + +.the-main-container{ + padding: 40px; + background-color: #642fc7; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; +} + +.main-container{ + margin-top: 60px; + height: 33vh; + width: 80vw; + background-color: rgb(235, 253, 255); + border-radius: 20px; + margin: 12px; + padding-bottom: 10px; + margin-bottom: 20px; +} + +.home-article{ + display: flex; + padding: 25px; +} + +.home-article img{ + width: 380px; + border-radius: 13px; + +} + +.home-article-content{ + align-self: self-start; + margin-left: 34px; +} + + +.home-article-content h4{ + margin-top: 35px; + font-size: 20px; +} +.btn-view{ + display: flex; + margin-top: 40px; +} +.btn{ + font-size: 14px; + border-radius: 14px; + padding: 4px 12px; + background-color: #75dcfe; + margin-top: 23px; +} + +.btn:hover{ + font-size: 15px; + border-radius: 14px; + padding: 8px 15px; + background-color: rgb(25, 182, 234); + margin-top: 23px; +} +.btn-view span{ + font-size: 16px; + padding: 15px 41px; + color: rgb(25, 182, 234); + margin-top: 23px; + cursor: pointer; + +} + + + + + \ No newline at end of file diff --git a/T-115_QuanDevs/public/doctor.html b/T-115_QuanDevs/public/doctor.html new file mode 100644 index 00000000..8737d80c --- /dev/null +++ b/T-115_QuanDevs/public/doctor.html @@ -0,0 +1,128 @@ + + + + + + + Find Doctor + + + + +
+Β Β Β Β Β Β Β Β 
+ + + + +
+
+
+
+ dogs +
+
+ +

Dr. Devi Shetty

+

Cardiac Surgeon +

+
+ + View more +
+
+
+
+
+
+
+ dogs +
+
+ +

Dr. Naresh Trehan

+

Cardiovascular and Cardiothoracic Surgeon +

+
+ + View more +
+
+
+
+
+
+
+ dogs +
+
+ +

Dr. M.S. Valiathan

+

Cardiac Surgeon and Educator

+
+ + View more +
+
+
+
+
+
+
+ dogs +
+
+ +

Dr. Randeep Guleria

+

Pulmonologist and AIIMS Director +

+
+ + View more +
+
+
+
+
+
+
+ dogs +
+
+ +

Dr. Ashok Seth

+

Cardiologist +

+
+ + View more +
+
+
+
+
+ + \ No newline at end of file diff --git a/T-115_QuanDevs/public/get.css b/T-115_QuanDevs/public/get.css new file mode 100644 index 00000000..cee4807a --- /dev/null +++ b/T-115_QuanDevs/public/get.css @@ -0,0 +1,198 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); + +*{ + margin: 0; + padding: 0; + font-family: 'Poppins', sans-serif; +} + /* This is header part*/ +.header{ + height: 80px; + background-color: white; +} + +.line { + height: 1px; + background-color: rgb(168, 168, 168); +} + +a { + color: rgb(0, 0, 0); + text-decoration: none; +} +.header{ + display: flex; + align-items: center; + justify-content: space-between; + font-weight: 650; + font-size: 16px; +} + + +.logo img{ + height: 85px; + width: 260px; +} + +.doctor #hn { + font-size: 14px; + font-weight: 550; +} + + +.get { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #7bdeff; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get:hover { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #00befd; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get p { + font-size: 15px; +} + +.get #st { + align-self: flex-start; + padding-left:22px; +} + + +@import url('https://fonts.googleapis.com/css2?family=Indie+Flower&family=Lobster&family=Roboto:wght@300;400&display=swap'); + +*{ + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Poppins', sans-serif; +} + +.container{ + min-height: 100vh; + background-color: #00befd; + display: flex; + justify-content: center; + align-items: center; + /* background-image: url(images/back.jpg) ; */ +} +.container form{ + width: 700px; + height: 690px; + display: flex; + justify-content: center; + box-shadow: 20px 20px 20px black; + border-radius: 16px; + background-color: #cff3ff; + backdrop-filter: blur(10px); + flex-wrap: wrap; +} + +.container form h1{ + padding-bottom: 20px; + color: rgb(0, 0, 0); + font-weight: 500; + margin-top: 23px; + width: 505px; + text-align: center; +} + +.container form input{ + width: 300px; + height: 40px; + padding-left: 11px; + outline: none; + border: none; + font-size: 15px; + margin-bottom: 12px; + background: none; + border-bottom: 2px solid #fff; +} + +.container form input::placeholder{ + color: #000000; +} +.container form #lastName, +.container form #mobile{ + margin-left: 23px; +} + +.container form h4{ + color: #000000; + font-weight: 300; + width: 600px; + margin-top: 22px; +} + +.container form textarea{ + background: none; + border-bottom: 2px solid #fff; + color: #000000; + font-weight: 200; + font-size: 15px; + padding: 10px; + outline: none; + min-width: 600px; + max-width: 600px; + min-height: 80px; + max-height: 80px; + +} +textarea::-webkit-scrollbar{ + width: 1em; +} + +textarea::-webkit-scrollbar-thum{ + background-color: rgba(194,194,194,0.713); +} + + +.container form #button{ + border: none; + background: #fff; + border-radius: 5px; + margin-top: 21px; + font-weight: 600; + font-size: 20px; + color: #000000; + padding: 0; + width: 100px; + margin-right: 500px; + margin-bottom: 30px; + transition: 0.3s; + +} + +.container form #button:hover{ + opacity: 0.7; + background:#00befd; +} + +.in { + margin-top: 20px; +} + +#date { + margin-right: 250px; +} + + diff --git a/T-115_QuanDevs/public/get.html b/T-115_QuanDevs/public/get.html new file mode 100644 index 00000000..51f3aeaf --- /dev/null +++ b/T-115_QuanDevs/public/get.html @@ -0,0 +1,60 @@ + + + + + + + Get Appointemnt + + + + + + +
+
+
+
+

Get Appointment

+ + + + +

Describe your problem

+ +

Symptoms

+ +
+ + +
+
+ + +
+ +
+
+ + + + + + \ No newline at end of file diff --git a/T-115_QuanDevs/public/hid.css b/T-115_QuanDevs/public/hid.css new file mode 100644 index 00000000..ec0eceb6 --- /dev/null +++ b/T-115_QuanDevs/public/hid.css @@ -0,0 +1,74 @@ +body { + font-family: Arial, sans-serif; + background-color: #0081CF; + margin: 0; + padding: 0; + padding-top: 50px; + } + + .container { + max-width: 600px; + margin: 50px auto; + padding: 40px 80px 80px 80px; + background-color: #fff; + border-radius: 9px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + } + + h1 { + font-size: 30px; + text-align: center; + color: #0081CF; + margin-bottom: 20px; + } + + p { + text-align: center; + margin: 10px 0 50px 0; + } + + .id-container { + display: flex; + justify-content: center; + align-items: center; + gap: 20px; /* space between input and QR */ + margin-top: 20px; + } + + label { + font-weight: bold; + } + + input[type="text"] { + width: 250px; + height: 60px; + padding: 8px; + border-radius: 5px; + font-weight: bold; + font-size: 30px; + text-align: center; + border: none; + } + + #qr-code { + width: 150px; + height: 150px; + } + + button { + display: block; + padding: 16px 24px; + background-color: #0004f5; + color: #fff; + border: none; + border-radius: 5px; + cursor: pointer; + transition: background-color 0.3s ease; + margin: 60px auto 0 auto; + font-weight: bold; + } + + button:hover { + background-color: #0056b3; + } + \ No newline at end of file diff --git a/T-115_QuanDevs/public/hid.html b/T-115_QuanDevs/public/hid.html new file mode 100644 index 00000000..371c6d5c --- /dev/null +++ b/T-115_QuanDevs/public/hid.html @@ -0,0 +1,28 @@ + + + + + + Health ID Number Generator + + + + +
+

Your Health ID Number

+

9 Digit Unique No

+ +
+ + QR Code +
+ + +
+ + + + diff --git a/T-115_QuanDevs/public/hid.js b/T-115_QuanDevs/public/hid.js new file mode 100644 index 00000000..3ee50132 --- /dev/null +++ b/T-115_QuanDevs/public/hid.js @@ -0,0 +1,86 @@ +document.addEventListener('DOMContentLoaded', function() { + const healthIdInput = document.getElementById('health-id'); + const qrImage = document.getElementById('qr-code'); + + generateRandomId(); + + function generateRandomId() { + const min = 100000000; + const max = 999999999; + const randomId = Math.floor(Math.random() * (max - min + 1)) + min; + healthIdInput.value = randomId; + + // Save to localStorage + localStorage.setItem('healthId', randomId); + + const medicalRecord = ` + Health ID: ${randomId} + Name: Nil + Age: Nil + Gender: Nil + Blood Group: Nil + Allergies: Nil + Medical History: Nil + Emergency Contact: Nil + `; + + const qrData = encodeURIComponent(medicalRecord); + qrImage.src = `https://api.qrserver.com/v1/create-qr-code/?data=${qrData}&size=150x150`; + } + }); + + + + document.addEventListener('DOMContentLoaded', () => { + const form = document.getElementById('medical-form'); + const recordCard = document.getElementById('record-card'); + const qrImage = document.getElementById('qr-code'); + + // Retrieve Health ID from localStorage + const storedHealthId = localStorage.getItem('healthId'); + + form.addEventListener('submit', function(e) { + e.preventDefault(); + + const medicalRecord = { + healthId: storedHealthId ? storedHealthId : Math.floor(Math.random() * (999999999 - 100000000 + 1)) + 100000000, + name: document.getElementById('name').value, + age: document.getElementById('age').value, + gender: document.getElementById('gender').value, + bloodGroup: document.getElementById('bloodGroup').value, + allergies: document.getElementById('allergies').value, + medicalHistory: document.getElementById('medicalHistory').value, + emergencyContact: document.getElementById('emergencyContact').value + }; + + // Display the record card + recordCard.classList.remove('hidden'); + recordCard.innerHTML = ` +

Medical Record

+

Health ID: ${medicalRecord.healthId}

+

Name: ${medicalRecord.name}

+

Age: ${medicalRecord.age}

+

Gender: ${medicalRecord.gender}

+

Blood Group: ${medicalRecord.bloodGroup}

+

Allergies: ${medicalRecord.allergies}

+

Medical History: ${medicalRecord.medicalHistory}

+

Emergency Contact: ${medicalRecord.emergencyContact}

+ `; + + // Generate QR Code with the record + const qrData = encodeURIComponent(` + Health ID: ${medicalRecord.healthId} + Name: ${medicalRecord.name} + Age: ${medicalRecord.age} + Gender: ${medicalRecord.gender} + Blood Group: ${medicalRecord.bloodGroup} + Allergies: ${medicalRecord.allergies} + Medical History: ${medicalRecord.medicalHistory} + Emergency Contact: ${medicalRecord.emergencyContact} + `); + + qrImage.classList.remove('hidden'); + qrImage.src = `https://api.qrserver.com/v1/create-qr-code/?data=${qrData}&size=200x200`; + }); + }); + \ No newline at end of file diff --git a/T-115_QuanDevs/public/index.js b/T-115_QuanDevs/public/index.js new file mode 100644 index 00000000..63247d5f --- /dev/null +++ b/T-115_QuanDevs/public/index.js @@ -0,0 +1,20 @@ +document.addEventListener('DOMContentLoaded', function() { + const healthIdInput = document.getElementById('health-id'); + + // Call the function to generate a random ID when the page loads + generateRandomId(); + + function generateRandomId() { + const min = 100000000; // 9 digits starting from 100,000,000 + const max = 999999999; // 9 digits ending at 999,999,999 + const randomId = Math.floor(Math.random() * (max - min + 1)) + min; + healthIdInput.value = randomId; + } +}); + +function openNewPageWithDelay() { + var newPageUrl = "/public/hid.html"; + setTimeout(function() { + window.open(newPageUrl, "_blank"); + }, 1000); +} diff --git a/T-115_QuanDevs/public/lab.css b/T-115_QuanDevs/public/lab.css new file mode 100644 index 00000000..16ab4387 --- /dev/null +++ b/T-115_QuanDevs/public/lab.css @@ -0,0 +1,226 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); + +*{ + margin: 0; + padding: 0; + font-family: 'Poppins', sans-serif; +} + /* This is header part*/ +.header{ + height: 80px; + background-color: white; +} + +.line { + height: 1px; + background-color: rgb(168, 168, 168); +} + +a { + color: rgb(0, 0, 0); + text-decoration: none; +} +.header{ + display: flex; + align-items: center; + justify-content: space-between; + font-weight: 650; + font-size: 16px; +} + + +.logo img{ + height: 85px; + width: 260px; +} + +.doctor #hn { + font-size: 14px; + font-weight: 550; +} + + +.get { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #58d5ff; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get:hover { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #00befd; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get p { + font-size: 15px; +} + +.get #st { + align-self: flex-start; + padding-left:22px; +} + + /* This is Search*/ + +.search{ + height: 90px; + background-color: rgb(245, 245, 245); + display: flex; + justify-content: center; + align-items: center; +} + +.search-box { + margin-right: 200px; + display: flex; + justify-content: space-around; + align-items: center; +} + +.search-box input { + padding: 12px; + padding-right:215px ; + border-radius: 5px; + margin-right: 4px; +} + + +.search-button { + background-color: #007bff; + color: #fff; + border: none; + border-radius: 5px; + padding: 10px 15px; + cursor: pointer; + margin-left: 8px; +} + +.search-button:hover { + background-color: #0056b3; +} + +.view-cart .cart-link { + margin-left: 90px; + padding-left: 40px; + text-decoration: none; + color: #000000; + font-weight: bold; + border: 1px solid #000000; + padding: 5px 10px; + border-radius: 5px; + transition: background-color 0.3s; +} + +.view-cart .cart-link:hover { + background-color: #007bff; +} + /* This is 1st Banner*/ + + +.banner{ + height: 370px; + background-color: #a8e9ff; + display: flex; +} + +.banner img { + height: 310px; + padding-top: 40px; + padding-left: 190px; +} + +.banner p{ + font-size: 55px; + font-weight: 100; + padding-top: 140px; + padding-left: 110px; +} + + /* Browse Section */ + +.browse{ + height: 350px; + background-color: #ffffff; +} + +.browse #h{ + padding-left:60px; + margin-top:40px; + padding-bottom:30px; + font-size: 30px; + font-weight: 600; +} + +.carts{ + margin-top: 50px; + margin-bottom: 130px; + display: flex; + align-items: center; + justify-content: space-evenly; +} + +.cart { + height: 200px; + width: 200px; + background-color: #afe4f6; + border-radius: 20px; + +} + +.cart:hover { + height: 200px; + width: 200px; + background-color: #13c1fa; + border-radius: 20px; + +} + +.cart img { + height: 200px; + width: 200px; +} + +.cart p{ + font-size: 17px; + font-weight: 600; + text-align: center; +} + + + /* This is 2st Banner*/ +.banner2{ + margin-top: 140px; + height: 340px; + background-color: #2DBAEB; + display: flex; +} + +.banner2 img { + height: 310px; + padding-top: 60px; + padding-left: 150px; +} + +.banner2 p{ + font-size: 49px; + font-weight: 100; + padding-top: 130px; + padding-left: 130px; +} diff --git a/T-115_QuanDevs/public/lab.html b/T-115_QuanDevs/public/lab.html new file mode 100644 index 00000000..58b946a7 --- /dev/null +++ b/T-115_QuanDevs/public/lab.html @@ -0,0 +1,108 @@ + + + + + + + Medicines + + + + + + + +
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/T-115_QuanDevs/public/login.css b/T-115_QuanDevs/public/login.css new file mode 100644 index 00000000..e8c85686 --- /dev/null +++ b/T-115_QuanDevs/public/login.css @@ -0,0 +1,231 @@ +/* POPPINS FONT */ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap'); + +*{ + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'poppins',sans-serif; +} +body{ + + background: #471ECC; + background: radial-gradient(at center top, #471ECC, #182D72); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; + padding: 20px; +} + +p{ + color: white; + font-size: 12px; + padding-left: 3px; +} + +h1{ + color: white; +} + +.container{ + display: flex; + justify-content: center; + align-items: center; + min-height: 80vh; +} + +.conta { + min-height: 178px; + width: 190px; + padding-right: 200px; +} + +.conta img { + min-height: 170px; + width: 190px; +} +.box{ + display: flex; + flex-direction: row; + position: relative; + padding: 60px 20px 30px 20px; + height: 620px; + width: 350px; + border-radius: 30px; + background-color: rgba(255, 255, 255, 0.406); + -webkit-backdrop-filter: blur(15px); + backdrop-filter: blur(15px); + border: 3px solid rgba(255, 255, 255, 0.2); + overflow: hidden; +} +.box-login{ + position: absolute; + width: 85%; + left: 27px; + transition: .5s ease-in-out; +} +.box-register{ + position: absolute; + width: 85%; + right: -350px; + transition: .5s ease-in-out; +} +.top-header{ + text-align: center; + margin: 30px 0; +} +.top-header h3{ + font-size: 22px; + font-weight: 600; + margin-bottom: 8px; +} +.input-group{ + width: 100%; + +} +.input-field{ + margin: 12px 0; + position: relative; +} + +.input-box{ + width: 100%; + height: 50px; + font-size: 15px; + color: #040404; + border: none; + border-radius: 10px; + padding: 7px 45px 0 20px; + background: rgba(255, 255, 255, 0.6); + backdrop-filter: blur(2px); + outline: none; +} +.input-field label{ + position: absolute; + left: 20px; + top: 15px; + font-size: 15px; + transition: .3s ease-in-out; +} +.input-box:focus ~ label,.input-box:valid ~ label{ + top: 2px; + font-size: 10px; + color: #c12828; + font-weight: 500; +} +.remember{ + display: flex; + font-size: 13px; + margin: 12px 0 30px 0; + color: #000000; +} +.check{ + margin-right: 8px; + width: 14px; +} +.input-submit{ + width: 100%; + height: 50px; + font-size: 15px; + font-weight: 500; + border: none; + border-radius: 10px; + background: #bc6202; + color: #fff; + box-shadow: 0px 4px 20px rgba(62, 9, 9, 0.144); + cursor: pointer; + transition: .4s; +} +.input-submit:hover{ + background: #db3e00; + box-shadow: 0px 4px 20px rgba(62, 9, 9, 0.32); +} +.forgot{ + text-align: center; + font-size: 13px; + font-weight: 500; + margin-top: 40px; +} +.forgot a{ + text-decoration: none; + color: #000; +} +.switch{ + display: flex; + position: absolute; + bottom: 50px; + left: 25px; + width: 85%; + height: 50px; + background: rgba(255, 255, 255, 0.16); + backdrop-filter: 10px; + border-radius: 10px; + box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.switch a{ + display: flex; + justify-content: center; + align-items: center; + font-size: 14px; + font-weight: 500; + color: #000; + text-decoration: none; + width: 50%; + height: 50px; + border-radius: 10px; + z-index: 10; +} +#btn{ + position: absolute; + bottom: 0px; + left: 0px; + width: 145px; + height: 50px; + background: #cccccd; + border-radius: 10px; + box-shadow: 2px 0px 12px rgba(0, 0, 0, 0.1); + transition: .5s ease-in-out; +} +.eye-area{ + position: absolute; + top: 25px; + right: 25px; +} +.eye-box{ + display: flex; + align-items: center; + justify-content: center; + position: relative; + +} +i{ + position: absolute; + color: #444444; + cursor: pointer; +} +#eye,#eye-2{ + opacity: 1; +} +#eye-slash,#eye-slash-2{ + opacity: 0;} +@media only screen and (max-width: 576px){ + .box{ + margin: 0 5px; + } + #btn{ + position: absolute; + width: 153px; + } +} + +button { + padding: 15px; + padding-left: 50px; + padding-right: 50px; + margin-left: 50px; + border-radius: 5px; + background-color: #bc6202; + color: white; +} \ No newline at end of file diff --git a/T-115_QuanDevs/public/main.css b/T-115_QuanDevs/public/main.css new file mode 100644 index 00000000..9d56e281 --- /dev/null +++ b/T-115_QuanDevs/public/main.css @@ -0,0 +1,274 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); + +*{ + margin: 0; + padding: 0; + font-family: 'Poppins',Β sans-serif; +} + + +:root { + --main-bg-color: #2dbaeb; +} + +a { + color: black; + text-decoration: none; +} + + + + + /* This is header part*/ +.header{ + height: 80px; + background-color: white; +} + +.line { + height: 1px; + background-color: rgb(168, 168, 168); +} + +a { + color: rgb(0, 0, 0); + text-decoration: none; +} +.header{ + display: flex; + align-items: center; + justify-content: space-between; + font-weight: 650; + font-size: 16px; +} + + +.logo img{ + height: 85px; + width: 260px; +} + +.doctor #hn { + font-size: 14px; + font-weight: 550; +} + + +.get { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #58d5ff; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get:hover { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #00befd; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get p { + font-size: 15px; +} + +.get #st { + align-self: flex-start; + padding-left:22px; +} + + + + + +/* main image */ + + +.container-head { + /* background-color: rgb(96, 231, 249); */ + + height: 50vh; +} + + + +.container-text { + display: flex; + flex-direction: column; + justify-content: center; + height: 470px; + background-color: var(--main-bg-color); + + +} + +.container-text img { + padding-left: 220px; + padding-top:84px; + height: 395px; + width: 1200px; + + +} + +.sign-up { + /* font-size: 23px; */ + font-family: 'Poppins', sans-serif; + margin: 32px 223px 20px 1089px; + border-radius: 33px; + font-size: 30px; + padding: 6px 24px; + background-color: white; + border-style: none; +} + +/* contentent before cards */ + +.content { + padding-bottom: 40px; + padding-top: 90px; + width: 80vw; + margin: auto; + height: 58vh; +} + +.content-head { + + height: 12vh; +} + + + +.content-head h1 { + font-size: 30px; + font-weight: bolder; + font-family: 'Open Sans', sans-serif; + +} + +.content-head p { + margin-top: 7px; + margin-left: 1px; + font-size: 16px; + font-weight: bold; + color: grey; + font-family: 'Open Sans', sans-serif; + padding-top: 6px; +} + +/* cards */ + +.card-container { + padding-bottom: 90px; + display: flex; + /* overflow: scroll; */ + padding-top: 35px; + padding-bottom: 2px; + justify-self: space-evenly; +} + + +.card { + margin: 7px 12px; + height: 40vh; + /* border: 0.5px solid black; */ + border-radius: 12px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); +} +.card:hover { + margin: 7px 12px; + height: 41vh; + /* border: 0.5px solid black; */ + border-radius: 12px; + box-shadow: 8px 8px 10px rgba(31, 31, 31, 0.2); +} + +.card img{ + /* border: 0.5px solid black ; */ + border-radius: 12px; +} + +.card-description { + font-size: 21px; + padding: 5px 20px; + font-family: 'Open Sans', sans-serif; +} + +.card-description span a { + + line-height: 4.3; + color: #00befd; + font-weight: bold; + padding-left:30px; +} + +/* facing any health issue container */ + + +/* +.health-issue{ + background-color: blue; + height: 340px; + width: 1100px; +} + +.text-inside{ + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.text-inside h1{ + padding:13px ; +} + +.text-inside img{ + padding-top:45px ; +} + +*/ + +/* footer */ + footer { + height: 23vh; + + background-color: var(--main-bg-color); + margin-top: 23px; + +} + + /* This is 1st Banner*/ + + + .banner{ + height: 370px; + background-color: #2fcbff; + display: flex; +} + + .banner img { + height: 310px; + padding-top: 61px; + padding-left: 190px; + } + + .banner p{ + font-size: 50px; + font-weight: 200; + padding-top: 160px; + padding-left: 110px; + } \ No newline at end of file diff --git a/T-115_QuanDevs/public/main.html b/T-115_QuanDevs/public/main.html new file mode 100644 index 00000000..1d952ca5 --- /dev/null +++ b/T-115_QuanDevs/public/main.html @@ -0,0 +1,228 @@ + + + + + + + HealthSpot + + + + + + + + + + + + + +
+ + + + + + +
+
+ +

Common Health Concerns

+

Consult a doctor online for any Health Issue

+ +
+ + +
+
+ cough & cold +
+

Cold & Cough

+ +

+ + Consult Now + +
+
+ +
+ cough & cold +
+

Skin Problems

+ +

+ + Consult Now + +
+
+ +
+ cough & cold +
+

Depression

+ +

+ + Consult Now + +
+
+ +
+ cough & cold +
+

Stomach Issues

+ +

+ + Consult Now + +
+
+ +
+ cough & cold +
+

Depression

+ + + + Consult Now + +
+
+ +
+ cough & cold +
+

Weight loss!

+ + + + Consult Now + +
+ +
+ + + +
+ +
+ + + +
+
+ +

Book an appointment for an in-clinic consultation

+

Find experienced doctors across all specialties

+ +
+ + +
+
+ cough & cold +
+

Cold & Cough

+ + + + Consult Now + +
+
+ +
+ cough & cold +
+

Skin Problems

+ + + Consult Now + +
+
+ +
+ cough & cold +
+

Depression

+ + + Consult Now + +
+
+ +
+ cough & cold +
+

Stomach Issues

+ + + Consult Now + +
+
+ +
+ cough & cold +
+

Cold & Cough

+ + + Consult Now + +
+
+ +
+ cough & cold +
+

Weight loss!

+ + + Consult Now + +
+ +
+ + + +
+ +
+ + + + + + \ No newline at end of file diff --git a/T-115_QuanDevs/public/medicines.css b/T-115_QuanDevs/public/medicines.css new file mode 100644 index 00000000..7cece54a --- /dev/null +++ b/T-115_QuanDevs/public/medicines.css @@ -0,0 +1,225 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); + +*{ + margin: 0; + padding: 0; + font-family: 'Poppins', sans-serif; +} + /* This is header part*/ +.header{ + height: 80px; + background-color: white; +} + +.line { + height: 1px; + background-color: rgb(168, 168, 168); +} + +a { + color: rgb(0, 0, 0); + text-decoration: none; +} +.header{ + display: flex; + align-items: center; + justify-content: space-between; + font-weight: 650; + font-size: 16px; +} + + +.logo img{ + height: 85px; + width: 260px; +} + +.doctor #hn { + font-size: 14px; + font-weight: 550; +} + + +.get { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #58d5ff; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get:hover { + margin-right: 50px; + margin-left: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 55px; + width: 140px; + background-color: #00befd; + border-radius: 20px; + box-shadow: 2px 1px rgb(176, 176, 176); +} + +.get p { + font-size: 15px; +} + +.get #st { + align-self: flex-start; + padding-left:22px; +} + + /* This is Search*/ + +.search{ + height: 90px; + background-color: rgb(245, 245, 245); + display: flex; + justify-content: center; + align-items: center; +} + +.search-box { + margin-right: 200px; + display: flex; + justify-content: space-around; + align-items: center; +} + +.search-box input { + padding: 12px; + padding-right:215px ; + border-radius: 5px; + margin-right: 4px; +} + + +.search-button { + background-color: #007bff; + color: #fff; + border: none; + border-radius: 5px; + padding: 10px 15px; + cursor: pointer; + margin-left: 8px; +} + +.search-button:hover { + background-color: #0056b3; +} + +.view-cart .cart-link { + margin-left: 90px; + padding-left: 40px; + text-decoration: none; + color: #000000; + font-weight: bold; + border: 1px solid #000000; + padding: 5px 10px; + border-radius: 5px; + transition: background-color 0.3s; +} + +.view-cart .cart-link:hover { + background-color: #007bff; +} + /* This is 1st Banner*/ + + +.banner{ + height: 370px; + background-color: #27a086; + display: flex; +} + +.banner img { + height: 310px; + padding-top: 60px; +} + +.banner p{ + font-size: 55px; + font-weight: 100; + padding-top: 110px; + padding-left: 60px; +} + + /* Browse Section */ + +.browse{ + height: 350px; + background-color: #ffffff; +} + +.browse #h{ + padding-left:60px; + margin-top:40px; + padding-bottom:30px; + font-size: 30px; + font-weight: 600; +} + +.carts{ + margin-top: 50px; + margin-bottom: 130px; + display: flex; + align-items: center; + justify-content: space-evenly; +} + +.cart { + height: 200px; + width: 200px; + background-color: #afe4f6; + border-radius: 20px; + +} + +.cart:hover { + height: 200px; + width: 200px; + background-color: #13c1fa; + border-radius: 20px; + +} + +.cart img { + height: 200px; + width: 200px; +} + +.cart p{ + font-size: 17px; + font-weight: 600; + text-align: center; +} + + + /* This is 2st Banner*/ +.banner2{ + margin-top: 140px; + height: 340px; + background-color: #2DBAEB; + display: flex; +} + +.banner2 img { + height: 310px; + padding-top: 60px; + padding-left: 150px; +} + +.banner2 p{ + font-size: 49px; + font-weight: 100; + padding-top: 130px; + padding-left: 130px; +} diff --git a/T-115_QuanDevs/public/medicines.html b/T-115_QuanDevs/public/medicines.html new file mode 100644 index 00000000..4c895e28 --- /dev/null +++ b/T-115_QuanDevs/public/medicines.html @@ -0,0 +1,119 @@ + + + + + + + Medicines + + + + + + + +
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/T-115_QuanDevs/public/p.css b/T-115_QuanDevs/public/p.css new file mode 100644 index 00000000..a1631660 --- /dev/null +++ b/T-115_QuanDevs/public/p.css @@ -0,0 +1,134 @@ +#search{ + width: auto; +} +.red{ + border:solid grey; + width:max-content; + border-radius: 9px; + +} +.top{ + border: none; +} + +#topleft{ + border-right: dotted; +} + +.container{ + background-color: blanchedalmond; + border-radius: 25px; + width: 80%; + + padding: 20px; + background-image: url(); + background-size: 300px 250px; + background-position: right; + background-repeat: no-repeat; + + margin-top: 15px; + +} +#button{ + border-radius: 35px; + background-color: rgba(245, 245, 245, 0.455); +} + +#inner{ + background-color: orangered; + color: white; + width: 100px; + height: 25px; + border-radius: 25px; + padding: 9px; + font-size:medium ; + font-weight: 900; + text-decoration:underline; +} +#expert{ + padding-left:150px; + + + border-radius: 25px; + width: 1000px; + background-color: #9BB0C1; + +} +#img{ + width: 400px; + height: 250px; +} +.image{ + display: flex; + flex-direction: center; +} +.photo img{ + margin-left: 25px; +} + +.inline{ + display: inline; + margin-left: 100px; +} +#one{ + margin-left: 75px; +} +.tag{ + display: inline-block; +} +button{ + padding: 13px 30px; + margin-left: 15px; + border-radius: 25px; +} +section div{ + + border: 1px solid whitesmoke; + display: block; + width: 80 px; + text-align: left; + background-color: whitesmoke; +} + +main{ + margin-left:150px; +} +.align{ + display: inline-block; + margin-right: 90px; + margin-top: 40px; +} +#price,#book,#real,#off{ + display: inline; + margin-right: 9px; +} + +#price{ + font-size: larger; +} + +#real{ + color: grey; + text-decoration: line-through; +} + +#off{ + color: green; + font-weight: 700; +} + +#book{ + background-color: rgb(6, 139, 248); + color: white; + border-radius: 10px; +} + +.center{ + margin-left:10px; +} + +button:hover{ + text-decoration: underline; + background-color: #B0C5A4 ; + color: black; +} diff --git a/T-115_QuanDevs/public/p.html b/T-115_QuanDevs/public/p.html new file mode 100644 index 00000000..58d0ad9d --- /dev/null +++ b/T-115_QuanDevs/public/p.html @@ -0,0 +1,78 @@ + + + + + + Lab Tests + + + +
+
+ + + +
+
+
+
Limited Offer
+

Tax saver package(Advanced) Now at β‚Ή2999

+
    +
  • Full body checkup with cardiac risk markers & Vit B12
  • +
  • FREE home sample pickup
  • +
+ + +
+ +
+ +
+

Need help with booking your test?

+

our experts are here to help you

+ +
+
+

Find text by health concern

+

    Cancer

+

    Diabetes

+

     Fever

+

     Skin

+

    Kidney

+

    Stomach

+

     Bones

+

   Sexual wellness

+
+
+

Popular Health Checkup Packages +

+ + + +
+
+
+
+

Basic women's health checkup

+

Ideal for individuals aged 15-40years

85 Tests Included
+
+

β‚Ή1199

1400

22% off

+
+
+
+

Vitamin Deficiency Health Chjeckup

+

Ideal for individual aged 11-80years

4 Tests Included

+

899

1200

25% off

+
+
+
+

Young Indian Health Checkup

+

Ideal for individuals ageed 15-40years

84Test Inluded

+

β‚Ή899

1500

40% off

+
+
+
+ + \ No newline at end of file diff --git a/T-115_QuanDevs/src/27286645_jglw_bke0_220113-removebg-preview.png b/T-115_QuanDevs/src/27286645_jglw_bke0_220113-removebg-preview.png new file mode 100644 index 00000000..be22578f Binary files /dev/null and b/T-115_QuanDevs/src/27286645_jglw_bke0_220113-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/468411-weight-removebg-preview.png b/T-115_QuanDevs/src/468411-weight-removebg-preview.png new file mode 100644 index 00000000..0c500314 Binary files /dev/null and b/T-115_QuanDevs/src/468411-weight-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/62-512.webp b/T-115_QuanDevs/src/62-512.webp new file mode 100644 index 00000000..c917c7d0 Binary files /dev/null and b/T-115_QuanDevs/src/62-512.webp differ diff --git a/T-115_QuanDevs/src/7246291_3568799-removebg-preview.png b/T-115_QuanDevs/src/7246291_3568799-removebg-preview.png new file mode 100644 index 00000000..ab686d60 Binary files /dev/null and b/T-115_QuanDevs/src/7246291_3568799-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/Banner.png b/T-115_QuanDevs/src/Banner.png new file mode 100644 index 00000000..db1cac54 Binary files /dev/null and b/T-115_QuanDevs/src/Banner.png differ diff --git a/T-115_QuanDevs/src/Banner.webp b/T-115_QuanDevs/src/Banner.webp new file mode 100644 index 00000000..c89bce27 Binary files /dev/null and b/T-115_QuanDevs/src/Banner.webp differ diff --git a/T-115_QuanDevs/src/Bones.svg b/T-115_QuanDevs/src/Bones.svg new file mode 100644 index 00000000..3ec0d9a4 --- /dev/null +++ b/T-115_QuanDevs/src/Bones.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/Cancer.svg b/T-115_QuanDevs/src/Cancer.svg new file mode 100644 index 00000000..bf2dba9f --- /dev/null +++ b/T-115_QuanDevs/src/Cancer.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/Copy of HealthSpot (1).png b/T-115_QuanDevs/src/Copy of HealthSpot (1).png new file mode 100644 index 00000000..db1cac54 Binary files /dev/null and b/T-115_QuanDevs/src/Copy of HealthSpot (1).png differ diff --git a/T-115_QuanDevs/src/Copy of HealthSpot.png b/T-115_QuanDevs/src/Copy of HealthSpot.png new file mode 100644 index 00000000..96b2a4af Binary files /dev/null and b/T-115_QuanDevs/src/Copy of HealthSpot.png differ diff --git a/T-115_QuanDevs/src/Diabetes.svg b/T-115_QuanDevs/src/Diabetes.svg new file mode 100644 index 00000000..0c1ff59f --- /dev/null +++ b/T-115_QuanDevs/src/Diabetes.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/Doctor.png b/T-115_QuanDevs/src/Doctor.png new file mode 100644 index 00000000..1ad945e7 Binary files /dev/null and b/T-115_QuanDevs/src/Doctor.png differ diff --git a/T-115_QuanDevs/src/Fever.svg b/T-115_QuanDevs/src/Fever.svg new file mode 100644 index 00000000..4102b715 --- /dev/null +++ b/T-115_QuanDevs/src/Fever.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/HEalthSpot-SS.png b/T-115_QuanDevs/src/HEalthSpot-SS.png new file mode 100644 index 00000000..f9b74a7c Binary files /dev/null and b/T-115_QuanDevs/src/HEalthSpot-SS.png differ diff --git a/T-115_QuanDevs/src/Kidney.svg b/T-115_QuanDevs/src/Kidney.svg new file mode 100644 index 00000000..780a571f --- /dev/null +++ b/T-115_QuanDevs/src/Kidney.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/Logo for HealtSpot.jpg b/T-115_QuanDevs/src/Logo for HealtSpot.jpg new file mode 100644 index 00000000..4aa9eca9 Binary files /dev/null and b/T-115_QuanDevs/src/Logo for HealtSpot.jpg differ diff --git a/T-115_QuanDevs/src/Medical-Devices-Industry-2-removebg-preview.png b/T-115_QuanDevs/src/Medical-Devices-Industry-2-removebg-preview.png new file mode 100644 index 00000000..ec910346 Binary files /dev/null and b/T-115_QuanDevs/src/Medical-Devices-Industry-2-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/Screenshot 2024-03-05 161546.png b/T-115_QuanDevs/src/Screenshot 2024-03-05 161546.png new file mode 100644 index 00000000..b43dc763 Binary files /dev/null and b/T-115_QuanDevs/src/Screenshot 2024-03-05 161546.png differ diff --git a/T-115_QuanDevs/src/Sexual_wellness.svg b/T-115_QuanDevs/src/Sexual_wellness.svg new file mode 100644 index 00000000..9ce2bb4e --- /dev/null +++ b/T-115_QuanDevs/src/Sexual_wellness.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/Skin.svg b/T-115_QuanDevs/src/Skin.svg new file mode 100644 index 00000000..3a01ac3b --- /dev/null +++ b/T-115_QuanDevs/src/Skin.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/Stomach.svg b/T-115_QuanDevs/src/Stomach.svg new file mode 100644 index 00000000..33974b5c --- /dev/null +++ b/T-115_QuanDevs/src/Stomach.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/T-115_QuanDevs/src/WhatsApp Image 2024-03-05 at 13.03.46_7d990782.jpg b/T-115_QuanDevs/src/WhatsApp Image 2024-03-05 at 13.03.46_7d990782.jpg new file mode 100644 index 00000000..f7e48079 Binary files /dev/null and b/T-115_QuanDevs/src/WhatsApp Image 2024-03-05 at 13.03.46_7d990782.jpg differ diff --git a/T-115_QuanDevs/src/beautiful-diabetic-icon-glucometer-cartoon-sign-blood-glucose-meter-pictogram-medical-editable-illustration-isolated-on-white-background-vector-removebg-preview.png b/T-115_QuanDevs/src/beautiful-diabetic-icon-glucometer-cartoon-sign-blood-glucose-meter-pictogram-medical-editable-illustration-isolated-on-white-background-vector-removebg-preview.png new file mode 100644 index 00000000..dcc00ec2 Binary files /dev/null and b/T-115_QuanDevs/src/beautiful-diabetic-icon-glucometer-cartoon-sign-blood-glucose-meter-pictogram-medical-editable-illustration-isolated-on-white-background-vector-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/box.jpg b/T-115_QuanDevs/src/box.jpg new file mode 100644 index 00000000..fd50d160 Binary files /dev/null and b/T-115_QuanDevs/src/box.jpg differ diff --git a/T-115_QuanDevs/src/business-man-boy-male-background-removebg-preview.png b/T-115_QuanDevs/src/business-man-boy-male-background-removebg-preview.png new file mode 100644 index 00000000..528a0532 Binary files /dev/null and b/T-115_QuanDevs/src/business-man-boy-male-background-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/charming-young-woman-taking-measurements-her-body-removebg-preview.png b/T-115_QuanDevs/src/charming-young-woman-taking-measurements-her-body-removebg-preview.png new file mode 100644 index 00000000..b393f091 Binary files /dev/null and b/T-115_QuanDevs/src/charming-young-woman-taking-measurements-her-body-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/cotton-sanitary-pads-removebg-preview.png b/T-115_QuanDevs/src/cotton-sanitary-pads-removebg-preview.png new file mode 100644 index 00000000..f9fc4095 Binary files /dev/null and b/T-115_QuanDevs/src/cotton-sanitary-pads-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/cough-cold-v1.jpg b/T-115_QuanDevs/src/cough-cold-v1.jpg new file mode 100644 index 00000000..08a14e51 Binary files /dev/null and b/T-115_QuanDevs/src/cough-cold-v1.jpg differ diff --git a/T-115_QuanDevs/src/cough-removebg-preview.png b/T-115_QuanDevs/src/cough-removebg-preview.png new file mode 100644 index 00000000..23b4453f Binary files /dev/null and b/T-115_QuanDevs/src/cough-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/cough.jpg b/T-115_QuanDevs/src/cough.jpg new file mode 100644 index 00000000..ccf0ad0e Binary files /dev/null and b/T-115_QuanDevs/src/cough.jpg differ diff --git a/T-115_QuanDevs/src/cute-baby-boy-cartoon-vector-illustration_921448-1208-removebg-preview.png b/T-115_QuanDevs/src/cute-baby-boy-cartoon-vector-illustration_921448-1208-removebg-preview.png new file mode 100644 index 00000000..f766bfce Binary files /dev/null and b/T-115_QuanDevs/src/cute-baby-boy-cartoon-vector-illustration_921448-1208-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/depression-anxiety-v1.jpg b/T-115_QuanDevs/src/depression-anxiety-v1.jpg new file mode 100644 index 00000000..120b76e5 Binary files /dev/null and b/T-115_QuanDevs/src/depression-anxiety-v1.jpg differ diff --git a/T-115_QuanDevs/src/div1.jpeg b/T-115_QuanDevs/src/div1.jpeg new file mode 100644 index 00000000..832fbc54 Binary files /dev/null and b/T-115_QuanDevs/src/div1.jpeg differ diff --git a/T-115_QuanDevs/src/div2.jpeg b/T-115_QuanDevs/src/div2.jpeg new file mode 100644 index 00000000..b74045cf Binary files /dev/null and b/T-115_QuanDevs/src/div2.jpeg differ diff --git a/T-115_QuanDevs/src/div3.jpeg b/T-115_QuanDevs/src/div3.jpeg new file mode 100644 index 00000000..a7eb1b5e Binary files /dev/null and b/T-115_QuanDevs/src/div3.jpeg differ diff --git a/T-115_QuanDevs/src/doc - Copy.webp b/T-115_QuanDevs/src/doc - Copy.webp new file mode 100644 index 00000000..b8a26f85 Binary files /dev/null and b/T-115_QuanDevs/src/doc - Copy.webp differ diff --git a/T-115_QuanDevs/src/doc.webp b/T-115_QuanDevs/src/doc.webp new file mode 100644 index 00000000..b8a26f85 Binary files /dev/null and b/T-115_QuanDevs/src/doc.webp differ diff --git a/T-115_QuanDevs/src/doctors-removebg-preview.png b/T-115_QuanDevs/src/doctors-removebg-preview.png new file mode 100644 index 00000000..d417bc74 Binary files /dev/null and b/T-115_QuanDevs/src/doctors-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/doctors.jpg b/T-115_QuanDevs/src/doctors.jpg new file mode 100644 index 00000000..f7bb736a Binary files /dev/null and b/T-115_QuanDevs/src/doctors.jpg differ diff --git a/T-115_QuanDevs/src/download (1).jpeg b/T-115_QuanDevs/src/download (1).jpeg new file mode 100644 index 00000000..bca8ba2d Binary files /dev/null and b/T-115_QuanDevs/src/download (1).jpeg differ diff --git a/T-115_QuanDevs/src/download (10).jpeg b/T-115_QuanDevs/src/download (10).jpeg new file mode 100644 index 00000000..38703a8e Binary files /dev/null and b/T-115_QuanDevs/src/download (10).jpeg differ diff --git a/T-115_QuanDevs/src/download (2).jpeg b/T-115_QuanDevs/src/download (2).jpeg new file mode 100644 index 00000000..60d72471 Binary files /dev/null and b/T-115_QuanDevs/src/download (2).jpeg differ diff --git a/T-115_QuanDevs/src/download (3).jpeg b/T-115_QuanDevs/src/download (3).jpeg new file mode 100644 index 00000000..c2608847 Binary files /dev/null and b/T-115_QuanDevs/src/download (3).jpeg differ diff --git a/T-115_QuanDevs/src/download.jpeg b/T-115_QuanDevs/src/download.jpeg new file mode 100644 index 00000000..ddeefdc4 Binary files /dev/null and b/T-115_QuanDevs/src/download.jpeg differ diff --git a/T-115_QuanDevs/src/download__1_-removebg-preview (1).png b/T-115_QuanDevs/src/download__1_-removebg-preview (1).png new file mode 100644 index 00000000..f7b5c402 Binary files /dev/null and b/T-115_QuanDevs/src/download__1_-removebg-preview (1).png differ diff --git a/T-115_QuanDevs/src/download__1_-removebg-preview.png b/T-115_QuanDevs/src/download__1_-removebg-preview.png new file mode 100644 index 00000000..0a6ed25f Binary files /dev/null and b/T-115_QuanDevs/src/download__1_-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/download__6_-removebg-preview.png b/T-115_QuanDevs/src/download__6_-removebg-preview.png new file mode 100644 index 00000000..5ff496c4 Binary files /dev/null and b/T-115_QuanDevs/src/download__6_-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/download__7_-removebg-preview.png b/T-115_QuanDevs/src/download__7_-removebg-preview.png new file mode 100644 index 00000000..b9729d1b Binary files /dev/null and b/T-115_QuanDevs/src/download__7_-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/download__9_-removebg-preview.png b/T-115_QuanDevs/src/download__9_-removebg-preview.png new file mode 100644 index 00000000..3f7e326f Binary files /dev/null and b/T-115_QuanDevs/src/download__9_-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/hand-holding-blood-glucose-meter-measuring-blood-sugar-background-is-stethoscope-chart-file-removebg-preview.png b/T-115_QuanDevs/src/hand-holding-blood-glucose-meter-measuring-blood-sugar-background-is-stethoscope-chart-file-removebg-preview.png new file mode 100644 index 00000000..c77ddc88 Binary files /dev/null and b/T-115_QuanDevs/src/hand-holding-blood-glucose-meter-measuring-blood-sugar-background-is-stethoscope-chart-file-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/health.jpg b/T-115_QuanDevs/src/health.jpg new file mode 100644 index 00000000..629ce77a Binary files /dev/null and b/T-115_QuanDevs/src/health.jpg differ diff --git a/T-115_QuanDevs/src/icon.png b/T-115_QuanDevs/src/icon.png new file mode 100644 index 00000000..3c32c1fe Binary files /dev/null and b/T-115_QuanDevs/src/icon.png differ diff --git a/T-115_QuanDevs/src/images__3_-removebg-preview.png b/T-115_QuanDevs/src/images__3_-removebg-preview.png new file mode 100644 index 00000000..3ff46d86 Binary files /dev/null and b/T-115_QuanDevs/src/images__3_-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/images__4_-removebg-preview.png b/T-115_QuanDevs/src/images__4_-removebg-preview.png new file mode 100644 index 00000000..83bedac3 Binary files /dev/null and b/T-115_QuanDevs/src/images__4_-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/istockphoto-865381864-612x612-removebg-preview.png b/T-115_QuanDevs/src/istockphoto-865381864-612x612-removebg-preview.png new file mode 100644 index 00000000..1f84f492 Binary files /dev/null and b/T-115_QuanDevs/src/istockphoto-865381864-612x612-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/istockphoto-865381864-612x612.jpg b/T-115_QuanDevs/src/istockphoto-865381864-612x612.jpg new file mode 100644 index 00000000..a184014e Binary files /dev/null and b/T-115_QuanDevs/src/istockphoto-865381864-612x612.jpg differ diff --git a/T-115_QuanDevs/src/little-boy-suffering-from-sore-throat-touching-his-painful-neck-as-symptoms-flu-allergy_535862-125-removebg-preview.png b/T-115_QuanDevs/src/little-boy-suffering-from-sore-throat-touching-his-painful-neck-as-symptoms-flu-allergy_535862-125-removebg-preview.png new file mode 100644 index 00000000..c9f27146 Binary files /dev/null and b/T-115_QuanDevs/src/little-boy-suffering-from-sore-throat-touching-his-painful-neck-as-symptoms-flu-allergy_535862-125-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/logo.jpg b/T-115_QuanDevs/src/logo.jpg new file mode 100644 index 00000000..477bef74 Binary files /dev/null and b/T-115_QuanDevs/src/logo.jpg differ diff --git a/T-115_QuanDevs/src/logo.png b/T-115_QuanDevs/src/logo.png new file mode 100644 index 00000000..523b0c77 Binary files /dev/null and b/T-115_QuanDevs/src/logo.png differ diff --git a/T-115_QuanDevs/src/lose-weight-v1.jpg b/T-115_QuanDevs/src/lose-weight-v1.jpg new file mode 100644 index 00000000..c2aa4ce5 Binary files /dev/null and b/T-115_QuanDevs/src/lose-weight-v1.jpg differ diff --git a/T-115_QuanDevs/src/maxresdefault.jpg b/T-115_QuanDevs/src/maxresdefault.jpg new file mode 100644 index 00000000..a0d2a061 Binary files /dev/null and b/T-115_QuanDevs/src/maxresdefault.jpg differ diff --git a/T-115_QuanDevs/src/medical-report.png b/T-115_QuanDevs/src/medical-report.png new file mode 100644 index 00000000..d0f43f40 Binary files /dev/null and b/T-115_QuanDevs/src/medical-report.png differ diff --git a/T-115_QuanDevs/src/medicine.jpg b/T-115_QuanDevs/src/medicine.jpg new file mode 100644 index 00000000..5f86fa7b Binary files /dev/null and b/T-115_QuanDevs/src/medicine.jpg differ diff --git a/T-115_QuanDevs/src/png-transparent-photic-sneeze-reflex-nose-cough-rib-fracture-sneeze-face-people-heart.png b/T-115_QuanDevs/src/png-transparent-photic-sneeze-reflex-nose-cough-rib-fracture-sneeze-face-people-heart.png new file mode 100644 index 00000000..2a8100ad Binary files /dev/null and b/T-115_QuanDevs/src/png-transparent-photic-sneeze-reflex-nose-cough-rib-fracture-sneeze-face-people-heart.png differ diff --git a/T-115_QuanDevs/src/portrait-delivery-man-handing-out-parcel-removebg-preview.png b/T-115_QuanDevs/src/portrait-delivery-man-handing-out-parcel-removebg-preview.png new file mode 100644 index 00000000..08bbdeac Binary files /dev/null and b/T-115_QuanDevs/src/portrait-delivery-man-handing-out-parcel-removebg-preview.png differ diff --git a/T-115_QuanDevs/src/sick-kid-v1.jpg b/T-115_QuanDevs/src/sick-kid-v1.jpg new file mode 100644 index 00000000..becc1c20 Binary files /dev/null and b/T-115_QuanDevs/src/sick-kid-v1.jpg differ diff --git a/T-115_QuanDevs/src/skin-problems-v1 (1).jpg b/T-115_QuanDevs/src/skin-problems-v1 (1).jpg new file mode 100644 index 00000000..cbed6826 Binary files /dev/null and b/T-115_QuanDevs/src/skin-problems-v1 (1).jpg differ diff --git a/T-115_QuanDevs/src/skin-problems-v1.jpg b/T-115_QuanDevs/src/skin-problems-v1.jpg new file mode 100644 index 00000000..cbed6826 Binary files /dev/null and b/T-115_QuanDevs/src/skin-problems-v1.jpg differ diff --git a/T-115_QuanDevs/src/stomach-issues-v1.jpg b/T-115_QuanDevs/src/stomach-issues-v1.jpg new file mode 100644 index 00000000..f70516c2 Binary files /dev/null and b/T-115_QuanDevs/src/stomach-issues-v1.jpg differ diff --git a/T-115_QuanDevs/src/young-asian-girl-receiving-parcel-260nw-1080390089-removebg-preview.png b/T-115_QuanDevs/src/young-asian-girl-receiving-parcel-260nw-1080390089-removebg-preview.png new file mode 100644 index 00000000..2f88488d Binary files /dev/null and b/T-115_QuanDevs/src/young-asian-girl-receiving-parcel-260nw-1080390089-removebg-preview.png differ