A Next-Generation Study Abroad Mentorship & Academic Networking Platform
Connecting prospective international students with verified university mentors for real-world admissions guidance, custom academic roadmaps, and community insights.
Architecture β’ Engineering Highlights β’ Tech Stack β’ Project Structure β’ Getting Started β’ Static Analysis β’ Deployment
πΈ Click to expand Application UI & Workflow Showcase (6 Screenshots)
Explore Guides β Multi-dimensional faceted filtering and responsive card grid
Mentor Profile β Tabbed biography, chronological milestones roadmap, and expertise tags
Community Connection β Direct mentor engagement and Telegram channel bridge
Authenticated Dashboard β User status tracking, role identification, and community gateway
Mobile Viewport β Spring-animated touch filter drawer with body scroll locking
Design System β HSL theme engine with zero-FOUC dark/light mode switching
The following diagram illustrates the unidirectional data flow, reactive state containers, server cache management, transport abstraction, and client telemetry pipeline:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT BROWSER / USER β
ββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NEXT.JS 16 APP ROUTER (REACT 19 SERVER/CLIENT) β
β βββββββββββββββββββββββββ ββββββββββββββββββββββββββ βββββββββββββββββββββββββ β
β β Landing & Discovery β β Search & Exploration β β Dashboard & Profile β β
β β app/page.tsx β β app/explore/page.tsx β β app/dashboard/ β β
β β Hero, FeaturedGuides β β FilterSidebar, Grid β β app/profile/[id]/ β β
β βββββββββββββββββββββββββ ββββββββββββββββββββββββββ βββββββββββββββββββββββββ β
ββββββββββββββ¬ββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ¬ββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
β UI & MOTION β β CLIENT STATE (ZUSTAND)β β TELEMETRY (POSTHOG) β
β βββββββββββββββββββββ β β βββββββββββββββββββββ β β βββββββββββββββββββββ β
β β Framer Motion 12 β β β β authStore (Persistβ β β β PostHogProvider β β
β β Spring Physics β β β β Token & User Info)β β β β Route Pageviews β β
β βββββββββββββββββββββ€ β β βββββββββββββββββββββ€ β β βββββββββββββββββββββ€ β
β β Tailwind CSS 3.4 β β β β filterStore (URL) β β β β Analytics Events β β
β β CSS Custom Props β β β βββββββββββββββββββββ€ β β β (Search, Funnel) β β
β βββββββββββββββββββββ€ β β β toastStore (Queue)β β β βββββββββββββββββββββ β
β β Radix UI Primitivesβ β βββββββββββββββββββββ β βββββββββββββββββββββββββββ
βββββββββββββββββββββββββββ ββββββββββββββ¬βββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SERVER STATE & CACHE LAYER (TANSTACK QUERY V5) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β useGuides() β’ useGuide(id) β’ useConnections() β’ useRequestConnection() β β
β β Cache Policies (staleTime: 60s, Single Retry, Automated Invalidation) β β
β βββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API TRANSPORT & DUAL-MODE DISPATCH LAYER β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Axios Client (Interceptors: Bearer Auth Injection, 401 Session Handling) β β
β βββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββ β
β β [NEXT_PUBLIC_API_URL set] β [Fallback / Local] β
β βΌ βΌ β
β ββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ β
β β Production Backend REST API β β Deterministic Mock Gateway β β
β β /api/guides β’ /api/connections β β Simulated Latency (600-800ms) β β
β ββββββββββββββββββββββββββββββββββββββββββ β Local In-Memory Mutations β β
β ββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-
Decoupled Dual-Mode Transport Layer & Offline Mock Sandbox: API services in
src/lib/api/guides.tsandsrc/lib/api/connections.tsimplement transparent runtime duality. WhenNEXT_PUBLIC_API_URLis omitted, requests are fulfilled by a deterministic mock engine that simulates realistic network latency (600β800ms) and persists connection mutations in memory. This enables zero-backend local execution, rapid UI iteration, and isolated CI testing without mock servers. -
Bidirectional Deep-Link State Synchronization: The faceted search engine in
src/components/explore/FilterSidebar.tsxandsrc/lib/store/filterStore.tsbridges Next.js App Router query parameters (useSearchParams) with Zustand store state. Filters update the browser URL via shallow navigation (router.push(..., { scroll: false })), ensuring shareable search URLs, browser history preservation, and immediate state restoration on page reloads without unnecessary component remounts. -
Concurrent-Safe Event Deduplication & Telemetry Latching: Telemetry tracking in
src/components/explore/GuideGrid.tsxutilizes a ref-based execution latch (trackedRef) to guarantee idempotent PostHogsearch_executedevent dispatches. This prevents redundant analytics calls during React 19 Concurrent Mode renders, filter transitions, and dynamic data re-fetches. -
Hardened Edge Security Interceptors & Production Obfuscation: The Axios instance in
src/lib/api/client.tscentralizes Bearer token injection fromzustand/persiststate and executes automated session invalidation on401 Unauthorizedresponses. The edge perimeter is hardened viavercel.jsonwith strict HTTP headers (X-Frame-Options: DENY,X-Content-Type-Options: nosniff,X-XSS-Protection), whilenext.config.tsstrips framework identification headers (poweredByHeader: false) and suppresses production source maps to shield proprietary code in developer tools.
| Layer / Domain | Technologies / Version | Description / Purpose |
|---|---|---|
| Framework & Core | Next.js 16.1.6 β’ React 19.2.3 |
App Router architecture, React Server Components, Suspense boundaries, and zero-bundle layouts. |
| Language & Typing | TypeScript 5.x |
Strict type checking, domain models, generic API wrappers, and type-safe schema resolvers. |
| Server State & Caching | @tanstack/react-query 5.90.21 |
Declarative asynchronous queries, optimistic mutations, automatic query cache invalidation. |
| Client State Management | Zustand 5.0.11 |
Atomic stores with persist middleware for session auth, multi-facet filtering, and toast queues. |
| Styling & Design System | Tailwind CSS 3.4.19 β’ next-themes |
Utility-first CSS engine, HSL CSS Custom Properties, and zero-FOUC dark/light theme switching. |
| Motion & Micro-Interactions | Framer Motion 12.34.3 |
Layout animations, spring transitions, morphing navigation pills, and interactive tab switches. |
| Form Management & Schema | React Hook Form 7.71.2 β’ Zod 4.3.6 |
High-performance uncontrolled form inputs paired with type-inferred validation schemas. |
| Network & Transport | Axios 1.13.5 |
Centralized HTTP client configured with Bearer token injection, request logging, and 401 error handlers. |
| Telemetry & Analytics | PostHog JS 1.355.0 |
Client-side privacy-first telemetry with route-change tracking and customized conversion funnels. |
| Icons & Design Tokens | Lucide React 0.575.0 |
Accessible tree-shakeable SVG icon primitives. |
| Edge Deployment & Hosting | Vercel |
Edge network delivery, HTTP response header hardening, and API rewrite routing. |
guidepath/
βββ public/ # Static assets and vector illustrations
β βββ favicon.ico # Application favicon
β βββ placeholder.svg # Asset fallback graphics
βββ src/
β βββ app/ # Next.js App Router (Pages, Layouts, Routing boundaries)
β β βββ auth/ # Authentication route group
β β β βββ login/page.tsx # Sign-in page with credential authentication
β β β βββ signup/page.tsx # Sign-up page with role selection (Seeker / Guide)
β β βββ dashboard/page.tsx # Authenticated user dashboard & community portal
β β βββ explore/page.tsx # Guide discovery page with Suspense loading boundaries
β β βββ profile/[id]/page.tsx # Dynamic mentor profile route with tabbed views
β β βββ globals.css # HSL color variables, typography, and glass utilities
β β βββ icon.svg # Vector brand application icon
β β βββ layout.tsx # Root HTML shell with provider tree & font injection
β β βββ page.tsx # Marketing landing page with modular sections
β βββ components/ # Reusable component architecture
β β βββ explore/ # Discovery & filter components
β β β βββ FilterSidebar.tsx # Responsive desktop sidebar and mobile filter drawer
β β β βββ GuideGrid.tsx # Animated grid with Skeleton loaders and empty states
β β βββ landing/ # Conversion-oriented landing sections
β β β βββ CTASection.tsx # Call-to-action banner
β β β βββ FeaturedGuides.tsx # Curated mentor highlight section
β β β βββ Hero.tsx # Hero value proposition with quick-action links
β β β βββ HowItWorks.tsx # 3-step platform journey visualizer
β β βββ layout/ # Layout structure components
β β β βββ Footer.tsx # Site footer with social links & copyright
β β β βββ Navbar.tsx # Glassmorphic header with spring-animated active pills
β β β βββ Sidebar.tsx # Collapsible dashboard navigation
β β βββ profile/ # Mentor profile detail components
β β β βββ ProfileCard.tsx # Mentor overview card with status badges and flags
β β β βββ ProfileDetail.tsx # Tabbed view (Bio, Roadmap Milestones, Expertise)
β β βββ ui/ # Primitives & design system elements
β β βββ Avatar.tsx # Resilient avatar with image fallback handling
β β βββ Badge.tsx # Semantic status and tag pills
β β βββ Button.tsx # Polymorphic button primitive with variant styling
β β βββ Input.tsx # Accessible form input with focus ring tokens
β β βββ Logo.tsx # Dynamic SVG brand mark
β β βββ Modal.tsx # Accessible dialog overlay with Framer Motion transitions
β β βββ Skeleton.tsx # Pulse-animated loading placeholder primitive
β β βββ ThemeToggle.tsx # Theme switcher with smooth icon morphing
β β βββ Toast.tsx # Global notification toast container and render items
β βββ lib/ # Core utilities, API clients, stores, and hooks
β β βββ analytics/ # Telemetry tracking modules
β β β βββ events.ts # Type-safe PostHog custom funnel event definitions
β β βββ api/ # HTTP and data transport layer
β β β βββ client.ts # Configured Axios instance with request/response interceptors
β β β βββ connections.ts # Connection request endpoints with dual-mode mock fallback
β β β βββ guides.ts # Mentor query endpoints with simulated latency filtering
β β βββ hooks/ # Custom React hooks & React Query wrappers
β β β βββ useConnections.ts # TanStack Query hook for connection requests and mutations
β β β βββ useGuides.ts # TanStack Query hooks for mentor listing and detail retrieval
β β βββ mock/ # In-memory deterministic mock datasets
β β β βββ data.ts # Comprehensive mentor profiles, roadmaps, and connections
β β βββ store/ # Zustand reactive state stores
β β β βββ authStore.ts # Persistent authentication store with local storage sync
β β β βββ filterStore.ts # Multi-facet search and filter state
β β β βββ toastStore.ts # Global notification queue and auto-dismiss dispatcher
β β βββ utils/ # Shared helper functions
β β β βββ cn.ts # ClassName merge utility (`clsx` + `tailwind-merge`)
β β β βββ formatters.ts # Date, string, and number formatting utilities
β β βββ constants.ts # Global application constants and external links
β βββ providers/ # Client-side React context providers
β β βββ PostHogProvider.tsx # Analytics provider with route-change tracking
β β βββ QueryProvider.tsx # TanStack Query client provider with caching defaults
β β βββ ThemeProvider.tsx # `next-themes` dark/light mode context wrapper
β βββ types/ # TypeScript type declarations and domain models
β βββ api.ts # Query filter contracts and API response envelopes
β βββ connection.ts # Mentorship connection data structures
β βββ guide.ts # Guide entity, roadmap milestones, and detail schemas
β βββ message.ts # Direct messaging contracts
β βββ user.ts # User identity and profile contracts
βββ .gitignore # Git exclusion rules
βββ .prettierrc # Prettier formatting specifications
βββ eslint.config.mjs # ESLint configuration with Next.js rules
βββ next.config.ts # Next.js build configuration and header hardening
βββ package.json # Project manifests, scripts, and runtime dependencies
βββ pnpm-lock.yaml # Deterministic dependency lockfile
βββ pnpm-workspace.yaml # Workspace boundary definition
βββ postcss.config.mjs # PostCSS plugins configuration
βββ tailwind.config.ts # Tailwind CSS theme extensions and design tokens
βββ tsconfig.json # TypeScript compiler options (Strict mode, path aliases)
βββ vercel.json # Edge deployment rules, security headers, and API rewrites
- Node.js:
v18.17.0+(orv20.xLTS recommended) - Package Manager:
npm,pnpm(v9.x), oryarn
Create a .env.local file in the project root:
# Backend REST API URL (leave blank to run in full offline mock sandbox mode)
NEXT_PUBLIC_API_URL=http://localhost:3001
# PostHog Telemetry (Optional)
NEXT_PUBLIC_POSTHOG_KEY=
NEXT_PUBLIC_POSTHOG_HOST=https://app.posthog.com-
Clone the repository:
git clone https://github.com/adiletbtrv/GuidePath.git cd GuidePath -
Install dependencies:
npm install # or with pnpm: pnpm install -
Launch the development server:
npm run dev # or with pnpm: pnpm dev -
Access the application: Open http://localhost:3000 in your browser.
GuidePath utilizes TypeScript strict typing and ESLint Next.js standards to guarantee code correctness, type safety, and runtime stability.
Run the static analysis checks locally:
# 1. Type verification without emitting compilation artifacts
npx tsc --noEmit
# 2. Code formatting and linting rules inspection
npm run lint
# 3. Production bundle compilation and asset optimization check
npm run build- Connect the GitHub repository to Vercel.
- Configure the build environment:
- Framework Preset:
Next.js - Root Directory:
./ - Build Command:
npm run build(orpnpm build) - Output Directory:
.next
- Framework Preset:
- Add environment variables (
NEXT_PUBLIC_API_URL,NEXT_PUBLIC_POSTHOG_KEY,NEXT_PUBLIC_POSTHOG_HOST). - Click Deploy.
- Security Headers:
vercel.jsoninjectsX-Content-Type-Options: nosniff,X-Frame-Options: DENY, andX-XSS-Protection: 1; mode=blockacross all routes. - Server Identity Masking:
next.config.tsexplicitly setspoweredByHeader: falseto strip theX-Powered-By: Next.jsfingerprint and disables client-accessible production source maps (productionBrowserSourceMaps: false).
Distributed under the MIT License. See LICENSE for more information.
Author: Adilet Batyrov β’ Connect on LinkedIn
