An open API service indexing awesome lists of open source software.

https://github.com/kosmaster87/portfolio

Built with Angular, I used attention to detail and product mindset to deliver a bilingual, responsive SPA with polished UX and project storytelling.
https://github.com/kosmaster87/portfolio

angular animations archict contact-form developer-portfolio frontend responsive-design typescript

Last synced: about 1 month ago
JSON representation

Built with Angular, I used attention to detail and product mindset to deliver a bilingual, responsive SPA with polished UX and project storytelling.

Awesome Lists containing this project

README

          

# ๐Ÿ’ผ Personal Portfolio โ€“ Angular SPA

[![Angular](https://img.shields.io/badge/Angular-21.0-DD0031?style=for-the-badge&logo=angular&logoColor=white)](https://angular.io/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
[![SCSS](https://img.shields.io/badge/SCSS-CC6699?style=for-the-badge&logo=sass&logoColor=white)](https://sass-lang.com/)
[![Test Coverage](https://img.shields.io/badge/coverage-96.4%25-brightgreen?style=for-the-badge)](https://portfolio.dev2k.org/coverage/index.html)
[![Tests](https://img.shields.io/badge/tests-823%20passing-success?style=for-the-badge)](https://portfolio.dev2k.org/coverage/index.html)
[![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](LICENSE)

A fully responsive, modern portfolio website built as a Single Page Application (SPA) to showcase my skills, projects, and professional experience. Designed with a mobile-first approach and optimized for recruiters and hiring managers.

[๐ŸŒ Live Demo](https://portfolio.dev2k.org) | [๐Ÿ“Š Coverage Report](https://portfolio.dev2k.org/coverage/index.html) | [๐Ÿ“š API Docs](https://portfolio.dev2k.org/jsdoc/index.html)

---

## ๐Ÿš€ Live Demo

๐Ÿ”— **[portfolio.dev2k.org](https://portfolio.dev2k.org)**

---

## ๐Ÿ“ธ Preview

![Portfolio Screenshot](./src/assets/images/preview-portfolio.png)

---

## โœจ Features

- ๐ŸŽจ **Light/Dark/Auto Theme** โ€“ System preference detection with manual override
- ๐ŸŒ **i18n (EN/DE)** โ€“ Multi-language support with seamless switching
- ๐Ÿ“ฑ **Fully Responsive** โ€“ Optimized for mobile, tablet, and desktop
- โšก **PWA with Service Worker** โ€“ Offline support and app-like experience
- โ™ฟ **Accessible (ARIA)** โ€“ WCAG compliant with keyboard navigation
- ๐Ÿงช **96.4% Test Coverage** โ€“ 823 passing tests with comprehensive coverage
- ๐Ÿ“ง **Contact Form** โ€“ Integrated PHP backend with email notifications
- ๐Ÿ”’ **Security Features** โ€“ Rate limiting, XSS protection, CORS configuration
- ๐ŸŽฏ **SEO Friendly** โ€“ Semantic HTML and optimized meta tags
- ๐Ÿ“Š **Project Showcase** โ€“ Dynamic project cards with live demos

---

## ๐Ÿ› ๏ธ Tech Stack

**Frontend**

- Angular 21 (Standalone, Signals, Zoneless)
- TypeScript 5.7
- SCSS
- Service Worker (PWA)

**Testing & Quality**

- Jasmine + Karma (823 tests)
- 96.4% Code Coverage
- ESLint & Prettier

**Backend**

- PHP 8+ (Contact API)
- Apache with .htaccess

**DevOps**

- GitHub Actions (CI/CD)
- FTP Deployment to IONOS
- JSDoc (API Documentation)

---

## ๐Ÿ“ Project Structure

```
Portfolio/
โ”œโ”€โ”€ .github/
โ”‚ โ””โ”€โ”€ workflows/ # CI/CD workflows
โ”‚ โ””โ”€โ”€ deploy.yml # Build, test, and deploy pipeline
โ”œโ”€โ”€ public/
โ”‚ โ”œโ”€โ”€ api/
โ”‚ โ”‚ โ””โ”€โ”€ contact/ # PHP Contact Form API
โ”‚ โ”‚ โ”œโ”€โ”€ contact.php # Production endpoint (not in Git)
โ”‚ โ”‚ โ””โ”€โ”€ contact.example.php # Template file
โ”‚ โ”œโ”€โ”€ fonts/ # Overpass, Syne
โ”‚ โ”œโ”€โ”€ i18n/ # Translation files (de.json, en.json)
โ”‚ โ”œโ”€โ”€ theme-dark/ # Dark theme PWA icons
โ”‚ โ”œโ”€โ”€ theme-light/ # Light theme PWA icons
โ”‚ โ””โ”€โ”€ manifest-*.webmanifest # PWA manifests
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ app/
โ”‚ โ”‚ โ”œโ”€โ”€ core/ # Core services & models
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ interceptors/ # HTTP interceptors
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ models/ # TypeScript interfaces
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ services/ # Business logic (8 services)
โ”‚ โ”‚ โ”œโ”€โ”€ features/ # Feature modules
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ home/ # Home page sections
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ components/ # Hero, About, Skills, Projects, Contact
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ pages/ # HomePage
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ legal/ # Legal pages
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ pages/ # Imprint, Privacy, Sources
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ projects/ # Project components
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ components/ # ProjectCard
โ”‚ โ”‚ โ”œโ”€โ”€ layout/ # App layout
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ header/ # Navigation, Theme/Lang switcher
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ footer/ # Footer, Social links
โ”‚ โ”‚ โ”œโ”€โ”€ shared/ # Reusable components
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ components/ # Buttons, UI components
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ directives/ # IconHover, NoScroll
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ pages/ # NotFoundPage (404)
โ”‚ โ”‚ โ”œโ”€โ”€ app.ts # Root component
โ”‚ โ”‚ โ”œโ”€โ”€ app.config.ts # App configuration & providers
โ”‚ โ”‚ โ”œโ”€โ”€ app.routes.ts # Route definitions
โ”‚ โ”‚ โ””โ”€โ”€ app.spec.ts # Root component tests
โ”‚ โ”œโ”€โ”€ assets/
โ”‚ โ”‚ โ”œโ”€โ”€ images/ # Profile, project screenshots
โ”‚ โ”‚ โ””โ”€โ”€ screenshots/ # App previews
โ”‚ โ”œโ”€โ”€ environments/ # Environment configs
โ”‚ โ”œโ”€โ”€ styles/ # Global SCSS
โ”‚ โ”‚ โ”œโ”€โ”€ components/ # Component-specific styles
โ”‚ โ”‚ โ”œโ”€โ”€ _fonts.scss
โ”‚ โ”‚ โ”œโ”€โ”€ _layout.scss
โ”‚ โ”‚ โ”œโ”€โ”€ _mixins.scss
โ”‚ โ”‚ โ”œโ”€โ”€ _typography.scss
โ”‚ โ”‚ โ””โ”€โ”€ _variables.scss
โ”‚ โ”œโ”€โ”€ index.html # HTML entry point
โ”‚ โ”œโ”€โ”€ main.ts # Application bootstrap
โ”‚ โ””โ”€โ”€ styles.scss # Global styles entry
โ”œโ”€โ”€ angular.json # Angular workspace config
โ”œโ”€โ”€ ngsw-config.json # Service Worker config
โ”œโ”€โ”€ package.json # Dependencies & scripts
โ”œโ”€โ”€ tsconfig.json # TypeScript config
โ”œโ”€โ”€ typedoc.json # TypeDoc configuration
โ”œโ”€โ”€ docs/ # Documentation
โ”‚ โ”œโ”€โ”€ manual/ # Handgeschriebene Doku (in Git)
โ”‚ โ””โ”€โ”€ generated/ # Generierter API-Output (gitignored)
โ”‚ โ”œโ”€โ”€ typedoc/ # TypeDoc-Output (npm run docs:typedoc)
โ”‚ โ””โ”€โ”€ jsdoc/ # JSDoc-Output (npm run docs:jsdoc)
โ””โ”€โ”€ README.md # This file
```

---

## ๐Ÿ“ Deployment Structure

After deployment to **portfolio.dev2k.org**, the following structure is created:

```
portfolio.dev2k.org/
โ”œโ”€โ”€ index.html # Portfolio App
โ”œโ”€โ”€ assets/ # Images, fonts, i18n
โ”œโ”€โ”€ *.js, *.css # Compiled bundles
โ”œโ”€โ”€ .htaccess # Apache config (routing + security)
โ”œโ”€โ”€ coverage/ # ๐Ÿ“Š Test Coverage Report
โ”‚ โ””โ”€โ”€ index.html # https://portfolio.dev2k.org/coverage/index.html
โ””โ”€โ”€ jsdoc/ # ๐Ÿ“š API Documentation
โ””โ”€โ”€ index.html # https://portfolio.dev2k.org/jsdoc/index.html
```

**Live URLs:**

- ๐ŸŒ App: [portfolio.dev2k.org](https://portfolio.dev2k.org)
- ๐Ÿ“Š Coverage: [portfolio.dev2k.org/coverage](https://portfolio.dev2k.org/coverage/index.html)
- ๐Ÿ“š API Docs: [portfolio.dev2k.org/jsdoc](https://portfolio.dev2k.org/jsdoc/index.html)

---

## ๐Ÿ“– Documentation

Project documentation is currently centralized in this README and the live reports:

- [Coverage Report](https://portfolio.dev2k.org/coverage/index.html)
- [API Docs](https://portfolio.dev2k.org/jsdoc/index.html)

---

## ๐Ÿ‘ค Author

**Konstantin Aksenov**

- ๐ŸŒ Portfolio: [portfolio.dev2k.org](https://portfolio.dev2k.org)
- ๐Ÿ’ผ LinkedIn: [LinkedIn](https://www.linkedin.com/in/konstantin-aksenov-802b88190/)
- ๐Ÿ™ GitHub: [@KosMaster87](https://github.com/KosMaster87)
- ๐Ÿ“ง Email: konstantin.aksenov@dev2k.org

---