Slashdot IISER Kolkata β The premier coding, designing, and technology club of IISER Kolkata. This is the official high-fidelity website for the 2026 season.
The Slashdot Website 2026 is a premium, cinematic web experience built for the community at IISER Kolkata. It features a terminal-style boot sequence, a mathematically-driven interactive hero, a global fuzzy search engine (Ctrl+K), a real-time events calendar with a live status heartbeat, and a horizontal navigation architecture that blends technical maturity with modern aesthetics.
- Terminal Boot Sequence: A character-by-character typing animation that reveals "Welcome to Slashdot" with a procedural
/β/ .β/ ..β/ ...dot progression. - Session-Aware Skip: Returning visitors (within 10 minutes) skip the animation entirely for an instant experience.
- Cinematic Brand Handoff: The loader transitions into the hero via a physical morph β the brand text flies from center-screen into the Navbar logo position.
- Route Awareness: Sub-pages (blog, events, etc.) trigger a "flight path" morph; the home page uses a scroll-driven lerp animation instead.
- 600-Particle Engine: Renders mathematical/code symbols (β«, β, Ο,
</>,=>, β£) floating on a<canvas>element. - Vivid Spectrum Palette: Each particle is colored using the full HSL spectrum (
hsl(0-360, 100%, 50%)), creating a vibrant, energetic texture. - Gaussian "Flashlight" Ring: The ring near the cursor uses a breathing sine wave cycle and 3D Simplex Noise to create organic, non-circular illumination β the "blobs" effect.
- Inverse-Proportion Depth: Larger symbols have lower opacity (
opacity = k / size), simulating a faux-parallax 3D depth field. - Adaptive Performance Culling: Monitors frame time; if sustained below 30fps, automatically reduces the particle count to maintain smoothness.
- Physical Fly Animation: Scrolling the home page causes the hero "Slashdot /." logo to physically translate and scale into the fixed Navbar logo via a
requestAnimationFramelerp loop (factor:0.12). - Dead Zone: The first 40px of scroll have no effect, preventing accidental triggers.
position: fixedSwitch: The element is detached from document flow at the exact moment it begins moving, preventing jitter.- Tagline Fade: The "The Coding & Designing Club of IISER Kolkata" subtitle fades out over the first 30% of the scroll range.
- Universal Overlay: Press
Ctrl+K(orCmd+K) from any page to open a modal search hub. - Static Fuse.js Engine: All content (blog, events, projects, funzone, team) is pre-indexed at build time into
public/search-index.json. No API calls at runtime. - Scoped Search: Prefix queries with a scope to narrow results (
blog/,events/,projects/,funzone/,team/). - Query Prefixes:
#Tagβ Tag-first mode, highlights the tag chip in the input.@Authorβ Author mode, surfaces blog authors and team members.type:Categoryβ Project type filter.
- Keyboard Navigation:
β/βarrows cycle results;Enternavigates;Escapecloses. - Recent History: The last 3 searches are persisted to
localStorageand shown on open (FIFO with deduplication). - View Transitions: Scope changes and overlay open/close are wrapped in
document.startViewTransitionfor fluid animations.
- Floating Calendar Sidebar: A multi-modal
InteractiveCalendar(Month / Week / Year views) tracks events. Clicking a date filters the event feed. - Real-Time Live Status: Event status (Live / Upcoming / Past) is computed at runtime using IST (UTC+5:30)-aware time math β no manual status updates needed.
- Date Range Support: Single days (
2026-04-17), continuous multi-day ranges (2026-04-17 - 2026-04-19), and custom session schedules are all supported. - Oscillating Lifecycle: Multi-session events flip between Live and Upcoming between sessions instead of going straight to Past.
- Global Heartbeat: The Navbar fetches the event index every 30 seconds. If any event is Live, a pulsing red dot appears next to "Events" site-wide.
- 3-Phase Morphing Search Bar: The events page search bar morphs between three states as the user scrolls (Full Right β Full Width β Docked Left).
- Resource Hub: Events can link to GitHub, YouTube, and external websites via frontmatter; chips are rendered on cards automatically.
- Mobile Calendar: A dedicated fixed
translate3d-composited weekly calendar bar appears below the Navbar on mobile for instant date navigation.
- Circular Clip-Path Reveal: Switching themes triggers a
document.startViewTransition+ acircle()clip-pathanimate()that expands from the toggle button's position. - Mobile Viewport Correction: Uses
100lvhvsvisualViewport.heightto compute the system bar offset, ensuring the circle fills the full screen without misalignment. - Instant Fallback: Gracefully falls back to an instant swap if the View Transitions API is unsupported.
- Desktop Hover Mirroring: All hover effects (card lifts, color reveals, icon animations) are replicated on touch devices via a global CSS ruleset targeting
@media (hover: none) and (pointer: coarse). - Android 250ms Nav Delay: On Android,
TouchNavDelay.tsxintercepts link clicks in the capture phase and delaysrouter.push()by 250ms, allowing card animations to complete before the page unmounts. .touch-nav-activeClass: Applied ontouchstartto the.groupancestor so animations fire immediately β not just on:active.
- Arista Pro Bold Typography: The brand font with a
unicode-rangefallback for digits 0β9 and@(which render from system fonts to avoid malformed glyphs). - CSS Variables:
--color-primary(#0291B2 teal),--color-live(red),--color-upcoming(emerald) β all mapped into Tailwind v4's@themelayer. - Invisible Scrollbar: Hidden across all browsers (Firefox, Chrome, Safari, IE/Edge) globally.
- Horizontal Fade Masks:
.mask-horizontal-fadedutility appliesmask-imagegradients to scrollable strips, creating clean edge fades. - Tan=3 Brand Slant: All brand geometric patterns (fallback covers, timelines, SVG backgrounds) use a 71Β° slant angle (
tanβ»ΒΉ(3)) for visual identity consistency.
| Section | Route | Description |
|---|---|---|
| Home | / |
Hero canvas, horizontal preview strips |
| Blog | /blog |
MDX articles with author & tag system |
| Projects | /projects |
Portfolio grid with status & tech stack |
| Events | /events |
Live calendar, hackathons & workshops |
| Fun Zone | /fun-zone |
Memes, games & generative art gallery |
| Team | /team |
Flip-card grid with Alumni toggle |
| Layer | Technology | Purpose |
|---|---|---|
| Framework | Next.js 15 (App Router) | SSG, routing, Server Components |
| Language | TypeScript 5 | Type safety throughout |
| Styling | Tailwind CSS v4 | Utility-first with CSS variable design tokens |
| Content | MDX / gray-matter | Markdown-driven blog, events, projects, funzone |
| Search | Fuse.js | Client-side fuzzy search (lazy-loaded) |
| Noise | simplex-noise | Organic canvas animations |
| Icons | Lucide React + React Icons FA6 | UI icons & social brands |
| Theming | next-themes + View Transitions API | Circular dark/light toggle |
| Deployment | GitHub Actions β GitHub Pages | Automated static export |
| Shortcut | Action |
|---|---|
Ctrl + K / Cmd + K |
Open the Global Search Overlay |
β / β |
Navigate search results |
Enter |
Navigate to selected result |
Escape |
Close the Search Overlay |
The full project architecture is documented in the /docs directory. Click any link below to explore a specific subsystem:
| Document | Description |
|---|---|
| Implementation Summary | Boot sequence, fonts, deployment, mobile UX, event bus architecture |
| Home System | Hero canvas engine, scroll-fly morph, horizontal strips |
| Navbar System | Glassmorphism states, live heartbeat, search trigger, mobile drawer |
| Footer System | 24-column grid, social icon system, Touch-Parity |
| Document | Description |
|---|---|
| Search System | Ctrl+K overlay, Fuse.js engine, scopes, and query prefixes |
| Events System | Interactive calendar, Live status engine, mobile scroll-sync |
| Blog System | MDX pipeline, card grid, freshness badges, fallback covers |
| Projects System | Portfolio grid, status badges, TypePill search integration |
| Fun Zone System | Memes, games, generative art viewer, scroll gradients |
| Team System | Flip-card grid, alumni toggle, Journey timeline |
# 1. Clone the repository
git clone https://github.com/anuprovo-debnath/slashdot-website-2026.git
cd slashdot-website-2026
# 2. Install dependencies
npm install
# 3. Start the dev server (also regenerates the search index)
npm run devOpen http://localhost:3000 in your browser.
Note:
npm run devautomatically runsscripts/generate-search-index.jsas apredevhook, so the search index is always up to date.
npm run buildThis runs prebuild (search index generation) then next build with output: 'export' to produce a fully static site in out/.
slashdot-website-2026/
βββ content/ # Markdown-driven content
β βββ blog/ # Blog post .md files
β βββ events/ # Event .md files
β βββ projects/ # Project .md files
β βββ funzone/ # Fun Zone item .md files
β βββ team/ # Team member .md files
β
βββ docs/ # Architecture documentation
β βββ implementation_summary.md
β βββ system_home.md
β βββ system_navbar.md
β βββ system_footer.md
β βββ system_search.md
β βββ system_events.md
β βββ system_blog.md
β βββ system_projects.md
β βββ system_funzone.md
β βββ system_team.md
β
βββ public/ # Static assets (fonts, images, search-index.json)
β βββ search-index.json # β οΈ Auto-generated β do not edit manually
β
βββ scripts/
β βββ generate-search-index.js # Build-time search index generator
β
βββ src/
β βββ app/ # Next.js App Router pages
β β βββ globals.css # Design tokens, font faces, touch-parity rules
β β βββ layout.tsx # Root layout (Navbar, Footer, TouchNavDelay)
β β βββ page.tsx # Home page (Server Component)
β β βββ blog/
β β βββ events/
β β βββ fun-zone/
β β βββ projects/
β β βββ team/
β β
β βββ components/ # Shared React components
β β βββ LoadingScreen.tsx # Terminal boot sequence
β β βββ Navbar.tsx # Global navigation bar
β β βββ Footer.tsx # Global footer
β β βββ ThemeToggle.tsx # Circular View Transition theme switcher
β β βββ TouchNavDelay.tsx # Android touch animation system
β β βββ InteractiveCalendar.tsx
β β βββ EventsSystem.tsx
β β βββ EventCard.tsx
β β βββ BlogGrid.tsx / BlogCard.tsx
β β βββ ProjectGrid.tsx / ProjectCard.tsx
β β βββ home/ # HomeHero, HeroCanvas, HomeStrip
β β βββ fun-zone/ # FunZoneCards, ArtViewerClient, HeroArt
β β βββ ui/ # SearchOverlay, TagPill, AuthorPill, TypePill, MemberFlipCard...
β β
β βββ lib/ # Server-side utilities
β βββ eventUtils.ts # IST-aware Live/Upcoming/Past calculator
β βββ events.ts # Server-side event data loader
β βββ markdown.ts # gray-matter + MDX pipeline
β
βββ next.config.ts # basePath, output: 'export'
βββ package.json # Scripts: predev, prebuild hooks
The site is configured for Static Export (output: 'export') and hosted on GitHub Pages.
- Live URL: https://anuprovo-debnath.github.io/slashdot-website-2026/
- Workflow: Automated via GitHub Actions (
.github/workflows/deploy.yml) on push tomain. - Base Path: All assets and routes are prefixed with
/slashdot-website-2026/.
Create content/blog/my-post.md with:
---
title: "My Post Title"
date: "2026-04-17"
excerpt: "A short summary..."
author: "Your Name"
tags: ["Design", "WebDev"]
coverImage: "/images/blog/my-cover.jpg" # optional
---
Post body in Markdown here...Create content/events/my-event.md with:
---
title: "Spring Hackathon"
date: "2026-05-10 - 2026-05-12" # single day OR range
time: "09:00 - 22:00 IST"
category: "Hackathon"
status: "Upcoming" # used as fallback only; auto-computed at runtime
resources:
github: "https://github.com/..."
youtube: "https://youtube.com/..."
---
Event description here...Create content/team/first-last.md with:
---
name: "First Last"
position: "Frontend Developer"
bio: "Short bio..."
image: "/images/team/first-last.jpg"
committee: "Dev" # Dev | Design | PR | Lead
tenure: "2025-2026"
tech_stack: ["React", "TypeScript", "Figma"]
isAlumni: false
socials:
github: "https://github.com/..."
linkedin: "https://linkedin.com/in/..."
---Developed by:
- Anuprovo Debnath β Lead Developer
- Sattwik Pradhan β Co-Developer
Β© 2026 Slashdot Club, IISER Kolkata.