diff --git a/Backend/config/Passport.js b/Backend/config/Passport.js index ff03a690..da93e540 100644 --- a/Backend/config/Passport.js +++ b/Backend/config/Passport.js @@ -54,8 +54,7 @@ passport.use( { clientID: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, - callbackURL: "https://intervyo.onrender.com/api/auth/google/callback", - // callbackURL: '/api/auth/google/callback', + callbackURL: "/api/auth/google/callback", }, async (accessToken, refreshToken, profile, done) => { try { @@ -149,12 +148,15 @@ passport.use( // ) // ); +// ======================================== +// 3. GITHUB STRATEGY +// ======================================== passport.use( new GitHubStrategy( { clientID: process.env.GITHUB_CLIENT_ID, clientSecret: process.env.GITHUB_CLIENT_SECRET, - callbackURL: "https://intervyo.onrender.com/api/auth/github/callback", + callbackURL: "/api/auth/github/callback", scope: ["user:email"], }, async (accessToken, refreshToken, profile, done) => { diff --git a/Backend/config/db.js b/Backend/config/db.js index 308f25e9..9272c543 100644 --- a/Backend/config/db.js +++ b/Backend/config/db.js @@ -1,50 +1,16 @@ -// db.js import mongoose from "mongoose"; import dotenv from "dotenv"; -import { MongoMemoryServer } from "mongodb-memory-server"; dotenv.config(); -let mongoServer = null; - export const dbConnect = async () => { try { - const mongoURI = process.env.MONGODB_URL || process.env.MONGODB_URI; - - // Try to connect to real MongoDB if URI is provided and not default - if (mongoURI && mongoURI !== "mongodb://localhost:27017/intervyo") { - await mongoose.connect(mongoURI, { - serverSelectionTimeoutMS: 5000, // Timeout after 5s - }); - console.log("✅ MongoDB connected successfully"); - return; - } else { - throw new Error("No valid MongoDB URI, using in-memory database"); - } + await mongoose.connect(process.env.MONGODB_URI); + console.log("✅ Connected to MongoDB"); } catch (error) { - console.log("⚠️ MongoDB not available:", error.message); - console.log("🔄 Starting in-memory database..."); - - try { - // Start in-memory MongoDB server - mongoServer = await MongoMemoryServer.create({ - instance: { - dbName: "intervyo", - }, - }); - const mongoUri = mongoServer.getUri(); - await mongoose.connect(mongoUri); - console.log("✅ In-memory MongoDB started successfully"); - console.log("📝 Note: Data will be lost when server restarts"); - console.log("💡 Tip: Add a real MongoDB URI to .env to persist data"); - } catch (memError) { - console.error('❌ Failed to start in-memory database:', memError); - // In test environment, we might catch this at the runner level - if (process.env.NODE_ENV !== 'test') { - process.exit(1); - } - throw memError; - } + console.log("❌ Connection Failed"); + console.log(error); + process.exit(1); } }; diff --git a/Backend/routes/User.route.js b/Backend/routes/User.route.js index 754a2180..be4da879 100644 --- a/Backend/routes/User.route.js +++ b/Backend/routes/User.route.js @@ -35,20 +35,7 @@ router.get( }), (req, res) => { const token = req.user.generateAuthToken(); - - // res.cookie('token', token, { - // httpOnly: true, - // secure: true, // REQUIRED on HTTPS (Render + Vercel) - // sameSite: 'none', // REQUIRED for cross-domain cookies - // maxAge: 7 * 24 * 60 * 60 * 1000 - - // // secure: false, - // // sameSite: 'lax', - // }); - - // Double-whammy: Cookie AND Token in URL (Upstream req) res.redirect(`${process.env.CLIENT_URL}/auth/callback?token=${token}`); - // res.redirect(`http://localhost:5173/auth/callback`); }, ); @@ -61,16 +48,6 @@ router.get( ); // GitHub OAuth Callback -// router.get('/github/callback', -// passport.authenticate('github', { -// session: false, -// failureRedirect: `${process.env.CLIENT_URL}/login?error=github_auth_failed` -// }), -// (req, res) => { -// const token = req.user.generateAuthToken(); -// res.redirect(`${process.env.CLIENT_URL}/auth/callback?token=${token}`); -// } -// ); router.get( "/github/callback", passport.authenticate("github", { diff --git a/Frontend/src/App.jsx b/Frontend/src/App.jsx index 007a3323..eedfc318 100644 --- a/Frontend/src/App.jsx +++ b/Frontend/src/App.jsx @@ -45,11 +45,16 @@ function App() { const hideFooterRoutes = ["/login", "/register"]; const hideFooter = hideFooterRoutes.includes(location.pathname); + const hideNavbarRoutes = ["/dashboard", "/settings", "/pricing", "/career", "/terms", "/privacy", "/cookie-policy", "/interview-setup", "/auth/callback"]; + const hideNavbar = + hideNavbarRoutes.includes(location.pathname) || + location.pathname.startsWith("/interview-room"); + useEffect(() => { - if ("serviceWorker" in navigator) { - navigator.serviceWorker.register("/sw.js"); - } -}, []); + if ("serviceWorker" in navigator) { + navigator.serviceWorker.register("/sw.js"); + } + }, []); return ( <> @@ -90,7 +95,7 @@ function App() { - + {!hideNavbar && } } /> diff --git a/Frontend/src/components/Blogs/BlogPlatform.jsx b/Frontend/src/components/Blogs/BlogPlatform.jsx index b8adefe8..db3b9692 100644 --- a/Frontend/src/components/Blogs/BlogPlatform.jsx +++ b/Frontend/src/components/Blogs/BlogPlatform.jsx @@ -1,6 +1,6 @@ -import { useState, useEffect ,useMemo} from 'react'; -import { - Search, Plus, TrendingUp, Clock, Eye, Heart, MessageCircle, +import { useState, useEffect, useMemo } from 'react'; +import { + Search, Plus, TrendingUp, Clock, Eye, Heart, MessageCircle, Tag, User, Calendar, Edit, Trash2, Share2, Bookmark, Filter, ChevronRight, Sparkles, X, ArrowLeft, Send, MoreVertical, Star } from 'lucide-react'; @@ -100,28 +100,28 @@ export default function BlogPlatform() { }, [searchQuery, selectedTag, sortBy, currentPageNum]); const fetchBlogs = async () => { - setLoading(true); - try { - const params = new URLSearchParams({ - page: currentPageNum, limit: 12, search: searchQuery, tag: selectedTag, sort: sortBy - }); - const response = await fetch(`${API_URL}/blogs?${params}`); - const data = await response.json(); - - if (data.success) { - setBlogs(data.blogs); - setTotalPages(data.pagination.pages); - } else { - setBlogs(SEED_ARTICLES); // Fallback if success is false + setLoading(true); + try { + const params = new URLSearchParams({ + page: currentPageNum, limit: 12, search: searchQuery, tag: selectedTag, sort: sortBy + }); + const response = await fetch(`${API_URL}/blogs?${params}`); + const data = await response.json(); + + if (data.success) { + setBlogs(data.blogs); + setTotalPages(data.pagination.pages); + } else { + setBlogs(SEED_ARTICLES); // Fallback if success is false + } + } catch (error) { + console.error('API Error:', error); + setBlogs(SEED_ARTICLES); // Fallback if API is blocked (CORS) + } finally { + // Add a slight delay for a smooth "Wow" transition from skeleton to content + setTimeout(() => setLoading(false), 800); } - } catch (error) { - console.error('API Error:', error); - setBlogs(SEED_ARTICLES); // Fallback if API is blocked (CORS) - } finally { - // Add a slight delay for a smooth "Wow" transition from skeleton to content - setTimeout(() => setLoading(false), 800); - } -}; + }; const fetchFeaturedBlogs = async () => { try { @@ -133,20 +133,20 @@ export default function BlogPlatform() { } }; // Ensure this useMemo is inside your BlogPlatform function -const displayBlogs = useMemo(() => { - // Use API blogs if available, otherwise fall back to SEED_ARTICLES - let list = blogs.length > 0 ? blogs : SEED_ARTICLES; - - // Real-time filtering logic - return list.filter(blog => { - const titleMatch = blog.title.toLowerCase().includes(searchQuery.toLowerCase()); - const excerptMatch = blog.excerpt.toLowerCase().includes(searchQuery.toLowerCase()); - const tagMatch = blog.tags.some(tag => tag.toLowerCase().includes(searchQuery.toLowerCase())); - - // Show if search matches title, excerpt, OR tags - return titleMatch || excerptMatch || tagMatch; - }); -}, [blogs, searchQuery]); + const displayBlogs = useMemo(() => { + // Use API blogs if available, otherwise fall back to SEED_ARTICLES + let list = blogs.length > 0 ? blogs : SEED_ARTICLES; + + // Real-time filtering logic + return list.filter(blog => { + const titleMatch = blog.title.toLowerCase().includes(searchQuery.toLowerCase()); + const excerptMatch = blog.excerpt.toLowerCase().includes(searchQuery.toLowerCase()); + const tagMatch = blog.tags.some(tag => tag.toLowerCase().includes(searchQuery.toLowerCase())); + + // Show if search matches title, excerpt, OR tags + return titleMatch || excerptMatch || tagMatch; + }); + }, [blogs, searchQuery]); const fetchPopularTags = async () => { try { const response = await fetch(`${API_URL}/blogs/tags`); @@ -171,7 +171,7 @@ const displayBlogs = useMemo(() => { }; return ( -
+
{currentPage === "list" && (
{/* Filters */} - {/* Sidebar - Clickable Filters */} -
-
-

- DISCOVER -

- -
-

- Sort by -

-
- {[ - { label: 'Latest Stories', value: '-publishedAt' }, - { label: 'Most Viewed', value: '-views' }, - { label: 'Highly Rated', value: '-likes' } - ].map((item) => ( - - ))} -
+ > + {sortBy === item.value && } + {item.label} + + ))}
+
{/* Clear All Option - Only shows if a tag or specific sort is active */} {(selectedTag || sortBy !== '-publishedAt') && ( @@ -409,101 +408,99 @@ function BlogList({ {/* Tags section follows below... */}
- {/* In the Blog Grid section of BlogList */} - - {/* Popular Tags */} -
+ {/* In the Blog Grid section of BlogList */} + + {/* Popular Tags */} +
{/* Standard "All" button */} - + {/* Dynamic tags from your data */} {popularTags.map(tag => ( ))}
-
-
+
+
- {/* Blog Grid */} -
- {loading ? ( -
-
-

Loading articles...

-
- ) : blogs.length === 0 ? ( -
-

No articles found

- -
- ) : ( - <> -
- {blogs.map(blog => ( - - ))} -
- - {/* Pagination */} - {totalPages > 1 && ( -
- - - {[...Array(Math.min(5, totalPages))].map((_, idx) => { - const pageNum = idx + 1; - return ( - - ); - })} - - -
- )} - - )} -
- - - - ); - } + {/* Blog Grid */} +
+ {loading ? ( +
+
+

Loading articles...

+
+ ) : blogs.length === 0 ? ( +
+

No articles found

+ +
+ ) : ( + <> +
+ {blogs.map(blog => ( + + ))} +
+ + {/* Pagination */} + {totalPages > 1 && ( +
+ + + {[...Array(Math.min(5, totalPages))].map((_, idx) => { + const pageNum = idx + 1; + return ( + + ); + })} + + +
+ )} + + )} +
+ + + + ); +} // ============================================ // BLOG CARD COMPONENT @@ -518,7 +515,7 @@ function BlogCard({ blog, onView }) { > {/* Top Accent Line */}
- +
@@ -534,7 +531,7 @@ function BlogCard({ blog, onView }) {

{blog.title}

- +
{blog.tags.slice(0, 3).map(tag => ( @@ -696,11 +693,10 @@ function BlogDetail({ blog, currentUser, onBack, onEdit }) {
diff --git a/Frontend/src/pages/AdvancedFeaturesDashboard.jsx b/Frontend/src/pages/AdvancedFeaturesDashboard.jsx index 35c23ff6..7011a5dd 100644 --- a/Frontend/src/pages/AdvancedFeaturesDashboard.jsx +++ b/Frontend/src/pages/AdvancedFeaturesDashboard.jsx @@ -74,7 +74,7 @@ export default function AdvancedFeaturesDashboard() { } return ( -
+
{/* Header */}
@@ -151,15 +151,14 @@ export default function AdvancedFeaturesDashboard() {
{company.readinessLevel}
@@ -199,7 +198,7 @@ export default function AdvancedFeaturesDashboard() { {calendars.slice(0, 3).map((cal) => { const daysRemaining = Math.ceil( (new Date(cal.interviewDate) - new Date()) / - (1000 * 60 * 60 * 24), + (1000 * 60 * 60 * 24), ); return (
{/* Header */} diff --git a/Frontend/src/pages/CookiePolicy.jsx b/Frontend/src/pages/CookiePolicy.jsx index 874a16b2..4359a19c 100644 --- a/Frontend/src/pages/CookiePolicy.jsx +++ b/Frontend/src/pages/CookiePolicy.jsx @@ -14,317 +14,317 @@ export default function PrivacyPolicy() { }; return ( - <> + <> {/* Navbar */} - +
+
+

+ Cookie Policy +

- {/* 1 */} -
-

- 1. What Are Cookies? -

-

- Cookies are small text files stored on your device when you visit a - website. They help websites remember your preferences, maintain - sessions, and improve overall user experience. +

+ This Cookie Policy explains how{" "} + Intervyo + ("we", "our", or "us") uses cookies and similar technologies when you + visit or interact with our AI-powered interview preparation platform.

-
- {/* 2 */} -
-

- 2. How We Use Cookies -

-

- Intervyo uses cookies for the following purposes: -

-
    -
  • Maintaining secure user sessions and authentication
  • -
  • Remembering user preferences and settings
  • -
  • Analyzing platform usage and performance
  • -
  • Improving features, reliability, and user experience
  • -
-
+ {/* 1 */} +
+

+ 1. What Are Cookies? +

+

+ Cookies are small text files stored on your device when you visit a + website. They help websites remember your preferences, maintain + sessions, and improve overall user experience. +

+
- {/* 3 */} -
-

- 3. Types of Cookies We Use -

-
    -
  • - Essential Cookies:{" "} - Required for core functionality such as login, security, and - session management. -
  • -
  • - - Performance Cookies: - {" "} - Help us understand how users interact with the platform so we can - improve it. -
  • -
  • - Preference Cookies:{" "} - Store your settings and preferences for a more personalized - experience. -
  • -
-
+ {/* 2 */} +
+

+ 2. How We Use Cookies +

+

+ Intervyo uses cookies for the following purposes: +

+
    +
  • Maintaining secure user sessions and authentication
  • +
  • Remembering user preferences and settings
  • +
  • Analyzing platform usage and performance
  • +
  • Improving features, reliability, and user experience
  • +
+
- {/* 4 */} -
-

- 4. Third-Party Cookies -

-

- We may use trusted third-party services such as analytics or - performance monitoring tools that place cookies on your device. -

-

- These third parties are subject to their own privacy and cookie - policies, and we do not control their cookie usage. -

-
+ {/* 3 */} +
+

+ 3. Types of Cookies We Use +

+
    +
  • + Essential Cookies:{" "} + Required for core functionality such as login, security, and + session management. +
  • +
  • + + Performance Cookies: + {" "} + Help us understand how users interact with the platform so we can + improve it. +
  • +
  • + Preference Cookies:{" "} + Store your settings and preferences for a more personalized + experience. +
  • +
+
- {/* 5 */} -
-

- 5. Managing Cookies -

-

- You can control or delete cookies at any time through your browser - settings. Most browsers allow you to: -

-
    -
  • View stored cookies
  • -
  • Delete existing cookies
  • -
  • Block cookies from specific or all websites
  • -
-

- Please note that disabling certain cookies may affect platform - functionality. -

-
+ {/* 4 */} +
+

+ 4. Third-Party Cookies +

+

+ We may use trusted third-party services such as analytics or + performance monitoring tools that place cookies on your device. +

+

+ These third parties are subject to their own privacy and cookie + policies, and we do not control their cookie usage. +

+
- {/* 6 */} -
-

- 6. Consent -

-

- By continuing to use Intervyo, you consent to the use of cookies as - described in this policy unless you disable them through your - browser settings. -

-
+ {/* 5 */} +
+

+ 5. Managing Cookies +

+

+ You can control or delete cookies at any time through your browser + settings. Most browsers allow you to: +

+
    +
  • View stored cookies
  • +
  • Delete existing cookies
  • +
  • Block cookies from specific or all websites
  • +
+

+ Please note that disabling certain cookies may affect platform + functionality. +

+
- {/* 7 */} -
-

- 7. Changes to This Cookie Policy -

-

- We may update this Cookie Policy from time to time. Any changes will - be posted on this page with an updated revision date. -

-
+ {/* 6 */} +
+

+ 6. Consent +

+

+ By continuing to use Intervyo, you consent to the use of cookies as + described in this policy unless you disable them through your + browser settings. +

+
- {/* 8 */} -
-

- 8. Contact Information -

-

- If you have any questions about our use of cookies, please contact - us at: -

-

- support@intervyo.ai -

-
+ {/* 7 */} +
+

+ 7. Changes to This Cookie Policy +

+

+ We may update this Cookie Policy from time to time. Any changes will + be posted on this page with an updated revision date. +

+
-

- Last updated: 31 January 2026 -

+ {/* 8 */} +
+

+ 8. Contact Information +

+

+ If you have any questions about our use of cookies, please contact + us at: +

+

+ support@intervyo.ai +

+
+ +

+ Last updated: 31 January 2026 +

+
-
); } diff --git a/Frontend/src/pages/Landing.jsx b/Frontend/src/pages/Landing.jsx index cb5b2788..53727119 100644 --- a/Frontend/src/pages/Landing.jsx +++ b/Frontend/src/pages/Landing.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useRef } from "react"; +import { useState, useEffect, useRef } from "react"; import { useNavigate } from "react-router-dom"; import { useSelector } from "react-redux"; import { motion } from "framer-motion"; diff --git a/Frontend/src/pages/Leaderboard.jsx b/Frontend/src/pages/Leaderboard.jsx index 881208f8..be94fce1 100644 --- a/Frontend/src/pages/Leaderboard.jsx +++ b/Frontend/src/pages/Leaderboard.jsx @@ -80,7 +80,7 @@ export default function Leaderboard() { } return ( -
+
{/* Header */}
@@ -113,11 +113,10 @@ export default function Leaderboard() { @@ -190,13 +189,12 @@ export default function Leaderboard() { className={`relative mb-4 ${index === 0 ? "w-24 h-24" : "w-20 h-20"}`} >
{entry.profilePicture ? ( { @@ -62,7 +62,7 @@ function useSpeechRecognition() { try { recognitionRef.current.stop(); setListening(false); - } catch (_) {} + } catch (_) { } }; const reset = () => setTranscript(""); @@ -163,7 +163,7 @@ export default function PracticeLab() { }; return ( -
+
{/* Header */}
diff --git a/Frontend/src/pages/Privacy.jsx b/Frontend/src/pages/Privacy.jsx index c5a98459..fe46a946 100644 --- a/Frontend/src/pages/Privacy.jsx +++ b/Frontend/src/pages/Privacy.jsx @@ -14,371 +14,371 @@ export default function PrivacyPolicy() { }; return ( - <> + <> {/* Navbar */} - +
+
+

+ Privacy Policy +

- {/* 1 */} -
-

- 1. Information We Collect -

-

- We collect information to provide, improve, and secure our services. - The types of information we may collect include: +

+ This Privacy Policy describes how{" "} + Intervyo + ("we", "our", or "us") collects, uses, stores, and protects your + personal information when you access or use our AI-powered interview + preparation platform.

-
    -
  • - - Personal Information: - {" "} - Name, email address, profile details, authentication credentials. -
  • -
  • - Interview Data:{" "} - Responses, transcripts, audio/video recordings (if enabled), - performance metrics, and AI-generated feedback. -
  • -
  • - Usage Information:{" "} - Pages visited, features used, session duration, and interaction - logs. -
  • -
  • - - Device Information: - {" "} - Browser type, operating system, IP address, and device - identifiers. -
  • -
-
- {/* 2 */} -
-

- 2. How We Use Your Information -

-

- Your information is used strictly for legitimate business and - platform functionality purposes, including: -

-
    -
  • Providing AI-powered interview simulations
  • -
  • Generating performance analytics and improvement insights
  • -
  • Improving model accuracy and user experience
  • -
  • Managing subscriptions, authentication, and security
  • -
  • Communicating updates, alerts, and support responses
  • -
-
+ {/* 1 */} +
+

+ 1. Information We Collect +

+

+ We collect information to provide, improve, and secure our services. + The types of information we may collect include: +

+
    +
  • + + Personal Information: + {" "} + Name, email address, profile details, authentication credentials. +
  • +
  • + Interview Data:{" "} + Responses, transcripts, audio/video recordings (if enabled), + performance metrics, and AI-generated feedback. +
  • +
  • + Usage Information:{" "} + Pages visited, features used, session duration, and interaction + logs. +
  • +
  • + + Device Information: + {" "} + Browser type, operating system, IP address, and device + identifiers. +
  • +
+
- {/* 3 */} -
-

- 3. AI & Automated Processing -

-

- Intervyo uses artificial intelligence and machine learning models to - analyze interview responses and generate feedback. These processes - are automated and designed solely to assist learning and - preparation. AI outputs should not be considered professional hiring - advice. -

-
+ {/* 2 */} +
+

+ 2. How We Use Your Information +

+

+ Your information is used strictly for legitimate business and + platform functionality purposes, including: +

+
    +
  • Providing AI-powered interview simulations
  • +
  • Generating performance analytics and improvement insights
  • +
  • Improving model accuracy and user experience
  • +
  • Managing subscriptions, authentication, and security
  • +
  • Communicating updates, alerts, and support responses
  • +
+
- {/* 4 */} -
-

- 4. Data Storage & Security -

-

- We implement industry-standard technical and organizational security - measures to protect your data, including encryption, access control, - and secure cloud infrastructure. -

-

- However, no system is completely secure. By using Intervyo, you - acknowledge and accept this risk. -

-
+ {/* 3 */} +
+

+ 3. AI & Automated Processing +

+

+ Intervyo uses artificial intelligence and machine learning models to + analyze interview responses and generate feedback. These processes + are automated and designed solely to assist learning and + preparation. AI outputs should not be considered professional hiring + advice. +

+
- {/* 5 */} -
-

- 5. Data Retention -

-

- We retain your data only for as long as necessary to provide - services, comply with legal obligations, resolve disputes, and - enforce policies. You may request deletion of your data at any time. -

-
+ {/* 4 */} +
+

+ 4. Data Storage & Security +

+

+ We implement industry-standard technical and organizational security + measures to protect your data, including encryption, access control, + and secure cloud infrastructure. +

+

+ However, no system is completely secure. By using Intervyo, you + acknowledge and accept this risk. +

+
- {/* 6 */} -
-

- 6. Third-Party Services -

-

- We may integrate trusted third-party services for: -

-
    -
  • Cloud hosting and storage
  • -
  • Analytics and performance monitoring
  • -
  • Authentication and security
  • -
  • AI inference and processing
  • -
-

- These providers are contractually obligated to protect your data. -

-
+ {/* 5 */} +
+

+ 5. Data Retention +

+

+ We retain your data only for as long as necessary to provide + services, comply with legal obligations, resolve disputes, and + enforce policies. You may request deletion of your data at any time. +

+
- {/* 7 */} -
-

- 7. Cookies & Tracking -

-

- Intervyo may use cookies or similar technologies to maintain - sessions, enhance user experience, and analyze platform usage. You - can control cookie settings through your browser. -

-
+ {/* 6 */} +
+

+ 6. Third-Party Services +

+

+ We may integrate trusted third-party services for: +

+
    +
  • Cloud hosting and storage
  • +
  • Analytics and performance monitoring
  • +
  • Authentication and security
  • +
  • AI inference and processing
  • +
+

+ These providers are contractually obligated to protect your data. +

+
- {/* 8 */} -
-

- 8. User Rights -

-

- Depending on your jurisdiction, you may have the right to: -

-
    -
  • Access your personal data
  • -
  • Correct inaccurate information
  • -
  • Request deletion of your data
  • -
  • Withdraw consent for data processing
  • -
-
+ {/* 7 */} +
+

+ 7. Cookies & Tracking +

+

+ Intervyo may use cookies or similar technologies to maintain + sessions, enhance user experience, and analyze platform usage. You + can control cookie settings through your browser. +

+
- {/* 9 */} -
-

- 9. Children’s Privacy -

-

- Intervyo is not intended for children under the age of 13. We do not - knowingly collect personal information from minors. -

-
+ {/* 8 */} +
+

+ 8. User Rights +

+

+ Depending on your jurisdiction, you may have the right to: +

+
    +
  • Access your personal data
  • +
  • Correct inaccurate information
  • +
  • Request deletion of your data
  • +
  • Withdraw consent for data processing
  • +
+
- {/* 10 */} -
-

- 10. Changes to This Policy -

-

- We may update this Privacy Policy from time to time. Changes will be - posted on this page with an updated revision date. -

-
+ {/* 9 */} +
+

+ 9. Children’s Privacy +

+

+ Intervyo is not intended for children under the age of 13. We do not + knowingly collect personal information from minors. +

+
- {/* 11 */} -
-

- 11. Contact Information -

-

- If you have any questions or concerns regarding this Privacy Policy, - please contact us at: -

-

- support@intervyo.ai -

-
+ {/* 10 */} +
+

+ 10. Changes to This Policy +

+

+ We may update this Privacy Policy from time to time. Changes will be + posted on this page with an updated revision date. +

+
-

- Last updated: 7 January 2026 -

+ {/* 11 */} +
+

+ 11. Contact Information +

+

+ If you have any questions or concerns regarding this Privacy Policy, + please contact us at: +

+

+ support@intervyo.ai +

+
+ +

+ Last updated: 7 January 2026 +

+
-
); } diff --git a/Frontend/src/pages/Results.jsx b/Frontend/src/pages/Results.jsx index 19e27e55..5b37414e 100644 --- a/Frontend/src/pages/Results.jsx +++ b/Frontend/src/pages/Results.jsx @@ -221,8 +221,8 @@ const Results = () => { (session?.communicationScore || feedback?.communicationScore || 0) * - 10 - - 5, + 10 - + 5, ), confidence: (session?.communicationScore || @@ -243,16 +243,16 @@ const Results = () => { (session?.problemSolvingScore || feedback?.problemSolvingScore || 0) * - 10 + - 5, + 10 + + 5, ), efficiency: Math.max( 0, (session?.problemSolvingScore || feedback?.problemSolvingScore || 0) * - 10 - - 3, + 10 - + 3, ), }, }, @@ -269,18 +269,18 @@ const Results = () => { feedback?.areasOfConcern || session?.feedback?.areasOfConcern || [], technicalAnalysis: feedback?.technicalAnalysis || session?.feedback?.technicalAnalysis || { - coreConcepts: "Not available", - problemSolvingApproach: "Not available", - codeQuality: "Not available", - bestPractices: "Not available", - }, + coreConcepts: "Not available", + problemSolvingApproach: "Not available", + codeQuality: "Not available", + bestPractices: "Not available", + }, behavioralAnalysis: feedback?.behavioralAnalysis || session?.feedback?.behavioralAnalysis || { - communication: "Not available", - confidence: "Not available", - professionalism: "Not available", - adaptability: "Not available", - }, + communication: "Not available", + confidence: "Not available", + professionalism: "Not available", + adaptability: "Not available", + }, }, improvementPlan: { @@ -530,7 +530,7 @@ const Results = () => { ]; return ( -
+
{/* Confetti Effect */} {showConfetti && (
@@ -557,9 +557,8 @@ const Results = () => { >
{summary.overallScore || 0} @@ -603,11 +602,10 @@ const Results = () => { + ) : ( + <> + + Sign In - - {/* Desktop Navigation */} - - - {/* Desktop Buttons */} -
- {token ? ( - - ) : ( - <> - - Sign In - - - Get Started - - - )} -
- - {/* Mobile Hamburger Button */} - -
- - {/* Mobile Menu */} - {mobileMenuOpen && ( -
- + + {/* Mobile Hamburger Button */} + +
+ + {/* Mobile Menu */} + {mobileMenuOpen && ( +
+
+ + Features + + + How it Works + + + Pricing + + + FAQ + + + Contact + + + About + + +
+ {token ? ( + + ) : ( + <> - Contact + Sign In - About + Get Started - -
- {token ? ( - - ) : ( - <> - - Sign In - - - Get Started - - - )} -
-
-
- )} - -
-
-

- Terms & Conditions -

- -

- These Terms & Conditions ("Terms") govern your access to and use of{" "} - Intervyo, an - AI-powered interview preparation platform. By accessing or using the - platform, you agree to be legally bound by these Terms. -

+ + )} +
+
+
+ )} + +
+
+

+ Terms & Conditions +

- {/* 1 */} -
-

- 1. Acceptance of Terms -

-

- By creating an account, accessing, or using Intervyo, you confirm - that you have read, understood, and agreed to these Terms. If you do - not agree, you must discontinue use of the platform immediately. +

+ These Terms & Conditions ("Terms") govern your access to and use of{" "} + Intervyo, an + AI-powered interview preparation platform. By accessing or using the + platform, you agree to be legally bound by these Terms.

-
- {/* 2 */} -
-

- 2. Description of Service -

-

- Intervyo provides AI-powered mock interviews, analytics, feedback, - and learning tools designed to assist users in preparing for job - interviews. The platform is intended for educational and practice - purposes only. -

-
+ {/* 1 */} +
+

+ 1. Acceptance of Terms +

+

+ By creating an account, accessing, or using Intervyo, you confirm + that you have read, understood, and agreed to these Terms. If you do + not agree, you must discontinue use of the platform immediately. +

+
- {/* 3 */} -
-

- 3. Eligibility -

-

- You must be at least 13 years old to use Intervyo. If you are under - 18, you confirm that you have permission from a parent or legal - guardian. By using the platform, you represent that you meet these - requirements. -

-
+ {/* 2 */} +
+

+ 2. Description of Service +

+

+ Intervyo provides AI-powered mock interviews, analytics, feedback, + and learning tools designed to assist users in preparing for job + interviews. The platform is intended for educational and practice + purposes only. +

+
- {/* 4 */} -
-

- 4. User Accounts & Responsibilities -

-
    -
  • - You are responsible for maintaining the confidentiality of your - account credentials. -
  • -
  • - You are responsible for all activities conducted under your - account. -
  • -
  • You agree to provide accurate and up-to-date information.
  • -
  • - You must notify us immediately of any unauthorized account use. -
  • -
-
+ {/* 3 */} +
+

+ 3. Eligibility +

+

+ You must be at least 13 years old to use Intervyo. If you are under + 18, you confirm that you have permission from a parent or legal + guardian. By using the platform, you represent that you meet these + requirements. +

+
- {/* 5 */} -
-

- 5. Acceptable Use Policy -

-

- You agree not to misuse Intervyo. Prohibited activities include, but - are not limited to: -

-
    -
  • Attempting to reverse-engineer or exploit AI models
  • -
  • Uploading malicious, harmful, or illegal content
  • -
  • Impersonating another individual or organization
  • -
  • Attempting to disrupt platform security or infrastructure
  • -
  • - Using the platform for cheating, fraud, or misrepresentation -
  • -
-
+ {/* 4 */} +
+

+ 4. User Accounts & Responsibilities +

+
    +
  • + You are responsible for maintaining the confidentiality of your + account credentials. +
  • +
  • + You are responsible for all activities conducted under your + account. +
  • +
  • You agree to provide accurate and up-to-date information.
  • +
  • + You must notify us immediately of any unauthorized account use. +
  • +
+
- {/* 6 */} -
-

- 6. AI-Generated Content Disclaimer -

-

- All interview feedback, analytics, and suggestions generated by - Intervyo are produced using artificial intelligence. These outputs - are informational only and should not be considered professional, - hiring, legal, or career advice. Intervyo does not guarantee job - offers, interview success, or employment outcomes. -

-
+ {/* 5 */} +
+

+ 5. Acceptable Use Policy +

+

+ You agree not to misuse Intervyo. Prohibited activities include, but + are not limited to: +

+
    +
  • Attempting to reverse-engineer or exploit AI models
  • +
  • Uploading malicious, harmful, or illegal content
  • +
  • Impersonating another individual or organization
  • +
  • Attempting to disrupt platform security or infrastructure
  • +
  • + Using the platform for cheating, fraud, or misrepresentation +
  • +
+
- {/* 7 */} -
-

- 7. Subscriptions, Payments & Billing -

-

- Certain features may require a paid subscription. By purchasing a - plan, you agree to the following: -

-
    -
  • Fees are billed as displayed at the time of purchase
  • -
  • Subscriptions may renew automatically unless cancelled
  • -
  • - Payments are generally non-refundable unless stated otherwise -
  • -
-
+ {/* 6 */} +
+

+ 6. AI-Generated Content Disclaimer +

+

+ All interview feedback, analytics, and suggestions generated by + Intervyo are produced using artificial intelligence. These outputs + are informational only and should not be considered professional, + hiring, legal, or career advice. Intervyo does not guarantee job + offers, interview success, or employment outcomes. +

+
- {/* 8 */} -
-

- 8. Intellectual Property Rights -

-

- All platform content, including but not limited to UI design, logos, - branding, AI models, text, graphics, and software, is the exclusive - property of Intervyo. You are granted a limited, non-transferable, - non-commercial license to use the platform. -

-
+ {/* 7 */} +
+

+ 7. Subscriptions, Payments & Billing +

+

+ Certain features may require a paid subscription. By purchasing a + plan, you agree to the following: +

+
    +
  • Fees are billed as displayed at the time of purchase
  • +
  • Subscriptions may renew automatically unless cancelled
  • +
  • + Payments are generally non-refundable unless stated otherwise +
  • +
+
- {/* 9 */} -
-

- 9. User-Generated Content -

-

- You retain ownership of content you submit. By using Intervyo, you - grant us a limited license to store, process, and analyze this - content solely for providing platform functionality. -

-
+ {/* 8 */} +
+

+ 8. Intellectual Property Rights +

+

+ All platform content, including but not limited to UI design, logos, + branding, AI models, text, graphics, and software, is the exclusive + property of Intervyo. You are granted a limited, non-transferable, + non-commercial license to use the platform. +

+
- {/* 10 */} -
-

- 10. Suspension & Termination -

-

- We reserve the right to suspend or terminate accounts that violate - these Terms, misuse the platform, or pose security or legal risks, - without prior notice. -

-
+ {/* 9 */} +
+

+ 9. User-Generated Content +

+

+ You retain ownership of content you submit. By using Intervyo, you + grant us a limited license to store, process, and analyze this + content solely for providing platform functionality. +

+
- {/* 11 */} -
-

- 11. Limitation of Liability -

-

- To the maximum extent permitted by law, Intervyo shall not be liable - for any indirect, incidental, or consequential damages arising from - your use of the platform, including loss of opportunities or data. -

-
+ {/* 10 */} +
+

+ 10. Suspension & Termination +

+

+ We reserve the right to suspend or terminate accounts that violate + these Terms, misuse the platform, or pose security or legal risks, + without prior notice. +

+
- {/* 12 */} -
-

- 12. Indemnification -

-

- You agree to indemnify and hold harmless Intervyo from any claims, - damages, or liabilities arising from your violation of these Terms - or misuse of the platform. -

-
+ {/* 11 */} +
+

+ 11. Limitation of Liability +

+

+ To the maximum extent permitted by law, Intervyo shall not be liable + for any indirect, incidental, or consequential damages arising from + your use of the platform, including loss of opportunities or data. +

+
- {/* 13 */} -
-

- 13. Modifications to the Terms -

-

- We may update these Terms at any time. Continued use of Intervyo - after updates constitutes acceptance of the revised Terms. -

-
+ {/* 12 */} +
+

+ 12. Indemnification +

+

+ You agree to indemnify and hold harmless Intervyo from any claims, + damages, or liabilities arising from your violation of these Terms + or misuse of the platform. +

+
- {/* 14 */} -
-

- 14. Governing Law -

-

- These Terms shall be governed and interpreted in accordance with - applicable local laws, without regard to conflict of law principles. -

-
+ {/* 13 */} +
+

+ 13. Modifications to the Terms +

+

+ We may update these Terms at any time. Continued use of Intervyo + after updates constitutes acceptance of the revised Terms. +

+
- {/* 15 */} -
-

- 15. Contact Information -

-

- If you have questions regarding these Terms, contact us at: -

-

- support@intervyo.ai -

-
+ {/* 14 */} +
+

+ 14. Governing Law +

+

+ These Terms shall be governed and interpreted in accordance with + applicable local laws, without regard to conflict of law principles. +

+
-

- Last updated: 7 January 2026 -

+ {/* 15 */} +
+

+ 15. Contact Information +

+

+ If you have questions regarding these Terms, contact us at: +

+

+ support@intervyo.ai +

+
+ +

+ Last updated: 7 January 2026 +

+
-
); }