Skip to content

davidparys/davidparys-angular

Repository files navigation

๐Ÿ–ฅ๏ธ Angular Terminal Portfolio

An interactive terminal portfolio that brings the classic command-line experience to the modern web

Angular TypeScript Tailwind CSS License: MIT

A fully interactive terminal portfolio built with Angular 20 featuring a Matrix-style background animation, typewriter effects, and a comprehensive command-line interface. Perfect for developers who want to showcase their skills in a unique and engaging way.

โœจ Features

๐ŸŽฎ Interactive Terminal Experience

  • Real Command-Line Interface - Type commands just like a real terminal
  • Command History Navigation - Use โ†‘/โ†“ arrows to browse previous commands
  • Tab Auto-completion - Intelligent command suggestions
  • Typewriter Effects - Authentic character-by-character output
  • Blinking Cursor - Realistic terminal cursor animation
  • Copy/Paste Support - Full clipboard integration with keyboard shortcuts

๐ŸŒŸ Matrix Background Animation

  • Canvas-based Matrix Rain - High-performance animated background
  • Customizable Settings - Adjust speed, opacity, colors, and character sets
  • Responsive Design - Adapts to any screen size
  • Performance Optimized - 60fps smooth animation using RequestAnimationFrame

๐ŸŽจ Modern Design

  • Dark/Light Theme Toggle - Switch between classic terminal and modern light mode
  • Glassmorphism Effects - Beautiful backdrop blur and transparency
  • Responsive Layout - Works perfectly on desktop, tablet, and mobile
  • Accessibility First - WCAG 2.1 AA compliant with keyboard navigation

๐Ÿš€ Live Demo

Try it live here

๐Ÿ“‹ Available Commands

Command Description Example
help Show all available commands help
about Personal introduction about
skills Technical skills & proficiency skills
projects Portfolio projects showcase projects
experience Work experience timeline experience
education Educational background education
contact Contact information & social links contact
resume Download CV/resume resume
clear Clear terminal output clear
whoami Current user info whoami
date Current date & time date
theme Toggle dark/light theme theme
matrix Control background animation matrix pause

โŒจ๏ธ Keyboard Shortcuts

Shortcut Action
โ†‘ / โ†“ Navigate command history
Tab Auto-complete commands
Ctrl + C Clear current input
Ctrl + L Clear terminal screen
Ctrl + Shift + C Copy terminal content
Ctrl + Shift + V Paste from clipboard

๐Ÿ› ๏ธ Tech Stack

  • Framework: Angular 20 with TypeScript
  • Styling: Tailwind CSS 4 with custom design system
  • Icons: Lucide Angular for beautiful icons
  • Animation: Canvas API for Matrix background
  • State Management: RxJS for reactive programming
  • Build Tool: Angular CLI with optimized bundling

๐Ÿ—๏ธ Architecture

src/
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ terminal/              # Main terminal interface
โ”‚   โ”œโ”€โ”€ typewriter/            # Typewriter effect component
โ”‚   โ””โ”€โ”€ matrix-background/     # Matrix rain animation
โ”œโ”€โ”€ services/
โ”‚   โ”œโ”€โ”€ terminal.service.ts    # Terminal state management
โ”‚   โ”œโ”€โ”€ commands.service.ts    # Command execution logic
โ”‚   โ””โ”€โ”€ matrix-control.service.ts # Matrix animation control
โ”œโ”€โ”€ models/
โ”‚   โ””โ”€โ”€ terminal.models.ts     # TypeScript interfaces
โ””โ”€โ”€ assets/
    โ””โ”€โ”€ David-Parys-C.V.pdf   # Resume file

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm 9+ or yarn

Installation

  1. Clone the repository

    git clone https://github.com/davidparys/angular-terminal-portfolio.git
    cd angular-terminal-portfolio
  2. Install dependencies

    npm install
  3. Start development server

    npm start
  4. Open your browser Navigate to http://localhost:4200

Build for Production

# Build optimized production bundle
npm run build:prod

# Serve production build locally
npx http-server dist/angular-terminal-portfolio/browser

๐ŸŽจ Customization

Personal Information

Update your details in src/services/commands.service.ts:

// Update contact information
private contactCommand(): CommandOutput {
  return {
    content: `
      <div class="contact-section">
        <h2>CONTACT</h2>
        <ul>
          <li><strong>Email:</strong> your-email@example.com</li>
          <li><strong>LinkedIn:</strong> linkedin.com/in/yourprofile</li>
          <li><strong>GitHub:</strong> github.com/yourusername</li>
        </ul>
      </div>
    `,
    type: 'info',
    html: true
  };
}

Matrix Animation Settings

Customize the Matrix background in src/components/matrix-background/matrix-background.component.ts:

// Available character sets
private charSets = {
  matrix: 'ใ‚ขใ‚คใ‚ฆใ‚จใ‚ชใ‚ซใ‚ญใ‚ฏใ‚ฑใ‚ณใ‚ตใ‚ทใ‚นใ‚ปใ‚ฝใ‚ฟใƒใƒ„ใƒ†ใƒˆ...',
  binary: '01',
  hex: '0123456789ABCDEF',
  symbols: '!@#$%^&*()_+-=[]{}|;:,.<>?'
};

// Available color presets
private colorPresets = {
  matrix: '#00ff41',
  red: '#ff0000',
  blue: '#0080ff',
  purple: '#8000ff'
};

Styling

Modify the design system in src/global_styles.css:

:root {
  /* Color palette */
  --terminal-green: #00ff41;
  --terminal-bg: #000000;
  --terminal-text: #ffffff;
  
  /* Typography */
  --font-mono: 'Fira Code', 'Consolas', monospace;
  
  /* Spacing */
  --spacing-xs: 0.25rem;
  --spacing-sm: 0.5rem;
  --spacing-md: 1rem;
}

Code Style

  • Follow Angular style guide
  • Use TypeScript strict mode
  • Write comprehensive tests
  • Maintain accessibility standards
  • Update documentation for API changes

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Matrix Rain Effect: Inspired by the iconic Matrix movie aesthetic
  • Terminal Design: Based on classic Unix terminal interfaces
  • Typewriter Effect: Enhanced user experience with realistic typing animation
  • Angular Community: For the excellent framework and ecosystem

๐Ÿ“ž Contact

David Parys - david@mountain-web-studio.com


โญ Star this repository if you found it helpful!

๐Ÿ”„ Feel free to fork and customize for your own portfolio!

About

A C.V. made with Angular

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published