# Keshav Anand Portfolio

## Overview

A minimalist terminal-themed portfolio website featuring an interactive particle background with cursor-following character effects. The site displays a single SSH command that visitors can copy to connect. Built with React frontend and Express backend, using the Catppuccin Mocha color palette for a dark terminal aesthetic.

## User Preferences

Preferred communication style: Simple, everyday language.

## System Architecture

### Frontend Architecture
- **Framework**: React 18 with TypeScript
- **Routing**: Wouter (lightweight React router)
- **Styling**: Tailwind CSS with custom Catppuccin Mocha theme variables
- **UI Components**: shadcn/ui component library (New York style variant)
- **State Management**: TanStack React Query for server state
- **Build Tool**: Vite with path aliases (@/, @shared/, @assets/)

### Backend Architecture
- **Runtime**: Node.js with Express
- **Language**: TypeScript (ESM modules)
- **API Pattern**: RESTful routes prefixed with /api
- **Storage**: Pluggable storage interface (currently in-memory, prepared for PostgreSQL)

### Project Structure
```
client/           # React frontend
  src/
    components/   # UI components (shadcn/ui)
    pages/        # Route pages
    hooks/        # Custom React hooks
    lib/          # Utilities and query client
server/           # Express backend
  index.ts        # Entry point
  routes.ts       # API route definitions
  storage.ts      # Data storage interface
shared/           # Shared types and schemas
  schema.ts       # Drizzle ORM schema definitions
```

### Design System
- **Theme**: Catppuccin Mocha (dark-only)
- **Typography**: JetBrains Mono monospace font
- **Key Colors**: 
  - Background: #1e1e2e
  - Primary green: #a6e3a1
  - Teal accent: #94e2d5
  - Text: #cdd6f4

### Build Configuration
- Development: `npm run dev` (tsx with Vite dev server)
- Production: `npm run build` (esbuild for server, Vite for client)
- Output: `dist/` directory with `index.cjs` and `public/` folder

## External Dependencies

### Database
- **ORM**: Drizzle ORM with PostgreSQL dialect
- **Schema Location**: shared/schema.ts
- **Migrations**: ./migrations directory
- **Connection**: DATABASE_URL environment variable required for production

### Third-Party Services
- **Google Fonts**: JetBrains Mono font family loaded via CDN

### Key NPM Packages
- **UI**: Radix UI primitives, Lucide React icons, class-variance-authority
- **Forms**: react-hook-form with zod validation
- **Data**: @tanstack/react-query for async state
- **Utilities**: clsx, tailwind-merge, date-fns