Skip to content

KonuTech/konrad-borowiec

Repository files navigation

Konrad Borowiec - Welcome to my About Me web page

A modern, responsive portfolio website built as a frontend-only static web application using React, TypeScript, and Tailwind CSS. The site showcases professional skills, projects, books, and personal interests with a clean, interactive design.

✨ Features

  • 🎨 Modern Design: Clean, professional interface with dark mode support
  • πŸ“± Fully Responsive: Optimized for all screen sizes and devices
  • ⚑ Fast Performance: Static site generation with optimized assets
  • 🎭 Interactive Animations: Smooth transitions using Framer Motion
  • πŸ“– Dynamic Content: Projects showcase, reading list, and photo galleries
  • πŸ“§ Contact Form: Functional contact form with localStorage persistence
  • πŸŒ™ Dark Mode: System-aware theme switching
  • β™Ώ Accessible: Built with semantic HTML and ARIA standards

πŸš€ Live Demo

The portfolio is deployed on Azure Static Web Apps and automatically updates via GitHub Actions.

πŸ› οΈ Tech Stack

Frontend Framework

  • React 18 - Modern React with hooks and functional components
  • TypeScript - Type-safe development with enhanced tooling
  • Vite - Fast build tool and development server

Styling & UI

  • Tailwind CSS - Utility-first CSS framework
  • shadcn/ui - High-quality, accessible UI components
  • Radix UI - Unstyled, accessible component primitives
  • Framer Motion - Smooth animations and transitions

Routing & Forms

  • Wouter - Lightweight client-side routing
  • React Hook Form - Performant forms with easy validation
  • Zod - TypeScript-first schema validation

Development Tools

  • PostCSS - CSS processing with Autoprefixer
  • Class Variance Authority - Utility for creating component variants
  • Lucide React - Beautiful, customizable icons

πŸ“ Project Structure

β”œβ”€β”€ client/                    # React application source
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/       # React components organized by feature
β”‚   β”‚   β”‚   β”œβ”€β”€ about/       # About section (Timeline, TechStack)
β”‚   β”‚   β”‚   β”œβ”€β”€ books/       # Book collection and reading list
β”‚   β”‚   β”‚   β”œβ”€β”€ contact/     # Contact form and information
β”‚   β”‚   β”‚   β”œβ”€β”€ home/        # Hero section and landing page
β”‚   β”‚   β”‚   β”œβ”€β”€ interests/   # Photo galleries (motorcycle, cycling)
β”‚   β”‚   β”‚   β”œβ”€β”€ layout/      # Header, Footer, navigation
β”‚   β”‚   β”‚   β”œβ”€β”€ projects/    # Project showcase
β”‚   β”‚   β”‚   └── ui/          # Reusable UI components (shadcn/ui)
β”‚   β”‚   β”œβ”€β”€ context/         # React context (theme management)
β”‚   β”‚   β”œβ”€β”€ data/            # Static data and mock services
β”‚   β”‚   β”œβ”€β”€ hooks/           # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ lib/             # Utilities and configurations
β”‚   β”‚   └── pages/           # Page components
β”‚   └── index.html           # HTML template
β”œβ”€β”€ shared/                   # Shared TypeScript types
β”œβ”€β”€ assets/                   # Static assets (images, documents)
β”œβ”€β”€ .github/workflows/        # GitHub Actions for deployment
└── build/                    # Production build output (generated)

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

  1. Clone the repository

    git clone https://github.com/KonuTech/konrad-borowiec.git
    cd konrad-borowiec
  2. Install dependencies

    npm install
  3. Start development server

    npm run dev
  4. Open in browser

    http://localhost:5173
    

πŸ“œ Available Scripts

Command Description
npm run dev Start development server with hot reload
npm run build Build for production to build/ directory
npm run preview Preview production build locally
npm run check Run TypeScript type checking
npm run analyze Build and analyze bundle size

πŸ—οΈ Architecture

Frontend-Only Static Application

This portfolio is built as a pure frontend application with no backend dependencies. All data is managed through static data services that simulate API responses.

