{"id":41922707,"url":"https://github.com/andrejkoller/personal","last_synced_at":"2026-01-25T17:03:44.580Z","repository":{"id":327228356,"uuid":"977898121","full_name":"andrejkoller/personal","owner":"andrejkoller","description":"Multilingual personal portfolio website built with Next.js 14+, featuring responsive design, i18n support (EN/DE/RU), and a functional contact form with SendGrid integration.","archived":false,"fork":false,"pushed_at":"2025-12-02T12:59:56.000Z","size":103675,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-05T10:25:16.436Z","etag":null,"topics":["css3","html5","javascript","nextjs","react"],"latest_commit_sha":null,"homepage":"https://www.andrejkoller.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrejkoller.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-05-05T06:35:16.000Z","updated_at":"2025-12-02T12:59:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrejkoller/personal","commit_stats":null,"previous_names":["andrejkoller/personal"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/andrejkoller/personal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejkoller%2Fpersonal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejkoller%2Fpersonal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejkoller%2Fpersonal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejkoller%2Fpersonal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrejkoller","download_url":"https://codeload.github.com/andrejkoller/personal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejkoller%2Fpersonal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28755561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T16:32:25.380Z","status":"ssl_error","status_checked_at":"2026-01-25T16:32:09.189Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["css3","html5","javascript","nextjs","react"],"created_at":"2026-01-25T17:03:44.469Z","updated_at":"2026-01-25T17:03:44.570Z","avatar_url":"https://github.com/andrejkoller.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Short description\n\nA modern, multilingual personal portfolio website built with Next.js 16 and the App Router. Features a responsive design, internationalization support, and a functional contact form with email notifications.\n\n## ✨ Features\n\n- Multilingual Support: English, German and Russian language options\n- Responsive Design: Optimized for desktop, tablet, and mobile devices\n- Contact Form: Functional contact form with email validation and SendGrid integration\n- Modern Tech Stack: Built with Next.js 16, React 19, and CSS Modules\n- International Phone Validation: Supports phone number validation for multiple countries\n- Dynamic Routing: Language-based routing with Next.js App Router\n\n## 🛠️ Technologies Used\n\n- Framework: Next.js 16 (App Router)\n- Frontend: React 19, CSS Modules\n- Email Service: SendGrid with Nodemailer\n- Validation: libphonenumber-js for international phone numbers\n- Image Optimization: Next.js Image component\n- Typography: Cormorant, Rubik and Gloock font family\n\n## 📦 Installation\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/andrejkoller/personal.git\ncd personal\n```\n\n2. Install dependencies:\n\n```bash\nnpm install\n```\n\n3. Run the development server:\n\n```bash\nnpm run dev\n```\n\n4. Navigate to `http://localhost:3000/`\n\n## 📸 Screenshots\n\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 1\" src=\"https://github.com/user-attachments/assets/f567b0db-172f-4038-85e1-13f7336cfb43\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 2\" src=\"https://github.com/user-attachments/assets/cfbd549c-b1d5-498f-acc3-b426e0c9d41d\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 3\" src=\"https://github.com/user-attachments/assets/bac16e8f-89ef-4aea-a943-471b5a023b4c\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 4\" src=\"https://github.com/user-attachments/assets/a81e2eb1-69e8-4e4b-b950-f2b9aff002b8\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 5\" src=\"https://github.com/user-attachments/assets/327f36ee-94b1-4b4e-9d1a-7e4144522410\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 6\" src=\"https://github.com/user-attachments/assets/01aa0351-7e2e-4fb7-ac25-314237365746\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 7\" src=\"https://github.com/user-attachments/assets/7fd949b1-5e8d-41bd-9cfd-d74b75fa2881\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 8\" src=\"https://github.com/user-attachments/assets/1398f1ff-bfd0-4a12-9028-60c974cfd835\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 9\" src=\"https://github.com/user-attachments/assets/97895cac-436a-4d3d-a126-d51edaef8ae3\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 10\" src=\"https://github.com/user-attachments/assets/fb38a081-c3a4-4ff2-aeb2-f32ba07c4f0f\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 11\" src=\"https://github.com/user-attachments/assets/7f201765-c69c-4100-909b-54c41d348281\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 12\" src=\"https://github.com/user-attachments/assets/4f93ac39-9564-426a-9fb8-99d5f13a8279\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 13\" src=\"https://github.com/user-attachments/assets/9903b715-3385-412f-86d8-98170d10d606\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 14\" src=\"https://github.com/user-attachments/assets/755701b2-604f-4a4e-aaa0-68a72b7efc60\" /\u003e\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 15\" src=\"https://github.com/user-attachments/assets/be9188f3-78e9-42f9-9ee1-43adecb5da01\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejkoller%2Fpersonal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrejkoller%2Fpersonal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejkoller%2Fpersonal/lists"}