{"id":31381608,"url":"https://github.com/adelss04/my-portfolio","last_synced_at":"2026-05-06T03:34:44.998Z","repository":{"id":315502863,"uuid":"1059395320","full_name":"AdelSS04/my-portfolio","owner":"AdelSS04","description":"My personal portfolio website built with Angular SSR, .NET 9, Docker, and automated CI/CD.","archived":false,"fork":false,"pushed_at":"2025-09-27T14:34:39.000Z","size":5588,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-27T16:22:33.249Z","etag":null,"topics":["angular","ci-cd","docker","dotnet-core","nginx-proxy","ssl","vps"],"latest_commit_sha":null,"homepage":"https://portfolio.adellajil.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdelSS04.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-18T11:43:26.000Z","updated_at":"2025-09-27T14:34:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a42bd11-34f8-4236-88ab-a97ce138e5ff","html_url":"https://github.com/AdelSS04/my-portfolio","commit_stats":null,"previous_names":["adelss04/my-portfolio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AdelSS04/my-portfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelSS04%2Fmy-portfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelSS04%2Fmy-portfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelSS04%2Fmy-portfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelSS04%2Fmy-portfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdelSS04","download_url":"https://codeload.github.com/AdelSS04/my-portfolio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelSS04%2Fmy-portfolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017235,"owners_count":26086015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","ci-cd","docker","dotnet-core","nginx-proxy","ssl","vps"],"created_at":"2025-09-28T10:36:14.584Z","updated_at":"2025-10-13T23:12:20.077Z","avatar_url":"https://github.com/AdelSS04.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Portfolio 🚀\n\n_A cutting-edge, production-grade full-stack portfolio web application featuring an Angular 18+ SSR frontend with Zoneless Change Detection and Signals Architecture, paired with a .NET 9 backend, containerized with Docker and deployed via Nginx with Let’s Encrypt SSL support._\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Project Structure](#project-structure)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n- [Development](#development)\n- [Production Deployment](#production-deployment)\n- [Theme System](#theme-system)\n- [Testing](#testing)\n- [Contributing](#contributing)\n- [License](#license)\n- [Links](#links)\n\n---\n\n## Features\n\n- 🚀 **Angular 18+ Zoneless** Change Detection via `provideZonelessChangeDetection()`\n- 🎯 **Signals Architecture** (input, computed, effects)\n- 🔄 **New Control-Flow Syntax** (`@if/@for` replacing `*ngIf/*ngFor`)\n- 🎨 **Dynamic Theme System** using CSS variables + signals\n- 🧩 **Standalone Components** for tree-shaking\n- 📱 **SSR-Optimized** for SEO \u0026 performance\n- ♿️ **Accessibility First** (ARIA, keyboard nav)\n- 🐳 **Docker Compose** multi-container orchestration\n- 🌐 **Nginx Reverse Proxy** with Let’s Encrypt SSL\n- 🤖 **GitHub Actions CI/CD**\n- 🔋 **Smart Change Detection** rebuilds only what changed\n\n---\n\n## Project Structure\n\n```text\nmy-portfolio/\n├── docker-compose.yml\n├── docker-compose.prod.yml\n├── nginx.conf\n├── renew-certs.sh\n├── README.md\n└── src/\n    ├── BE/\n    │   ├── Controllers/\n    │   ├── Program.cs\n    │   ├── appsettings.json\n    │   └── Dockerfile\n    └── UI/\n        ├── src/\n        ├── Dockerfile\n        └── package.json\n.github/\n└── workflows/\n```\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 20+\n- .NET 9 SDK\n- Docker \u0026 Docker Compose\n- Git\n\n### Installation\n\n```bash\ngit clone https://github.com/AdelSS04/my-portfolio.git\ncd my-portfolio\n```\n\n#### Frontend Setup\n\n```bash\ncd src/UI\nnpm install\n```\n\n#### Backend Setup\n\n```bash\ncd src/BE\ndotnet restore\n```\n\n---\n\n## Development\n\n### Run Locally\n\nOpen **two** terminals:\n\n#### Frontend Development\n\n```bash\ncd src/UI\nnpm run dev\n```\n\n#### Backend Development\n\n```bash\ncd src/BE\ndotnet run\n```\n\nOr use Docker all-in-one:\n\n```bash\ndocker-compose up --build\n```\n\n---\n\n## Production Deployment\n\n```bash\ndocker-compose -f docker-compose.prod.yml up -d --build\n```\n\n---\n\n## Theme System\n\nSupported themes (switch at runtime via the UI):\n\n- **Ocean Dark** (default)\n- **Sunset**\n- **Forest**\n- **Royal**\n- **Monochrome**\n\n### Renew SSL certificates\n\n```bash\n./renew-certs.sh\ndocker-compose restart nginx\n```\n\n---\n\n## Testing\n\n### Frontend Testing\n\n```bash\ncd src/UI\nnpm run test\nnpm run e2e\nnpm run lighthouse\n```\n\n### Backend Testing\n\n```bash\ncd src/BE\ndotnet test\n```\n\n---\n\n## Contributing\n\n1. Fork the repo  \n2. Create feature branch: `git checkout -b feature-name`  \n3. Commit your changes: `git commit -m \"Add feature\"`  \n4. Push branch: `git push origin feature-name`  \n5. Open a Pull Request\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n\n---\n\n## Links\n\n- **Live Demo**: [https://portfolio.adellajil.com](https://portfolio.adellajil.com)\n- **Blog**: [https://blog.adellajil.com](https://blog.adellajil.com)\n- **LinkedIn**: [Adel Lajil](https://linkedin.com/in/adel-lajil)\n- **GitHub**: [@adellajil](https://github.com/adellajil)\n\n---\n\n**Built with ❤️ using Angular 18+ Signals \u0026 .NET 9**  \n**Author:** [Adel Lajil](https://github.com/AdelSS04)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelss04%2Fmy-portfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadelss04%2Fmy-portfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelss04%2Fmy-portfolio/lists"}