Static Data Layer

  • client/src/data/data.ts - Central data source for projects, books, and images
  • client/src/lib/staticApi.ts - API compatibility layer for seamless data access
  • localStorage - Contact form submissions persistence

Component Architecture

Components are organized by feature and follow React best practices:

  • Functional components with hooks
  • TypeScript for type safety
  • Props interfaces for clear contracts
  • Consistent styling with Tailwind CSS

State Management

  • React Context - Theme state (dark/light mode)
  • useState/useEffect - Local component state
  • React Hook Form - Form state management
  • localStorage - Client-side data persistence

🎨 Styling System

Design Tokens

Custom theme configuration via theme.json with consistent color palette:

  • Primary: #4A90E2 (Professional blue)
  • Gradient: Primary β†’ Light β†’ Accent variations
  • Typography: Nunito and Lato font families

Responsive Design

Mobile-first approach with Tailwind breakpoints:

  • sm: 640px and up
  • md: 768px and up
  • lg: 1024px and up
  • xl: 1280px and up

Dark Mode

System-aware dark mode with smooth transitions and optimized contrast ratios.

πŸ“¦ Deployment

Azure Static Web Apps (Primary)

Automatically deployed via GitHub Actions workflow:

  • Build Command: npm run build
  • Output Directory: build/
  • Workflow: .github/workflows/azure-static-web-apps-*.yml

Alternative Hosting

The static build works with any hosting platform:

  • Netlify: Drop build/ folder or connect GitHub
  • Vercel: Import GitHub repository
  • GitHub Pages: Upload build/ contents
  • AWS S3: Static website hosting

πŸ”§ Development

Adding New Content

Projects: Update projects array in client/src/data/data.ts

{
  id: 5,
  title: "New Project",
  description: "Project description",
  imageUrl: "/pictures/projects/new-project.png",
  technologies: ["React", "TypeScript"],
  featured: true
}

Books: Update books array in client/src/data/data.ts with reading status

{
  id: 10,
  title: "New Book",
  author: "Author Name",
  coverUrl: "/pictures/readings/book-cover.jpg",
  status: "read" | "to-read"
}

Images: Add files to assets/pictures/ and update image arrays

Customization

Theme Colors: Modify theme.json and tailwind.config.ts Components: Follow existing patterns in client/src/components/ Styling: Use Tailwind utility classes and custom CSS variables

πŸ§ͺ Testing Static Build

Test the production build locally with Docker:

# Build the application
npm run build

# Serve with nginx
docker run --rm -d -p 8080:80 \
  -v $(pwd)/build:/usr/share/nginx/html \
  --name portfolio-test nginx:alpine

# View at http://localhost:8080

πŸ“ˆ Performance

Optimizations

  • Tree Shaking: Unused code elimination
  • Code Splitting: Lazy loading with Vite
  • Asset Optimization: Compressed images and fonts
  • CSS Purging: Unused styles removed in production

Bundle Analysis

npm run analyze

Current bundle sizes (gzipped):

  • JavaScript: ~114 KB
  • CSS: ~13 KB
  • Total First Load: ~127 KB

πŸ›οΈ Architecture Evolution

This project was migrated from a full-stack Express.js application to a frontend-only static web app:

Migration Benefits

  • βœ… Simplified Deployment: No server management required
  • βœ… Better Performance: CDN-optimized static assets
  • βœ… Cost Effective: Free hosting on static platforms
  • βœ… Improved Security: No server-side attack vectors
  • βœ… Easy Scaling: Automatic CDN distribution

Backward Compatibility

  • Component interfaces preserved
  • Async data patterns maintained
  • Type definitions unchanged
  • Development workflow consistent

πŸ“„ License

Β© 2024 Konrad Borowiec. All rights reserved.

This project is not open source. The code and design are made public for showcase purposes only. No part of this project may be used, reproduced, or distributed without express written consent from the author.

Public Showcase: This repository demonstrates modern web development practices and serves as an example of clean, maintainable React TypeScript architecture.


Built with ❀️ using React, TypeScript, and modern web technologies.

About

About Me web app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •