A highly interactive, terminal-themed portfolio website built with React, TypeScript, and 3D visualizations. This project features a unique "boot sequence" introduction, a persistent terminal sidebar, and immersive neural network background effects.
- Immersive Terminal UI: A functional-looking terminal sidebar that guides the user through the experience.
- 3D Neural Background: Interactive particle system built with Canvas API for a dynamic visual backdrop.
- "Boot Sequence" Intro: innovative landing page experience simulating a system startup.
- Admin Panel: Secured section for managing dynamic content (if applicable).
- Responsive Design: Fully responsive layout adapting to different screen sizes.
- PDF Resume Generation: Integrated React-PDF for on-the-fly resume rendering.
The portfolio features a fully interactive integrated terminal. You can use the following commands to navigate and interact with the system:
| Command | Description |
|---|---|
help / ls |
Displays the list of available commands. |
about |
Navigates to the About Me section (Identity Module). |
experience |
Opens the Experience log (Work History). |
projects |
Accesses the Project Archive. |
skills |
Displays the Technical Matrix (Skills). |
roadmap |
Shows the Future Nodes (Roadmap/Goals). |
philosophy |
detailed view of Core Axioms (Philosophy). |
achievements |
Lists Honors & Awards. |
writings |
Opens the Data Logs (Writings). |
resume |
Generates and displays the Personnel File (PDF Resume). |
contact |
Initiates the Secure Uplink (Contact Form). |
home |
Returns to the Neural Navigation (Home Screen). |
clear |
Clears the terminal history. |
sudo apt -access admin [page]: Initiates the admin authentication sequence for a specific page.- Logic: Checks for persistent auth first. If not found, requests email/password.
- Security: Uses Firebase Auth. Invalid attempts are logged to the terminal history.
sudo admin -cmd logout: Immediately terminates the current session.
- Core Framework: React 19
- Reasoning: Latest concurrent features and optimizations.
- Language: TypeScript (Strict Mode)
- Config:
ES2022target, Bundler module resolution.
- Config:
- Build Tool: Vite
- Plugins:
@vitejs/plugin-react
- Plugins:
- Styling:
- Tailwind CSS v3.4 (Utility-first)
- PostCSS: Used for transforming CSS with Autoprefixer.
- Lucide React: Vector icons (lightweight).
- Animation:
- Framer Motion (Complex UI transitions).
- Backend / Services:
- Utilities:
react-pdf: Client-side PDF rendering.react-router-dom: SPA Client-side routing.
Create a .env file in the root. Do not commit this file.
# FIREBASE CONFIGURATION
VITE_FIREBASE_API_KEY=your_api_key_here
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
# EMAILJS CONFIGURATION
VITE_EMAILJS_SERVICE_ID=your_service_id
VITE_EMAILJS_TEMPLATE_ID=your_template_id
VITE_EMAILJS_PUBLIC_KEY=your_public_keyThe project uses Strict mode.
noUnusedLocals: True. Dead code will cause build errors.noFallthroughCasesInSwitch: True. Safer switch statements.target: ES2022. Modern browser support assumed.
Currently uses default theme extension.
- Content: Scans
./index.htmland./src/**/*.{js,ts,jsx,tsx}. - Theme: Default. Custom colors are currently defined in CSS variables or inline classes.
- Push code to GitHub.
- Import project in Vercel.
- Build Command:
npm run build - Output Directory:
dist - Environment Variables: Copy-paste your
.envcontent into Vercel's settings.
- Drag and drop the
distfolder after runningnpm run build. - Or connect via Git similar to Vercel. ensure
npm run buildis set as the build command.
Used for displaying critical system messages or error states with a cyberpunk aesthetic.
import CyberAlert from './components/ui/CyberAlert';
<CyberAlert
title="System Warning"
variant="destructive" // or "default", "warning"
>
Unauthorized access attempt detected.
</CyberAlert>Issue: PDF Worker Error
Fix: Ensure pdfjs.GlobalWorkerOptions.workerSrc is pointing to a valid CDN URL in Resume.tsx.
Issue: Terminal typing looks glitchy
Fix: This is intentional! The TerminalIntro component uses random setTimeout delays to simulate retro hardware.
Issue: Firebase Auth Fails
Fix: Check if the authorized domains in Firebase Console includes localhost and your production URL.
- Core: React 19, TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS, Lucide React (Icons)
- Animations: Framer Motion
- Backend / Services:
src/
βββ admin/ # Admin panel components and logic
βββ canvas/ # Canvas-based visualizations (NeuralBackground, etc.)
βββ components/ # Reusable UI components
βββ layouts/ # Page layout wrappers
βββ sections/ # Main page sections (Hero, About, Projects, etc.)
βββ lib/ # Utility functions (Firebase, Image handling)
βββ App.tsx # Main application logic and layout layering
βββ main.tsx # Application entry point
- Node.js (v18+ recommended)
- npm or yarn
-
Clone the repository
git clone <repository-url> cd portfolio
-
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory based on.env.example. You will need API keys for:- Firebase Configuration
- EmailJS Configuration
-
Run Development Server
npm run dev
The app will be available at
http://localhost:5173.
npm run buildnpm run lintThe application flow is controlled by a central state machine in App.tsx:
- LANDING: The initial "Press Start" screen.
- BOOTING: The terminal initialization sequence.
- ONLINE: The main interactive portfolio interface.
App.tsx manages visual layers using z-index:
- Background: 3D Neural Network Canvas.
- Terminal: Persistent sidebar/overlay.
- Navigation: Neural node navigation (Home only).
- Content: Main page content (Right side split).
- Modals: Admin interface overlays.