Skip to content

ayushhh101/LinkSpark-FE

Repository files navigation

LinkSpark (Frontend)

A modern, real‑time developer networking frontend. LinkSpark helps engineers discover peers, exchange connection requests, and chat with instant notifications. This repository contains the React frontend; the backend API is expected at VITE_API_URL.

Table of Contents

Project Overview

LinkSpark is a full‑stack developer networking platform focused on real‑time interactions: discover developers, connect via requests, and chat with instant, in‑app notifications. Target users are students and early‑career engineers who want a faster, intent‑driven alternative to traditional professional networks.

Key value proposition:

  • Real‑time, lightweight interactions (requests, messages, notifications)
  • Clean, responsive UI optimized for quick discovery and connection
  • Direct, focused communication for collaboration

Features

Implemented

  • Authentication

    • Signup/Login with client-side validation
    • Protected routes with redirect to intended page
    • Cookie-based session support
  • User Profiles

    • Profile view/edit with comprehensive fields
    • Full profile page with tabs (About, Skills, Projects, Experience)
    • Profile completion progress tracking
  • Discovery Feed

    • Swipe-based discovery interface with card animations
    • Like/pass actions with smooth transitions
    • Smart feed algorithm integration
  • Connections & Requests

    • View connections with online/offline presence
    • Real-time presence indicators
    • Manage incoming requests (accept/reject)
  • Real-time Chat

    • One-on-one messaging with Socket.IO
    • WebRTC video calling with peer-to-peer connections
    • Typing indicators with auto-timeout
    • Message delivery notifications via Socket.IO
    • Online/offline status and last seen timestamps
  • Real-time Notifications

    • Socket connection management with cleanup
    • Toast notifications for instant alerts
    • Notification Center with unread badges
    • Connection requests, acceptances, and new message notifications
  • Search

    • Advanced profile search with filters
    • Real-time search results
  • Responsive UI

    • Mobile-friendly navbar, layout, and forms
    • Glassmorphism effects with gradient backgrounds

Future Enhancements :

  • Advanced search filters and ranking
  • CI/CD, tests, and production backend integration

Screenshots

Quick Preview

Login Feed Full Profile Edit Profile
Login Feed Full Profile Edit Profile
Connections Requests Chat Search
Connections Requests Chat Search

Tech Stack

Frontend

  • React 18 with React Router
  • Redux Toolkit (state management)
  • Tailwind CSS + DaisyUI
  • Axios (API)
  • Socket.IO client (real-time notifications)
  • React Toastify (toasts)
  • Lucide/React Icons (icons)
  • Vite 6 (build/dev)

Key Libraries & Tools (from package.json)

  • react, react-dom, react-router-dom
  • @reduxjs/toolkit, react-redux
  • axios
  • socket.io-client
  • react-toastify
  • tailwindcss, daisyui, postcss, autoprefixer
  • @heroicons/react, heroicons, lucide-react, react-icons
  • gsap
  • eslint (+ react, react-hooks plugins)
  • vite, @vitejs/plugin-react

Architecture

  • Component-based UI (src/components)
  • Redux slices for domains:
    • user (utils/userSlice.js)
    • feed (utils/feedSlice.js)
    • connections (utils/connectionSlice.js)
    • requests (utils/requestSlice.js)
    • notifications (utils/addNotification.js slice)
  • Utilities:
    • constants (utils/constants.js) for API base URL via Vite env
    • error handling (utils/errorHandler.js)
    • socket creator (utils/socket.js) for Socket.IO connection
  • Socket lifecycle:
    • Auth-gated connect/disconnect in NotificationListener.jsx
    • Event subscriptions for message/connection events
  • Routing:
    • App.jsx defines routes with ProtectedRoute guard

Project Structure

