+ )}
+ {/* Event Type Badge */}
+
-
-
-
-
-
-
Expected Participants
-
500+ Developers
-
+ {/* Status Badge */}
+
+
+ {event.status}
+
+
+
+ {/* Card Content */}
+
+ {/* Title and Organizer */}
+
+
+ {event.organizer
+ .split(" ")
+ .map((n) => n[0])
+ .join("")}
-
-
-
-
-
-
Prize Pool
-
₹6,00,000
+
+
+
+ {event.title}
+
+
+ handleCopyLink(event.slug, String(event.id))}
+ className="p-1 bg-background/80 rounded-full border border-primary/20 hover:bg-primary/10 transition-colors"
+ title="Copy event link"
+ >
+
+
+ {copiedEventId === String(event.id) && (
+ Link copied!
+ )}
+
+
{event.organizer}
-
-
-
-
-
-
Updated On
-
June 15, 2025
-
+
+ {/* Description/Excerpt */}
+
{event.excerpt}
+ {/* Meta Row */}
+
+
+
+ {new Date(event.date).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}
+
+
+
+ {event.time}
+
+
+
+ {event.location}
+
+
+
+ {event.registered}/{event.capacity}
-
-
-
-
- RealityCode is a 24-hour hackathon focused on AI and machine learning projects.
- Build innovative solutions and compete for exciting prizes while networking with
- fellow developers and industry experts.
-
-
+ {/* Registration Deadline */}
+
+
+ Reg. Deadline: {new Date(event.registration_deadline).toLocaleDateString()}
+
+ {/* Tags */}
+
+ {event.tags.slice(0, 2).map((tag) => (
+
+ {tag}
+
+ ))}
+
+ {/* Action Button */}
+
-
- Register Now
-
+
+ Apply Now
-
- Learn More
-
-
-
-
+
+
+ ))}
-
-
-
- {/* cta Section */}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Stay Updated 🚀
-
-
-
-
-
- More{" "}
-
- Events Coming Soon
-
-
-
- Follow us on social media to stay updated with our latest events, workshops, and hackathons.
-
-
-
-
- Contact Us
-
-
+
+
No events found
+
+ Try adjusting your search terms or browse different categories.
+
{
+ setSearchTerm("")
+ }}
+ className="glow-effect hover:scale-105 transition-all duration-300 bg-gradient-to-r from-primary to-purple-600"
>
-
- About Codeunia
-
+ Clear Filters
-
-
-
+
+ )}
+
-
-
+
+
- );
+ )
}
diff --git a/app/globals.css b/app/globals.css
index 5d41f0c2..dec56953 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -185,16 +185,12 @@
/* Dark mode glowing effect */
@keyframes scroll {
- 0% {
- transform: translateX(0);
- }
- 100% {
- transform: translateX(calc(-300px * 6 - 2rem * 6));
- }
+ 0% { transform: translateX(0); }
+ 100% { transform: translateX(-50%); }
}
.animate-scroll {
- animation: scroll 40s linear infinite;
+ animation: scroll 30s linear infinite;
}
.animate-scroll:hover {
diff --git a/components/data/events.ts b/components/data/events.ts
new file mode 100644
index 00000000..ed27f073
--- /dev/null
+++ b/components/data/events.ts
@@ -0,0 +1,197 @@
+export interface Event {
+ id: number;
+ slug: string;
+ title: string;
+ excerpt: string;
+ description: string;
+ organizer: string;
+ date: string;
+ time: string;
+ duration: string;
+ category: string;
+ categories: string[];
+ tags: string[];
+ featured: boolean;
+ image: string;
+ location: string;
+ locations: string[];
+ capacity: number;
+ registered: number;
+ price: string;
+ payment: 'Paid' | 'Free';
+ status: 'live' | 'expired' | 'closed' | 'recent';
+ eventType: ('Online' | 'Offline' | 'Hybrid')[];
+ teamSize: number | [number, number];
+ userTypes: string[];
+ registration_required: boolean;
+ registration_deadline: string;
+ rules?: string[];
+ schedule?: { date: string; label: string }[];
+ prize?: string;
+ prize_details?: string;
+ faq?: { question: string; answer: string }[];
+ socials?: {
+ whatsapp?: string;
+ instagram?: string;
+ linkedin?: string;
+ email?: string;
+ };
+ sponsors?: { name: string; logo: string; type: string }[];
+ marking_scheme?: {
+ total_marks: number;
+ breakdown: { difficulty: string; count: number; marks_each: number }[];
+ notes: string[];
+ };
+}
+
+export const eventCategories = [
+ "All",
+ "Hackathons",
+ "Workshops",
+ "Conferences",
+ "Webinars",
+ "Mentorship Programs",
+ "Career Fairs",
+ "Tech Talks",
+ "Coding Competitions",
+ "Project Showcases"
+];
+
+// Mock events data - in a real app, this would come from Supabase
+export const mockEvents: Event[] = [
+ {
+ id: 1,
+ slug: "realitycode-hackathon-2025",
+ title: "RealityCode by Codeunia",
+ excerpt: "India's Smartest Innovation Showdown - A reality-show-style hackathon where entertainment meets engineering",
+ description: "India's first reality-show-style hackathon where entertainment meets engineering. Compete in live eliminations, technical battles, and collaborative problem-solving across 5 adrenaline-filled rounds. Join 5,000+ participants for a prize pool of ₹1,00,000+ and experience innovation, adaptability, and showmanship like never before.",
+ organizer: "Codeunia",
+ date: "2025-08-25",
+ time: "12:00 AM",
+ duration: "Multi-round",
+ category: "Hackathons",
+ categories: ["Hackathons", "Innovation", "Competition"],
+ tags: ["Reality Show", "Innovation", "Live Coding", "Competition", "Engineering"],
+ featured: true,
+ image: "/images/events/hackathons/realitycode.jpeg",
+ location: "Chandigarh University (Finale)",
+ locations: ["Online", "Chandigarh"],
+ capacity: 500,
+ registered: 160,
+ price: "199",
+ payment: "Free",
+ status: "live",
+ eventType: ["Hybrid"],
+ teamSize: [1, 5],
+ userTypes: ["College Students", "Professionals", "Developers"],
+ registration_required: true,
+ registration_deadline: "2025-08-25",
+ rules: [
+ "All development must occur during the hackathon",
+ "Plagiarism or pre-built project submissions will be disqualified",
+ "Maintain professional behavior & code of conduct",
+ "Public voting will partially influence the final scores",
+ "Finalists must wear official RealityCode badges during the finale"
+ ],
+ schedule: [
+ { date: "Aug 25", label: "Registration Deadline" },
+ { date: "Sep 10", label: "Round 1: Online Qualifier Submission" },
+ { date: "Sep 20", label: "Round 2: Jury Shortlisting" },
+ { date: "Oct 15", label: "Round 3: Grand Finale Day 1" },
+ { date: "Oct 16", label: "Round 3: Grand Finale Day 2" }
+ ],
+ prize: "₹22,000+",
+ prize_details: "Winner: ₹10,000, First Runner Up: ₹7,000, Second Runner Up: ₹5,000. Plus swag kits, merchandise, API credits, premium tech memberships, mentorship sessions, and recognition across Codeunia platforms.",
+ faq: [
+ { question: "What is the team size limit?", answer: "Teams can have 1 to 5 members. Inter-college and interdisciplinary teams are welcome." },
+ { question: "Is this a reality show format?", answer: "Yes, it's India's first reality-show-style hackathon with live eliminations and technical battles." },
+ { question: "What are the special perks for first-year students?", answer: "Dedicated mentorship before Round 1, 10% bonus in preliminary evaluation, learning pathway access, and networking with senior teams." },
+ { question: "What are the 5 rounds in the finale?", answer: "BootStart (rapid prototyping), Pitch Panic (live pitching), Feature Drop (surprise features), CodeSwap (debugging), and Final Build (rebuilding under constraints)." }
+ ],
+ socials: {
+ whatsapp: "https://wa.me/918699655907",
+ instagram: "https://instagram.com/codeunia",
+ linkedin: "https://linkedin.com/company/codeunia",
+ email: "codeunia@gmail.com"
+ },
+ sponsors: [
+
+
+ { name: 'GeeksforGeeks', logo: '/images/sponsors/geekforgeeks.png', type: 'Knowledge & Learning Partner' },
+ { name: 'Unstop', logo: '/images/sponsors/unstop.png', type: 'Technology Partner' },
+ { name: 'Webytes', logo: '/images/sponsors/webytes.png', type: 'Community Engagement Partner' },
+ { name: 'Codecrafter', logo: '/images/sponsors/codecrafter.png', type: 'Upskilling Partner' },
+ { name: 'Alexa Dev Community', logo: '/images/sponsors/alexadevcommunity.png', type: 'Community Engagement Partner' },
+ { name: 'GFG Student Chapter CU', logo: '/images/sponsors/studentchaptercu.png', type: 'Community Engagement Partner' },
+ { name: 'Rotaract CU', logo: '/images/sponsors/rotaract.png', type: 'Community Engagement Partner' },
+ ]
+ },
+ {
+ id: 2,
+ slug: "coderush-weekly-2025",
+ title: "CodeRush Weekly",
+ excerpt: "Your weekly coding showdown – Compete, Learn, and Win!",
+ description: "Join CodeRush Weekly – a fair, proctored, and competitive coding challenge that tests your aptitude, DSA, and interview readiness in a real hiring simulation. Solve curated problems, compete with top coders, and climb the leaderboard with weekly challenges. Rankings, certificates, and exclusive rewards await the best minds.",
+ organizer: "Codeunia & Devantra Community",
+ date: "2025-07-13", // You can update this weekly
+ time: "7:00 PM",
+ duration: "2 hrs",
+ category: "Coding Contest",
+ categories: ["Contests", "Interview Prep", "Competitive Programming"],
+ tags: ["Coding", "DSA", "Interview Prep", "Aptitude", "Leaderboard"],
+ featured: true,
+ image: "/images/events/hackathons/coderush.jpeg",
+ location: "Online",
+ locations: ["Online"],
+ capacity: 1500,
+ registered: 600,
+ price: "Free",
+ payment: "Free",
+ status: "live",
+ eventType: ["Online"],
+ teamSize: [1, 1],
+ userTypes: ["College Students", "Aspiring Developers", "Interview Seekers"],
+ registration_required: true,
+ registration_deadline: "2025-07-12",
+ rules: [
+ "The assessment opens in full-screen mode. Tab-switching or background activity will result in disqualification.",
+ "Participants must complete the test in one sitting. No retakes or breaks are allowed.",
+ "Only the first submission for each question will be evaluated. Edits or resubmissions are not permitted.",
+ "Using AI tools, copied code, or external help is strictly prohibited. Plagiarism leads to immediate disqualification.",
+ "Ensure a stable internet connection and avoid refreshing or closing the browser tab during the contest."
+ ],
+ schedule: [
+ { date: "Jul 12", label: "Last Date to Register" },
+ { date: "Jul 13", label: "Contest Day: 9:00 AM – 7:00 PM" },
+ { date: "Jul 14", label: "Results and Leaderboard Release" }
+ ],
+ prize: "Certificates",
+ prize_details: "Top scorers receive digital certificates and leaderboard badges. Recurring winners may receive internship interview calls and spotlight features.",
+ faq: [
+ { question: "Who can participate?", answer: "Anyone passionate about coding – college students, job seekers, and aspiring developers are welcome." },
+ { question: "Is there any registration fee?", answer: "No, CodeRush Weekly is completely free to participate." },
+ { question: "Can I participate in teams?", answer: "No, it is an individual contest to assess personal coding and logical abilities." },
+ { question: "Will the test be proctored?", answer: "Yes, tab-switching and suspicious behavior will lead to automatic disqualification." }
+ ],
+ marking_scheme: {
+ total_marks: 100,
+ breakdown: [
+ { difficulty: "Hard", count: 2, marks_each: 25 },
+ { difficulty: "Intermediate", count: 2, marks_each: 15 },
+ { difficulty: "Easy", count: 2, marks_each: 10 }
+ ],
+ notes: [
+ "No negative marking",
+ "Marks are awarded only for fully correct solutions",
+ "No marks for partially correct or sample-test-only solutions"
+ ]
+ },
+ socials: {
+ whatsapp: "https://wa.me/918699025107",
+ instagram: "https://instagram.com/codeunia",
+ linkedin: "https://linkedin.com/company/codeunia",
+ email: "codeunia@gmail.com"
+ },
+ sponsors: []
+ }
+];
\ No newline at end of file
diff --git a/components/tabs-demo.tsx b/components/tabs-demo.tsx
new file mode 100644
index 00000000..139ad8b1
--- /dev/null
+++ b/components/tabs-demo.tsx
@@ -0,0 +1,76 @@
+"use client";
+
+import { Tabs } from "@/components/ui/tabs";
+
+export default function TabsDemo() {
+ const tabs = [
+ {
+ title: "Product",
+ value: "product",
+ content: (
+
+ ),
+ },
+ {
+ title: "Services",
+ value: "services",
+ content: (
+
+ ),
+ },
+ {
+ title: "Playground",
+ value: "playground",
+ content: (
+
+ ),
+ },
+ {
+ title: "Content",
+ value: "content",
+ content: (
+
+ ),
+ },
+ {
+ title: "Random",
+ value: "random",
+ content: (
+
+ ),
+ },
+ ];
+
+ return (
+
+
+
+ );
+}
+
+const DummyContent = () => {
+ return (
+
+ );
+};
\ No newline at end of file
diff --git a/components/ui/tabs.tsx b/components/ui/tabs.tsx
new file mode 100644
index 00000000..b251ac01
--- /dev/null
+++ b/components/ui/tabs.tsx
@@ -0,0 +1,131 @@
+"use client"
+
+import { useState } from "react"
+import { motion } from "motion/react"
+import { cn } from "@/lib/utils"
+
+type Tab = {
+ title: string
+ value: string
+ content?: string | React.ReactNode
+}
+
+export const Tabs = ({
+ tabs: propTabs,
+ containerClassName,
+ activeTabClassName,
+ tabClassName,
+ contentClassName,
+}: {
+ tabs: Tab[]
+ containerClassName?: string
+ activeTabClassName?: string
+ tabClassName?: string
+ contentClassName?: string
+}) => {
+ const [active, setActive] = useState
(propTabs[0])
+ const [tabs, setTabs] = useState(propTabs)
+
+ const moveSelectedTabToTop = (idx: number) => {
+ const newTabs = [...propTabs]
+ const selectedTab = newTabs.splice(idx, 1)
+ newTabs.unshift(selectedTab[0])
+ setTabs(newTabs)
+ setActive(newTabs[0])
+ }
+
+ const [hovering, setHovering] = useState(false)
+
+ return (
+ <>
+
+ {propTabs.map((tab, idx) => (
+ {
+ moveSelectedTabToTop(idx)
+ }}
+ onMouseEnter={() => setHovering(true)}
+ onMouseLeave={() => setHovering(false)}
+ className={cn("relative px-4 py-2 rounded-full", tabClassName)}
+ style={{
+ transformStyle: "preserve-3d",
+ }}
+ >
+ {active.value === tab.value && (
+
+ )}
+
+
+ {tab.title}
+
+
+ ))}
+
+ {/* Mobile: no animation, only show active tab content. Desktop: show animated stacking. */}
+
+ {tabs[0].content}
+
+
+
+
+ >
+ )
+}
+
+export const FadeInDiv = ({
+ className,
+ tabs,
+ hovering,
+}: {
+ className?: string
+ key?: string
+ tabs: Tab[]
+ active: Tab
+ hovering?: boolean
+}) => {
+ const isActive = (tab: Tab) => {
+ return tab.value === tabs[0].value
+ }
+ return (
+
+ {tabs.map((tab, idx) => (
+
+ {tab.content}
+
+ ))}
+
+ )
+}
diff --git a/package-lock.json b/package-lock.json
index facc7fc4..e28b2ab2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27,6 +27,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"framer-motion": "^12.17.3",
+ "keen-slider": "^6.8.6",
"lucide-react": "^0.511.0",
"motion": "^12.18.1",
"next": "latest",
@@ -6372,6 +6373,11 @@
"node": ">=12"
}
},
+ "node_modules/keen-slider": {
+ "version": "6.8.6",
+ "resolved": "https://registry.npmjs.org/keen-slider/-/keen-slider-6.8.6.tgz",
+ "integrity": "sha512-dcEQ7GDBpCjUQA8XZeWh3oBBLLmyn8aoeIQFGL/NTVkoEOsmlnXqA4QykUm/SncolAZYGsEk/PfUhLZ7mwMM2w=="
+ },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
diff --git a/package.json b/package.json
index 9e8781d4..9132244c 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"framer-motion": "^12.17.3",
+ "keen-slider": "^6.8.6",
"lucide-react": "^0.511.0",
"motion": "^12.18.1",
"next": "latest",
diff --git a/public/images/events/hackathons/coderush.jpeg b/public/images/events/hackathons/coderush.jpeg
new file mode 100644
index 00000000..a3b9137e
Binary files /dev/null and b/public/images/events/hackathons/coderush.jpeg differ
diff --git a/public/images/events/hackathons/realitycode.jpeg b/public/images/events/hackathons/realitycode.jpeg
new file mode 100644
index 00000000..36490b2b
Binary files /dev/null and b/public/images/events/hackathons/realitycode.jpeg differ