# Terminal Portfolio Website ## Overview A minimalist single-page portfolio website featuring an interactive particle background with terminal/matrix aesthetics. The site displays an SSH command for connecting to the portfolio owner, with cursor-following character effects using the Catppuccin Mocha color scheme. The application follows a full-stack architecture with a React frontend and Express backend, using TypeScript throughout. ## User Preferences Preferred communication style: Simple, everyday language. ## System Architecture ### Frontend Architecture - **Framework**: React 18 with TypeScript - **Routing**: Wouter for lightweight client-side routing - **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 React plugin The frontend is a single-page application centered around an HTML5 canvas particle effect that follows mouse movement, displaying random terminal characters. The main interactive element is an SSH command display with a copy-to-clipboard button. ### Backend Architecture - **Runtime**: Node.js with Express - **Language**: TypeScript (ESM modules) - **API Pattern**: RESTful routes prefixed with `/api` - **Storage**: Abstracted storage interface with in-memory implementation (MemStorage), designed for easy swap to database The server handles static file serving in production and proxies to Vite dev server in development. Routes are registered in `server/routes.ts`. ### Data Layer - **ORM**: Drizzle ORM with PostgreSQL dialect - **Schema**: Defined in `shared/schema.ts` using Drizzle's table definitions - **Validation**: Zod schemas generated from Drizzle schemas via drizzle-zod - **Migrations**: Managed via `drizzle-kit push` Currently includes a basic users table for authentication scaffolding. ### Project Structure ``` client/ # React frontend src/ components/ # UI components (shadcn/ui) pages/ # Route components hooks/ # Custom React hooks lib/ # Utilities and query client server/ # Express backend index.ts # Server entry point routes.ts # API route definitions storage.ts # Data access layer vite.ts # Vite dev server integration shared/ # Shared types and schemas schema.ts # Drizzle database schema ``` ### Design System - **Theme**: Catppuccin Mocha (dark-only) - **Typography**: JetBrains Mono monospace font - **Colors**: CSS custom properties for consistent theming - **Layout**: Full viewport single-screen design, centered content ## External Dependencies ### Database - **PostgreSQL**: Primary database (configured via `DATABASE_URL` environment variable) - **Drizzle ORM**: Database toolkit for type-safe queries ### Frontend Libraries - **Radix UI**: Headless UI primitives for accessible components - **Lucide React**: Icon library - **class-variance-authority**: Component variant management - **embla-carousel-react**: Carousel functionality - **react-day-picker**: Calendar component ### Backend Libraries - **express-session**: Session management - **connect-pg-simple**: PostgreSQL session store ### Build & Development - **Vite**: Frontend build tool with HMR - **esbuild**: Server bundling for production - **tsx**: TypeScript execution for development