src/
├── components/                 # React components
│   ├── Navbar.jsx              # Navigation, unread badge, logout
│   ├── Feed.jsx                # Discovery feed
│   ├── UserCard.jsx            # Profile cards + connect actions
│   ├── Chat.jsx                # Messaging UI
│   ├── Connections.jsx         # Network management
│   ├── Requests.jsx            # Incoming connection requests
│   ├── Profile.jsx             # Profile editor wrapper
│   ├── EditProfile.jsx         # Edit form
│   ├── FullProfilePage.jsx     # Detailed profile view
│   ├── NotificationCenter.jsx  # In-app notifications list
│   ├── NotificationListener.jsx# Socket listener and dispatch
│   ├── ProfileSearch.jsx       # Search UI
│   ├── Body.jsx                # Layout (Navbar/Outlet/Footer)
│   └── Footer.jsx
├── utils/                      # Utilities and Redux slices
│   ├── userSlice.js            # User auth state
│   ├── feedSlice.js            # Feed state
│   ├── connectionSlice.js      # Connections state
│   ├── requestSlice.js         # Requests state
│   ├── addNotification.js      # Notifications slice + actions
│   ├── socket.js               # Socket.io client setup
│   ├── errorHandler.js         # Central error messaging
│   └── constants.js            # BASE_URL from env
├── App.jsx                     # Routes with ProtectedRoute
├── main.jsx                    # App bootstrap
└── index.css / App.css         # Global styles

UI/UX Highlights

  • Modern gradient backgrounds (cyan → teal)
  • Glassmorphism via translucent panels and backdrop blur
  • Smooth transitions and hover states
  • Responsive, mobile-first layouts
  • Consistent primary color (#26CAE4)
  • Accessible form labels and ARIA on interactive items
  • Loading spinners and error toasts

Getting Started

Prerequisites

  • Node.js 18+ (Vite 6)
  • npm (or pnpm/yarn)

Installation

git clone https://github.com/yourname/linkspark-frontend.git
cd linkspark-frontend
npm install

Environment Variables

Create a .env file at the project root:

VITE_API_URL=https://your-backend-url

The app reads the API base URL via import.meta.env.VITE_API_URL (see utils/constants.js). Cookies are sent with requests via Axios withCredentials: true.

Run Development Server

npm run dev

Build & Preview

npm run build
npm run preview

Key Features Deep Dive

Real-Time Communication

  • Socket.IO client connection management with proper cleanup (NotificationListener.jsx)
  • In-app toasts for message and connection events
  • Typing indicator state scaffolding in Chat.jsx
  • Presence display on Connections (onlineUserIds state)

State Management

  • Redux Toolkit slices for auth, requests, connections, feed, notifications
  • Protected routes reading from a single, standardized selector: state.user.user
  • Optimistic UI patterns for request review (accept/reject) ready to integrate with API

Pages & Routes

  • /login — Authentication
  • /feed — Discover developers
  • /profile — Edit profile
  • /profile/:userId — Full profile view
  • /connections — Your network
  • /requests — Incoming requests
  • /search — Search profiles
  • /notifications — Activity center
  • /chat/:targetUserId — Messaging

Design System

  • Primary: #26CAE4 (cyan)
  • Gradients: cyan‑50 → teal‑50
  • Typography: system stack
  • Spacing: 8px scale
  • Radius: 8px–24px components

Security (Frontend)

  • Protected routes (utils/ProtectedRoute.jsx)
  • Cookie-based session usage via withCredentials
  • Client-side input validation on auth forms
  • CORS/auth must be configured on backend (same-site, CSRF, rate limits)

Performance

  • Vite fast dev/build
  • Ready for React.lazy code-splitting on heavy routes (e.g., Chat, FullProfilePage)
  • Debounced typing indicator logic supported in Chat (state scaffolding)
  • Toast deduping and minimal re-renders via Redux slices

Error Handling

  • Central error mapper (utils/errorHandler.js)
  • Toast notifications (react-toastify)
  • Fallback empty and loading states across pages
  • Console-safe logging in catch paths

Contributing

Contributions are welcome. Please:

  • Open an issue for discussion
  • Keep PRs focused and small
  • Follow existing linting/style

Developer

Ayush Sawant - Full Stack Developer


Note: This is the frontend repository. The backend (auth, connections, chat persistence, notifications API) is expected at the URL provided via VITE_API_URL.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages