├── app ├── icon1.png ├── favicon.ico ├── apple-icon.png ├── changelog │ ├── layout.tsx │ └── page.tsx ├── announcements │ ├── layout.tsx │ └── page.tsx ├── page.tsx ├── manifest.json ├── api │ └── discord │ │ └── route.ts ├── blog │ └── page.tsx ├── status │ └── page.tsx ├── legal │ └── [slug] │ │ └── page.tsx ├── layout.tsx └── hacktoberfest │ └── page.tsx ├── assets └── banner.jpg ├── public ├── mockup.png ├── web-app-manifest-192x192.png ├── web-app-manifest-512x512.png ├── vercel.svg ├── window.svg ├── file.svg ├── site.webmanifest ├── globe.svg └── next.svg ├── postcss.config.mjs ├── components ├── utils │ ├── theme-provider.tsx │ ├── mode-toggle.tsx │ ├── banner-countdown.tsx │ ├── banner.tsx │ ├── countdown.tsx │ ├── clean-countdown.tsx │ └── retractable-banner.tsx ├── common │ ├── vertical-separator.tsx │ ├── discord-button.tsx │ ├── simple-theme-toggle.tsx │ ├── app-layout.tsx │ ├── scrollToTopButton.tsx │ ├── origin-banner-customizable.tsx │ └── github-star-button.tsx ├── ui │ ├── label.tsx │ ├── github-section-button.tsx │ ├── pill.tsx │ ├── aurora-text.tsx │ ├── avatar.tsx │ ├── kibo-ui │ │ ├── announcement │ │ │ └── index.tsx │ │ └── pill │ │ │ └── index.tsx │ ├── badge.tsx │ ├── timeline-animation.tsx │ ├── buttons │ │ ├── buttons.tsx │ │ └── shimmer-button.tsx │ ├── sticky-banner.tsx │ ├── accordion.tsx │ ├── card.tsx │ ├── svg-lines.tsx │ ├── stroke-multiple-radar-chart.tsx │ ├── border-beam.tsx │ ├── button.tsx │ ├── sparkles.tsx │ ├── system-status-block.tsx │ ├── interactive-card-stack.tsx │ └── particles.tsx ├── animate-ui │ ├── components │ │ └── animate │ │ │ └── avatar-group.tsx │ └── primitives │ │ └── animate │ │ ├── slot.tsx │ │ └── avatar-group.tsx ├── fancy │ └── text │ │ ├── underline-center.tsx │ │ └── scramble-hover.tsx └── magicui │ └── animated-beam.tsx ├── lib ├── utils.ts ├── get-strict-context.tsx ├── github.ts ├── datafast-client.ts └── datafast.ts ├── hooks └── use-media-query.ts ├── next.config.ts ├── eslint.config.mjs ├── tsconfig.json ├── components.json ├── .gitignore ├── source.config.ts ├── mdx-components.tsx ├── content ├── changelog │ ├── 2025-09-28.mdx │ ├── 2025-10-06.mdx │ └── 2025-10-13.mdx ├── announcements │ ├── 2025-10-12.mdx │ ├── 2025-09-28.mdx │ └── 2025-11-05.mdx └── legal │ ├── terms-condition.md │ └── privacy-policy.md ├── package.json ├── .github ├── ISSUE_TEMPLATE │ ├── feature_request.md │ ├── code_enhancement.md │ └── bug_report.md └── pull_request_template.md ├── CONTRIBUTING.md └── CODE_OF_CONDUCT.md /app/icon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HXQLabs/helixque-landing/HEAD/app/icon1.png -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HXQLabs/helixque-landing/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /app/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HXQLabs/helixque-landing/HEAD/app/apple-icon.png -------------------------------------------------------------------------------- /assets/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HXQLabs/helixque-landing/HEAD/assets/banner.jpg -------------------------------------------------------------------------------- /public/mockup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HXQLabs/helixque-landing/HEAD/public/mockup.png -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: ["@tailwindcss/postcss"], 3 | }; 4 | 5 | export default config; 6 | -------------------------------------------------------------------------------- /public/web-app-manifest-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HXQLabs/helixque-landing/HEAD/public/web-app-manifest-192x192.png -------------------------------------------------------------------------------- /public/web-app-manifest-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HXQLabs/helixque-landing/HEAD/public/web-app-manifest-512x512.png -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/changelog/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { ReactNode } from "react" 2 | 3 | export default function ChangelogLayout({ 4 | children, 5 | }: { 6 | children: ReactNode 7 | }) { 8 | return <>{children} 9 | } 10 | -------------------------------------------------------------------------------- /app/announcements/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { ReactNode } from "react" 2 | 3 | export default function AnnouncementsLayout({ 4 | children, 5 | }: { 6 | children: ReactNode 7 | }) { 8 | return <>{children} 9 | } 10 | -------------------------------------------------------------------------------- /components/utils/theme-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import { ThemeProvider as NextThemesProvider } from "next-themes" 5 | 6 | export function ThemeProvider({ 7 | children, 8 | ...props 9 | }: React.ComponentProps) { 10 | return {children} 11 | } -------------------------------------------------------------------------------- /public/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /components/common/vertical-separator.tsx: -------------------------------------------------------------------------------- 1 | import { cn } from "@/lib/utils" 2 | 3 | export function VerticalSeparator({ className }: { className?: string }) { 4 | return ( 5 |
13 | ) 14 | } 15 | -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | 8 | 9 | 10 | export const formatDate = (date: Date): string => { 11 | return date.toLocaleDateString("en-US", { 12 | year: "numeric", 13 | month: "long", 14 | day: "numeric", 15 | }) 16 | } 17 | -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | import { HeroSection } from "@/components/sections/hero"; 2 | import { FeaturesSection } from "@/components/sections/features"; 3 | import { CTASection } from "@/components/sections/cta"; 4 | import { OpensourceSection } from "@/components/sections/opensource"; 5 | 6 | export default function Home() { 7 | return ( 8 |
9 | 10 | 11 | 12 | 13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /app/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MyWebSite", 3 | "short_name": "MySite", 4 | "icons": [ 5 | { 6 | "src": "/web-app-manifest-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png", 9 | "purpose": "maskable" 10 | }, 11 | { 12 | "src": "/web-app-manifest-512x512.png", 13 | "sizes": "512x512", 14 | "type": "image/png", 15 | "purpose": "maskable" 16 | } 17 | ], 18 | "theme_color": "#ffffff", 19 | "background_color": "#ffffff", 20 | "display": "standalone" 21 | } -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Helixque", 3 | "short_name": "Helixque", 4 | "description": "Professional networking for builders, learners, and mentors.", 5 | "start_url": "/", 6 | "display": "standalone", 7 | "background_color": "#ffffff", 8 | "theme_color": "#ffffff", 9 | "icons": [ 10 | { 11 | "src": "/logo.svg", 12 | "sizes": "192x192", 13 | "type": "image/svg+xml" 14 | }, 15 | { 16 | "src": "/logo.svg", 17 | "sizes": "512x512", 18 | "type": "image/svg+xml" 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /hooks/use-media-query.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | 3 | export function useMediaQuery(query: string) { 4 | const [value, setValue] = useState(false); 5 | 6 | useEffect(() => { 7 | function onChange(event: MediaQueryListEvent) { 8 | setValue(event.matches); 9 | } 10 | 11 | const result = matchMedia(query); 12 | result.addEventListener('change', onChange); 13 | setValue(result.matches); 14 | 15 | return () => result.removeEventListener('change', onChange); 16 | }, [query]); 17 | 18 | return value; 19 | } -------------------------------------------------------------------------------- /next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from "next"; 2 | import { createMDX } from "fumadocs-mdx/next"; 3 | const withMDX = createMDX(); 4 | 5 | const nextConfig: NextConfig = { 6 | eslint:{ 7 | ignoreDuringBuilds: true, 8 | }, 9 | typescript:{ 10 | ignoreBuildErrors: true, 11 | }, 12 | images: { 13 | remotePatterns: [ 14 | { 15 | protocol: 'https', 16 | hostname: 'images.unsplash.com', 17 | port: '', 18 | pathname: '/**', 19 | }, 20 | ], 21 | }, 22 | }; 23 | 24 | export default withMDX(nextConfig); 25 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { dirname } from "path"; 2 | import { fileURLToPath } from "url"; 3 | import { FlatCompat } from "@eslint/eslintrc"; 4 | 5 | const __filename = fileURLToPath(import.meta.url); 6 | const __dirname = dirname(__filename); 7 | 8 | const compat = new FlatCompat({ 9 | baseDirectory: __dirname, 10 | }); 11 | 12 | const eslintConfig = [ 13 | ...compat.extends("next/core-web-vitals", "next/typescript"), 14 | { 15 | ignores: [ 16 | "node_modules/**", 17 | ".next/**", 18 | "out/**", 19 | "build/**", 20 | "next-env.d.ts", 21 | ], 22 | }, 23 | ]; 24 | 25 | export default eslintConfig; 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as LabelPrimitive from "@radix-ui/react-label" 5 | 6 | import { cn } from "@/lib/utils" 7 | 8 | function Label({ 9 | className, 10 | ...props 11 | }: React.ComponentProps) { 12 | return ( 13 | 21 | ) 22 | } 23 | 24 | export { Label } 25 | -------------------------------------------------------------------------------- /components/ui/github-section-button.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import Link from "next/link" 4 | 5 | import { Button } from "@/components/ui/button" 6 | import { Icons } from "../utils/icons" 7 | 8 | export default function GithubSectionButton() { 9 | return ( 10 | 28 | ) 29 | } -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "", 8 | "css": "app/globals.css", 9 | "baseColor": "neutral", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "iconLibrary": "lucide", 14 | "aliases": { 15 | "components": "@/components", 16 | "utils": "@/lib/utils", 17 | "ui": "@/components/ui", 18 | "lib": "@/lib", 19 | "hooks": "@/hooks" 20 | }, 21 | "registries": { 22 | "@magicui": "https://magicui.design/r/{name}.json", 23 | "@tailark": "https://tailark.com/r/{name}.json", 24 | "@kibo-ui": "https://www.kibo-ui.com/r/{name}.json", 25 | "@animate-ui": "https://animate-ui.com/r/{name}.json", 26 | "@aceternity": "https://ui.aceternity.com/registry/{name}.json" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/versions 12 | bun.lock 13 | 14 | # testing 15 | /coverage 16 | 17 | # next.js 18 | /.next/ 19 | /out/ 20 | 21 | # lock files 22 | package-lock.json 23 | pnpm-lock.yaml 24 | yarn.lock 25 | bun.lockb 26 | deno.lock 27 | 28 | # production 29 | /build 30 | 31 | # misc 32 | .DS_Store 33 | *.pem 34 | 35 | # debug 36 | npm-debug.log* 37 | yarn-debug.log* 38 | yarn-error.log* 39 | .pnpm-debug.log* 40 | 41 | # env files (can opt-in for committing if needed) 42 | .env* 43 | 44 | # vercel 45 | .vercel 46 | 47 | # typescript 48 | *.tsbuildinfo 49 | next-env.d.ts 50 | 51 | # statically generated during postinstall 52 | .source/ 53 | 54 | package-lock.json 55 | -------------------------------------------------------------------------------- /lib/get-strict-context.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | function getStrictContext( 4 | name?: string, 5 | ): readonly [ 6 | ({ 7 | value, 8 | children, 9 | }: { 10 | value: T; 11 | children?: React.ReactNode; 12 | }) => React.JSX.Element, 13 | () => T, 14 | ] { 15 | const Context = React.createContext(undefined); 16 | 17 | const Provider = ({ 18 | value, 19 | children, 20 | }: { 21 | value: T; 22 | children?: React.ReactNode; 23 | }) => {children}; 24 | 25 | const useSafeContext = () => { 26 | const ctx = React.useContext(Context); 27 | if (ctx === undefined) { 28 | throw new Error(`useContext must be used within ${name ?? 'a Provider'}`); 29 | } 30 | return ctx; 31 | }; 32 | 33 | return [Provider, useSafeContext] as const; 34 | } 35 | 36 | export { getStrictContext }; 37 | -------------------------------------------------------------------------------- /source.config.ts: -------------------------------------------------------------------------------- 1 | import { 2 | defineConfig, 3 | defineDocs, 4 | frontmatterSchema, 5 | } from "fumadocs-mdx/config" 6 | import { z } from "zod" 7 | 8 | export default defineConfig({ 9 | lastModifiedTime: "git", 10 | mdxOptions: { 11 | providerImportSource: "@/mdx-components", 12 | }, 13 | }) 14 | 15 | export const { docs, meta } = defineDocs({ 16 | dir: "content/changelog", 17 | docs: { 18 | schema: frontmatterSchema.extend({ 19 | date: z.string(), 20 | tags: z.array(z.string()).optional(), 21 | version: z.string().optional(), 22 | }), 23 | }, 24 | }) 25 | 26 | export const { docs: announcementDocs, meta: announcementMeta } = defineDocs({ 27 | dir: "content/announcements", 28 | docs: { 29 | schema: frontmatterSchema.extend({ 30 | date: z.string(), 31 | tags: z.array(z.string()).optional(), 32 | priority: z.enum(["high", "medium", "low","hacktoberfest","milestone"]).optional(), 33 | }), 34 | }, 35 | }) 36 | -------------------------------------------------------------------------------- /components/ui/pill.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | // Reusable Pill Component 4 | interface PillProps { 5 | children: React.ReactNode; 6 | className?: string; 7 | variant?: "default" | "primary"; 8 | } 9 | 10 | const Pill = ({ children, className = "", variant = "default" }: PillProps) => { 11 | const baseClasses = "w-fit relative mx-auto flex gap-2 items-center justify-center font-medium border dark:[background:radial-gradient(125%_125%_at_0%_80%,#000_40%,#3346ee_100%)] [background:radial-gradient(125%_125%_at_0%_80%,#ffffff_40%,#c2c8ff_100%)] dark:border-[#1b1b1b] border-gray-200 p-1.5 px-3 rounded-full overflow-hidden text-sm"; 12 | const variantClasses = { 13 | default: "", 14 | primary: "" 15 | }; 16 | 17 | return ( 18 |
19 | 20 | {children} 21 | 22 |
23 | ); 24 | }; 25 | 26 | export default Pill; 27 | -------------------------------------------------------------------------------- /public/globe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mdx-components.tsx: -------------------------------------------------------------------------------- 1 | import defaultMdxComponents from "fumadocs-ui/mdx" 2 | import type { MDXComponents } from "mdx/types" 3 | import { 4 | Accordion, 5 | AccordionContent, 6 | AccordionItem, 7 | AccordionTrigger, 8 | } from "@/components/ui/accordion" 9 | import { cn } from "@/lib/utils" 10 | 11 | export function getMDXComponents(components?: MDXComponents): MDXComponents { 12 | return { 13 | ...defaultMdxComponents, 14 | img: ({ className, ...props }: React.ComponentProps<"img">) => ( 15 | 16 | ), 17 | Video: ({ className, ...props }: React.ComponentProps<"video">) => ( 18 |