Alibrown commited on
Commit
3807b88
·
verified ·
1 Parent(s): b6326d4

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +416 -517
index.html CHANGED
@@ -1,529 +1,428 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Ali Brown | Hugging Face Portfolio</title>
7
- <script src="https://cdn.tailwindcss.com"></script>
8
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
- <script>
10
- tailwind.config = {
11
- theme: {
12
- extend: {
13
- colors: {
14
- 'hf-purple': '#FFD700',
15
- 'hf-dark': '#0F172A',
16
- 'hf-light': '#F8FAFC',
17
- 'hf-accent': '#7C3AED',
18
- },
19
- fontFamily: {
20
- sans: ['Inter', 'sans-serif'],
21
- },
22
- animation: {
23
- 'float': 'float 6s ease-in-out infinite',
24
- 'gradient': 'gradient 8s ease infinite',
25
- },
26
- keyframes: {
27
- float: {
28
- '0%, 100%': { transform: 'translateY(0)' },
29
- '50%': { transform: 'translateY(-10px)' },
30
- },
31
- gradient: {
32
- '0%, 100%': { 'background-position': '0% 50%' },
33
- '50%': { 'background-position': '100% 50%' },
34
- }
35
- }
36
- }
37
- }
38
- }
39
- </script>
40
- <style>
41
- @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
42
-
43
- body {
44
- font-family: 'Inter', sans-serif;
45
- background-color: #0F172A;
46
- color: #F8FAFC;
47
- }
48
-
49
- .gradient-bg {
50
- background: linear-gradient(-45deg, #0F172A, #1E293B, #334155, #475569);
51
- background-size: 400% 400%;
52
- animation: gradient 15s ease infinite;
53
- }
54
-
55
- .card-hover {
56
- transition: all 0.3s ease;
57
- }
58
-
59
- .card-hover:hover {
60
- transform: translateY(-5px);
61
- box-shadow: 0 10px 25px rgba(124, 58, 237, 0.3);
62
- }
63
-
64
- .social-icon {
65
- transition: all 0.3s ease;
66
- }
67
-
68
- .social-icon:hover {
69
- transform: scale(1.2);
70
- color: #FFD700;
71
- }
72
-
73
- .nav-link {
74
- position: relative;
75
- }
76
-
77
- .nav-link::after {
78
- content: '';
79
- position: absolute;
80
- width: 0;
81
- height: 2px;
82
- bottom: -2px;
83
- left: 0;
84
- background-color: #FFD700;
85
- transition: width 0.3s ease;
86
- }
87
-
88
- .nav-link:hover::after {
89
- width: 100%;
90
- }
91
-
92
- .app-card {
93
- background: rgba(30, 41, 59, 0.7);
94
- backdrop-filter: blur(10px);
95
- border: 1px solid rgba(255, 255, 255, 0.1);
96
- }
97
- </style>
98
  </head>
99
  <body class="min-h-screen gradient-bg">
100
- <nav class="bg-hf-dark/80 backdrop-blur-md border-b border-gray-800 fixed w-full z-50">
101
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
102
- <div class="flex items-center justify-between h-16">
103
- <div class="flex items-center">
104
- <div class="flex-shrink-0">
105
- <span class="text-hf-purple font-bold text-xl">Ali Brown</span>
106
- </div>
107
- <div class="hidden md:block">
108
- <div class="ml-10 flex items-baseline space-x-4">
109
- <a href="#home" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Home</a>
110
- <a href="#projects" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Projects</a>
111
- <a href="#about" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">About</a>
112
- <a href="#contact" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Contact</a>
113
- </div>
114
- </div>
115
- </div>
116
- <div class="hidden md:block">
117
- <div class="ml-4 flex items-center md:ml-6">
118
- <a href="https://huggingface.co/AliBrown" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-4 py-2 rounded-md text-sm font-medium flex items-center">
119
- <i class="fas fa-robot mr-2"></i> Visit Hugging Face
120
- </a>
121
- </div>
122
- </div>
123
- <div class="-mr-2 flex md:hidden">
124
- <button type="button" id="mobile-menu-button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none">
125
- <span class="sr-only">Open main menu</span>
126
- <i class="fas fa-bars"></i>
127
- </button>
128
- </div>
129
- </div>
130
- </div>
131
-
132
- <div class="hidden md:hidden" id="mobile-menu">
133
- <div class="px-2 pt-2 pb-3 space-y-1 sm:px-3">
134
- <a href="#home" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Home</a>
135
- <a href="#projects" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Projects</a>
136
- <a href="#about" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">About</a>
137
- <a href="#contact" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Contact</a>
138
- <a href="https://huggingface.co/AliBrown" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark block px-3 py-2 rounded-md text-base font-medium flex items-center justify-center">
139
- <i class="fas fa-robot mr-2"></i> Visit Hugging Face
140
- </a>
141
- </div>
142
- </div>
143
- </nav>
144
 
145
- <section id="home" class="pt-32 pb-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
146
- <div class="flex flex-col md:flex-row items-center justify-between">
147
- <div class="md:w-1/2 mb-10 md:mb-0">
148
- <h1 class="text-4xl md:text-6xl font-bold mb-6">
149
- <span class="text-hf-purple">Hello, I'm Ali Brown (on HF)</span>
150
- <span class="text-white block mt-2">Full-Stack Developer & Security Nerd</span>
151
- </h1>
152
- <p class="text-lg text-gray-300 mb-8">
153
- A developer and security enthusiast based in Berlin. I love building solid web applications, hardening servers, and bringing ideas to life with a touch of AI.
154
- </p>
155
- <div class="flex space-x-4">
156
- <a href="#projects" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-6 py-3 rounded-md font-medium">
157
- Explore My Projects
158
- </a>
159
- <a href="#contact" class="border border-hf-purple text-hf-purple hover:bg-hf-purple hover:text-hf-dark px-6 py-3 rounded-md font-medium">
160
- Contact Me
161
- </a>
162
- </div>
163
- </div>
164
- <div class="md:w-1/2 flex justify-center">
165
- <div class="relative w-64 h-64 md:w-80 md:h-80">
166
- <div class="absolute inset-0 bg-hf-purple/20 rounded-full blur-xl animate-pulse"></div>
167
- <div class="relative w-full h-full flex items-center justify-center">
168
- <img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" alt="Hugging Face Logo" class="w-full h-full object-contain animate-float">
169
- </div>
170
- </div>
171
- </div>
172
- </div>
173
- </section>
174
 
175
- <section id="projects" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
176
- <div class="text-center mb-16">
177
- <h2 class="text-3xl md:text-4xl font-bold mb-4">
178
- <span class="text-hf-purple">My</span>
179
- <span class="text-white">Projects</span>
180
- </h2>
181
- <p class="text-gray-400 max-w-2xl mx-auto">
182
- Here's a selection of my work, from AI-powered tools to secure server architectures.
183
- </p>
184
- </div>
185
-
186
- <div class="relative">
187
- <div class="overflow-hidden">
188
- <div id="carousel" class="flex transition-transform duration-500 ease-in-out -ml-4">
189
- <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
190
- <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
191
- <div class="flex items-center mb-4">
192
- <div class="bg-hf-purple/20 p-3 rounded-lg">
193
- <i class="fas fa-brain text-hf-purple text-2xl"></i>
194
- </div>
195
- <h3 class="text-xl font-semibold ml-4">AI-Powered Portal</h3>
196
- </div>
197
- <p class="text-gray-400 mb-6 flex-grow">
198
- An informational portal for Germany's youth services, enhanced with an AI component to make complex data easily accessible.
199
- </p>
200
- <div class="flex justify-between items-center mt-auto">
201
- <span class="text-sm text-hf-purple">AI • Full-Stack • Data</span>
202
- <a href="https://jugendamt-deutschland.de" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
203
- Visit <i class="fas fa-external-link-alt ml-2"></i>
204
- </a>
205
- </div>
206
- </div>
207
- </div>
208
-
209
- <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
210
- <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
211
- <div class="flex items-center mb-4">
212
- <div class="bg-hf-purple/20 p-3 rounded-lg">
213
- <i class="fas fa-shield-halved text-hf-purple text-2xl"></i>
214
- </div>
215
- <h3 class="text-xl font-semibold ml-4">Secure Architectures</h3>
216
- </div>
217
- <p class="text-gray-400 mb-6 flex-grow">
218
- My passion project: experimenting with and hardening server configurations to build secure and resilient infrastructure from the ground up.
219
- </p>
220
- <div class="flex justify-between items-center mt-auto">
221
- <span class="text-sm text-hf-purple">Security • Servers • DevOps</span>
222
- <a href="https://github.com/volkansah" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
223
- Explore <i class="fas fa-external-link-alt ml-2"></i>
224
- </a>
225
- </div>
226
- </div>
227
- </div>
228
-
229
- <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
230
- <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
231
- <div class="flex items-center mb-4">
232
- <div class="bg-hf-purple/20 p-3 rounded-lg">
233
- <i class="fas fa-globe-europe text-hf-purple text-2xl"></i>
234
- </div>
235
- <h3 class="text-xl font-semibold ml-4">Custom Web Solutions</h3>
236
- </div>
237
- <p class="text-gray-400 mb-6 flex-grow">
238
- Various websites I've built for fun and for clients, focusing on clean code, performance, and great user experience.
239
- </p>
240
- <div class="flex justify-between items-center mt-auto">
241
- <span class="text-sm text-hf-purple">Web Dev • UI/UX</span>
242
- <a href="https://volkansah.github.io/" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
243
- See More <i class="fas fa-external-link-alt ml-2"></i>
244
- </a>
245
- </div>
246
- </div>
247
- </div>
248
- </div>
249
- </div>
250
 
251
- <button id="prevBtn" class="absolute left-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -ml-2 hidden sm:block">
252
- <i class="fas fa-chevron-left"></i>
253
- </button>
254
- <button id="nextBtn" class="absolute right-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -mr-2 hidden sm:block">
255
- <i class="fas fa-chevron-right"></i>
256
- </button>
257
- </div>
258
- </section>
259
 
260
- <section id="about" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
261
- <div class="flex flex-col lg:flex-row items-center">
262
- <div class="lg:w-1/2 mb-10 lg:mb-0 lg:pr-10">
263
- <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8">
264
- <h2 class="text-3xl font-bold mb-6">
265
- <span class="text-hf-purple">About</span>
266
- <span class="text-white">Me</span>
267
- </h2>
268
- <p class="text-gray-400 mb-6">
269
- As a developer with a deep interest in cybersecurity, I focus on building applications that are not just functional, but also secure and robust. My journey began with web development and quickly grew into a passion for securing the entire stack.
270
- </p>
271
- <p class="text-gray-400 mb-6">
272
- I'm driven by curiosity, whether it's exploring new ways to harden a Linux server or integrating AI models from Hugging Face into my work to solve real-world problems.
273
- </p>
274
- <div class="flex flex-wrap gap-4 mb-6">
275
- <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Full-Stack Dev</span>
276
- <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Cybersecurity</span>
277
- <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Server Hardening</span>
278
- <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">JavaScript</span>
279
- <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Linux</span>
280
- <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">AI Integration</span>
281
- </div>
282
- <a href="https://github.com/volkansah" target="_blank" rel="noopener noreferrer" class="inline-flex items-center text-hf-purple hover:text-yellow-500 font-medium">
283
- <i class="fab fa-github mr-2"></i> Visit my GitHub
284
- </a>
285
- </div>
286
- </div>
287
- <div class="lg:w-1/2 lg:pl-10">
288
- <div class="grid grid-cols-2 gap-4">
289
- <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
290
- <div class="text-hf-purple text-4xl mb-4">
291
- <i class="fas fa-code"></i>
292
- </div>
293
- <h3 class="text-xl font-semibold mb-2">Open Source</h3>
294
- <p class="text-gray-400">
295
- I actively contribute to and maintain projects on my GitHub profile.
296
- </p>
297
- </div>
298
- <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
299
- <div class="text-hf-purple text-4xl mb-4">
300
- <i class="fas fa-server"></i>
301
- </div>
302
- <h3 class="text-xl font-semibold mb-2">Infrastructure</h3>
303
- <p class="text-gray-400">
304
- Hands-on experience with server setup, maintenance, and security protocols.
305
- </p>
306
- </div>
307
- <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
308
- <div class="text-hf-purple text-4xl mb-4">
309
- <i class="fas fa-user-secret"></i>
310
- </div>
311
- <h3 class="text-xl font-semibold mb-2">Security Nerd</h3>
312
- <p class="text-gray-400">
313
- Passionate about hardening systems and building secure digital environments.
314
- </p>
315
- </div>
316
- <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
317
- <div class="text-hf-purple text-4xl mb-4">
318
- <i class="fas fa-rocket"></i>
319
- </div>
320
- <h3 class="text-xl font-semibold mb-2">Web Platforms</h3>
321
- <p class="text-gray-400">
322
- Built and launched several web projects, including an AI-powered portal.
323
- </p>
324
- </div>
325
- </div>
326
- </div>
327
- </div>
328
- </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
 
330
- <section id="contact" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
331
- <div class="text-center mb-16">
332
- <h2 class="text-3xl md:text-4xl font-bold mb-4">
333
- <span class="text-hf-purple">Get</span>
334
- <span class="text-white">In Touch</span>
335
- </h2>
336
- <p class="text-gray-400 max-w-2xl mx-auto">
337
- Have a project in mind or want to collaborate? Feel free to reach out!
338
- </p>
339
- </div>
340
-
341
- <div class="flex flex-col lg:flex-row gap-10">
342
- <div class="lg:w-1/2">
343
- <form action="#" method="POST" class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8">
344
- <div class="mb-6">
345
- <label for="name" class="block text-gray-300 mb-2">Your Name</label>
346
- <input type="text" id="name" name="name" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple">
347
- </div>
348
- <div class="mb-6">
349
- <label for="email" class="block text-gray-300 mb-2">Email Address</label>
350
- <input type="email" id="email" name="email" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple">
351
- </div>
352
- <div class="mb-6">
353
- <label for="subject" class="block text-gray-300 mb-2">Subject</label>
354
- <input type="text" id="subject" name="subject" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple">
355
- </div>
356
- <div class="mb-6">
357
- <label for="message" class="block text-gray-300 mb-2">Message</label>
358
- <textarea id="message" name="message" rows="5" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple"></textarea>
359
- </div>
360
- <button type="submit" class="w-full bg-hf-purple hover:bg-yellow-500 text-hf-dark font-medium py-3 px-6 rounded-lg transition duration-300">
361
- Send Message
362
- </button>
363
- </form>
364
- </div>
365
-
366
- <div class="lg:w-1/2">
367
- <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8 h-full">
368
- <h3 class="text-2xl font-semibold mb-6">Contact Information</h3>
369
-
370
- <div class="space-y-6">
371
- <div class="flex items-start">
372
- <div class="text-hf-purple text-xl mr-4 mt-1">
373
- <i class="fas fa-envelope"></i>
374
- </div>
375
- <div>
376
- <h4 class="text-gray-300 font-medium mb-1">Email</h4>
377
- <a href="mailto:[email protected]" class="text-gray-400 hover:text-hf-purple">[email protected]</a>
378
- </div>
379
- </div>
380
-
381
- <div class="flex items-start">
382
- <div class="text-hf-purple text-xl mr-4 mt-1">
383
- <i class="fas fa-robot"></i>
384
- </div>
385
- <div>
386
- <h4 class="text-gray-300 font-medium mb-1">Hugging Face Profile</h4>
387
- <a href="https://huggingface.co/AliBrown" target="_blank" rel="noopener noreferrer" class="text-gray-400 hover:text-hf-purple">huggingface.co/AliBrown</a>
388
- </div>
389
- </div>
390
-
391
- <div class="flex items-start">
392
- <div class="text-hf-purple text-xl mr-4 mt-1">
393
- <i class="fas fa-map-marker-alt"></i>
394
- </div>
395
- <div>
396
- <h4 class="text-gray-300 font-medium mb-1">Location</h4>
397
- <p class="text-gray-400">Berlin, Germany</p>
398
- </div>
399
- </div>
400
- </div>
401
-
402
- <div class="mt-10">
403
- <h4 class="text-gray-300 font-medium mb-4">Follow Me</h4>
404
- <div class="flex space-x-6">
405
- <a href="https://github.com/volkansah" target="_blank" rel="noopener noreferrer" class="social-icon text-gray-400 hover:text-hf-purple text-2xl">
406
- <i class="fab fa-github"></i>
407
- </a>
408
- <a href="https://volkansah.github.io/" target="_blank" rel="noopener noreferrer" class="social-icon text-gray-400 hover:text-hf-purple text-2xl">
409
- <i class="fas fa-globe"></i>
410
- </a>
411
- <a href="https://huggingface.co/AliBrown" target="_blank" rel="noopener noreferrer" class="social-icon text-gray-400 hover:text-hf-purple text-2xl">
412
- <i class="fas fa-robot"></i>
413
- </a>
414
- </div>
415
- </div>
416
- </div>
417
- </div>
418
- </div>
419
- </section>
420
-
421
- <footer class="bg-hf-dark/50 border-t border-gray-800 py-10">
422
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
423
- <div class="flex flex-col md:flex-row justify-between items-center">
424
- <div class="mb-6 md:mb-0">
425
- <span class="text-hf-purple font-bold text-xl">Ali Brown Portfolio</span>
426
- <p class="text-gray-400 mt-2">Building the future, securely.</p>
427
- </div>
428
- <div class="flex flex-wrap justify-center gap-6">
429
- <a href="#home" class="text-gray-400 hover:text-hf-purple">Home</a>
430
- <a href="#projects" class="text-gray-400 hover:text-hf-purple">Projects</a>
431
- <a href="#about" class="text-gray-400 hover:text-hf-purple">About</a>
432
- <a href="#contact" class="text-gray-400 hover:text-hf-purple">Contact</a>
433
- </div>
434
- </div>
435
- <div class="mt-8 pt-8 border-t border-gray-800 text-center text-gray-500 text-sm">
436
- <p>&copy; 2025 Ali Brown Portfolio. All rights reserved.</p>
437
- </div>
438
- </div>
439
- </footer>
440
-
441
- <script>
442
- document.addEventListener('DOMContentLoaded', function () {
443
- // Mobile menu toggle
444
- const mobileMenuButton = document.getElementById('mobile-menu-button');
445
- const mobileMenu = document.getElementById('mobile-menu');
446
- if (mobileMenuButton) {
447
- mobileMenuButton.addEventListener('click', () => {
448
- mobileMenu.classList.toggle('hidden');
449
- });
450
- }
451
-
452
- // Smooth scrolling for navigation links
453
- document.querySelectorAll('a[href^="#"]').forEach(anchor => {
454
- anchor.addEventListener('click', function (e) {
455
- e.preventDefault();
456
- const targetId = this.getAttribute('href');
457
- const targetElement = document.querySelector(targetId);
458
-
459
- if (targetElement) {
460
- window.scrollTo({
461
- top: targetElement.offsetTop - 64, // Adjust for fixed nav height
462
- behavior: 'smooth'
463
- });
464
-
465
- if (!mobileMenu.classList.contains('hidden')) {
466
- mobileMenu.classList.add('hidden');
467
- }
468
- }
469
- });
470
- });
471
-
472
- // Carousel functionality
473
- const carousel = document.getElementById('carousel');
474
- const prevBtn = document.getElementById('prevBtn');
475
- const nextBtn = document.getElementById('nextBtn');
476
-
477
- if (carousel) {
478
- const items = carousel.querySelectorAll('.carousel-item');
479
- const itemCount = items.length;
480
- let currentIndex = 0;
481
-
482
- function getVisibleItems() {
483
- if (window.innerWidth >= 1024) return 3; // lg
484
- if (window.innerWidth >= 768) return 2; // md
485
- return 1; // sm
486
- }
487
-
488
- function updateCarousel() {
489
- const itemWidth = items[0].getBoundingClientRect().width;
490
- const containerGap = parseInt(getComputedStyle(items[0]).paddingRight) * 2;
491
- const totalWidth = itemWidth + containerGap;
492
-
493
- carousel.style.transform = `translateX(-${currentIndex * totalWidth}px)`;
494
-
495
- // Button visibility
496
- const visibleItems = getVisibleItems();
497
- prevBtn.disabled = currentIndex === 0;
498
- nextBtn.disabled = currentIndex >= itemCount - visibleItems;
499
-
500
- prevBtn.style.opacity = prevBtn.disabled ? '0.4' : '1';
501
- nextBtn.style.opacity = nextBtn.disabled ? '0.4' : '1';
502
- }
503
-
504
- prevBtn.addEventListener('click', () => {
505
- if (currentIndex > 0) {
506
- currentIndex--;
507
- updateCarousel();
508
- }
509
- });
510
-
511
- nextBtn.addEventListener('click', () => {
512
- if (currentIndex < itemCount - getVisibleItems()) {
513
- currentIndex++;
514
- updateCarousel();
515
- }
516
- });
517
-
518
- window.addEventListener('resize', () => {
519
- // Reset to avoid issues on resize
520
- currentIndex = 0;
521
- updateCarousel();
522
- });
523
-
524
- updateCarousel(); // Initial call
525
- }
526
- });
527
- </script>
528
  </body>
529
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
+     <meta charset="UTF-8">
5
+     <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+     <title>Max Mustermann | Portfolio</title>
7
+     <script src="https://cdn.tailwindcss.com"></script>
8
+     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+     <script>
10
+         tailwind.config = {
11
+             theme: {
12
+                 extend: {
13
+                     colors: {
14
+                         'hf-purple': '#FFD700',
15
+                         'hf-dark': '#0F172A',
16
+                         'hf-light': '#F8FAFC',
17
+                         'hf-accent': '#7C3AED',
18
+                     },
19
+                     fontFamily: {
20
+                         sans: ['Inter', 'sans-serif'],
21
+                     },
22
+                     animation: {
23
+                         'float': 'float 6s ease-in-out infinite',
24
+                         'gradient': 'gradient 8s ease infinite',
25
+                     },
26
+                     keyframes: {
27
+                         float: {
28
+                             '0%, 100%': { transform: 'translateY(0)' },
29
+                             '50%': { transform: 'translateY(-10px)' },
30
+                         },
31
+                         gradient: {
32
+                             '0%, 100%': { 'background-position': '0% 50%' },
33
+                             '50%': { 'background-position': '100% 50%' },
34
+                         }
35
+                     }
36
+                 }
37
+             }
38
+         }
39
+     </script>
40
+     <style>
41
+         @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
42
+        
43
+         body {
44
+             font-family: 'Inter', sans-serif;
45
+             background-color: #0F172A;
46
+             color: #F8FAFC;
47
+         }
48
+        
49
+         .gradient-bg {
50
+             background: linear-gradient(-45deg, #0F172A, #1E293B, #334155, #475569);
51
+             background-size: 400% 400%;
52
+             animation: gradient 15s ease infinite;
53
+         }
54
+        
55
+         .card-hover {
56
+             transition: all 0.3s ease;
57
+         }
58
+        
59
+         .card-hover:hover {
60
+             transform: translateY(-5px);
61
+             box-shadow: 0 10px 25px rgba(124, 58, 237, 0.3);
62
+         }
63
+        
64
+         .social-icon {
65
+             transition: all 0.3s ease;
66
+         }
67
+        
68
+         .social-icon:hover {
69
+             transform: scale(1.2);
70
+             color: #FFD700;
71
+         }
72
+        
73
+         .nav-link {
74
+             position: relative;
75
+         }
76
+        
77
+         .nav-link::after {
78
+             content: '';
79
+             position: absolute;
80
+             width: 0;
81
+             height: 2px;
82
+             bottom: -2px;
83
+             left: 0;
84
+             background-color: #FFD700;
85
+             transition: width 0.3s ease;
86
+         }
87
+        
88
+         .nav-link:hover::after {
89
+             width: 100%;
90
+         }
91
+        
92
+         .app-card {
93
+             background: rgba(30, 41, 59, 0.7);
94
+             backdrop-filter: blur(10px);
95
+             border: 1px solid rgba(255, 255, 255, 0.1);
96
+         }
97
+     </style>
98
  </head>
99
  <body class="min-h-screen gradient-bg">
100
+     <nav class="bg-hf-dark/80 backdrop-blur-md border-b border-gray-800 fixed w-full z-50">
101
+         <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
102
+             <div class="flex items-center justify-between h-16">
103
+                 <div class="flex items-center">
104
+                     <div class="flex-shrink-0">
105
+                         <span class="text-hf-purple font-bold text-xl">Max Mustermann</span>
106
+                     </div>
107
+                     <div class="hidden md:block">
108
+                         <div class="ml-10 flex items-baseline space-x-4">
109
+                             <a href="#home" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Home</a>
110
+                             <a href="#projects" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Projects</a>
111
+                             <a href="#about" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">About</a>
112
+                         </div>
113
+                     </div>
114
+                 </div>
115
+                 <div class="hidden md:block">
116
+                     <div class="ml-4 flex items-center md:ml-6">
117
+                         <a href="https://github.com/maxmustermann" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-4 py-2 rounded-md text-sm font-medium flex items-center">
118
+                             <i class="fab fa-github mr-2"></i> GitHub
119
+                         </a>
120
+                     </div>
121
+                 </div>
122
+                 <div class="-mr-2 flex md:hidden">
123
+                     <button type="button" id="mobile-menu-button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none">
124
+                         <span class="sr-only">Open main menu</span>
125
+                         <i class="fas fa-bars"></i>
126
+                     </button>
127
+                 </div>
128
+             </div>
129
+         </div>
130
+        
131
+         <div class="hidden md:hidden" id="mobile-menu">
132
+             <div class="px-2 pt-2 pb-3 space-y-1 sm:px-3">
133
+                 <a href="#home" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Home</a>
134
+                 <a href="#projects" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Projects</a>
135
+                 <a href="#about" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">About</a>
136
+                 <a href="https://github.com/maxmustermann" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark block px-3 py-2 rounded-md text-base font-medium flex items-center justify-center">
137
+                     <i class="fab fa-github mr-2"></i> GitHub
138
+                 </a>
139
+             </div>
140
+         </div>
141
+     </nav>
 
 
142
 
143
+     <section id="home" class="pt-32 pb-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
144
+         <div class="flex flex-col md:flex-row items-center justify-between">
145
+             <div class="md:w-1/2 mb-10 md:mb-0">
146
+                 <h1 class="text-4xl md:text-6xl font-bold mb-6">
147
+                     <span class="text-hf-purple">Hello, I'm Max Mustermann</span>
148
+                     <span class="text-white block mt-2">Full-Stack Developer & Security Nerd</span>
149
+                 </h1>
150
+                 <p class="text-lg text-gray-300 mb-8">
151
+                     I'm a developer and security enthusiast based in Berlin. I love building robust web applications, hardening servers, and bringing ideas to life with a touch of AI.
152
+                 </p>
153
+                 <div class="flex space-x-4">
154
+                     <a href="#projects" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-6 py-3 rounded-md font-medium">
155
+                         Explore My Projects
156
+                     </a>
157
+                     <a href="mailto:contact@maxmustermann.dev" class="border border-hf-purple text-hf-purple hover:bg-hf-purple hover:text-hf-dark px-6 py-3 rounded-md font-medium">
158
+                         Email Me
159
+                     </a>
160
+                 </div>
161
+             </div>
162
+             <div class="md:w-1/2 flex justify-center">
163
+                 <div class="relative w-64 h-64 md:w-80 md:h-80">
164
+                     <div class="absolute inset-0 bg-hf-purple/20 rounded-full blur-xl animate-pulse"></div>
165
+                     <div class="relative w-full h-full flex items-center justify-center">
166
+                         <img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" alt="Hugging Face Logo" class="w-full h-full object-contain animate-float">
167
+                     </div>
168
+                 </div>
169
+             </div>
170
+         </div>
171
+     </section>
172
 
173
+     <section id="projects" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
174
+         <div class="text-center mb-16">
175
+             <h2 class="text-3xl md:text-4xl font-bold mb-4">
176
+                 <span class="text-hf-purple">My</span>
177
+                 <span class="text-white">Projects</span>
178
+             </h2>
179
+             <p class="text-gray-400 max-w-2xl mx-auto">
180
+                 Here's a selection of my work, from AI-powered tools to secure server architectures.
181
+             </p>
182
+         </div>
183
+        
184
+         <div class="relative">
185
+             <div class="overflow-hidden">
186
+                 <div id="carousel" class="flex transition-transform duration-500 ease-in-out -ml-4">
187
+                     <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
188
+                         <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
189
+                             <div class="flex items-center mb-4">
190
+                                 <div class="bg-hf-purple/20 p-3 rounded-lg">
191
+                                     <i class="fas fa-brain text-hf-purple text-2xl"></i>
192
+                                 </div>
193
+                                 <h3 class="text-xl font-semibold ml-4">AI-Powered Portal</h3>
194
+                             </div>
195
+                             <p class="text-gray-400 mb-6 flex-grow">
196
+                                 An informational portal for Germany's youth services, enhanced with an AI component to make complex data easily accessible.
197
+                             </p>
198
+                             <div class="flex justify-between items-center mt-auto">
199
+                                 <span class="text-sm text-hf-purple">AI • Full-Stack • Data</span>
200
+                                 <a href="https://jugendamt-deutschland.de" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
201
+                                     Visit <i class="fas fa-external-link-alt ml-2"></i>
202
+                                 </a>
203
+                             </div>
204
+                         </div>
205
+                     </div>
206
+                    
207
+                     <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
208
+                         <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
209
+                             <div class="flex items-center mb-4">
210
+                                 <div class="bg-hf-purple/20 p-3 rounded-lg">
211
+                                     <i class="fas fa-shield-halved text-hf-purple text-2xl"></i>
212
+                                 </div>
213
+                                 <h3 class="text-xl font-semibold ml-4">Secure Architectures</h3>
214
+                             </div>
215
+                             <p class="text-gray-400 mb-6 flex-grow">
216
+                                 My passion project: experimenting with and hardening server configurations to build secure and resilient infrastructure from the ground up.
217
+                             </p>
218
+                             <div class="flex justify-between items-center mt-auto">
219
+                                 <span class="text-sm text-hf-purple">Security • Servers • DevOps</span>
220
+                                 <a href="https://github.com/maxmustermann" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
221
+                                     Explore <i class="fas fa-external-link-alt ml-2"></i>
222
+                                 </a>
223
+                             </div>
224
+                         </div>
225
+                     </div>
226
+                    
227
+                     <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
228
+                         <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
229
+                             <div class="flex items-center mb-4">
230
+                                 <div class="bg-hf-purple/20 p-3 rounded-lg">
231
+                                     <i class="fas fa-globe-europe text-hf-purple text-2xl"></i>
232
+                                 </div>
233
+                                 <h3 class="text-xl font-semibold ml-4">Custom Web Solutions</h3>
234
+                             </div>
235
+                             <p class="text-gray-400 mb-6 flex-grow">
236
+                                 Various websites I've built for fun and for clients, focusing on clean code, performance, and great user experience.
237
+                             </p>
238
+                             <div class="flex justify-between items-center mt-auto">
239
+                                 <span class="text-sm text-hf-purple">Web Dev • UI/UX</span>
240
+                                 <a href="https://maxmustermann.github.io/" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
241
+                                     See More <i class="fas fa-external-link-alt ml-2"></i>
242
+                                 </a>
243
+                             </div>
244
+                         </div>
245
+                     </div>
246
+                 </div>
247
+             </div>
248
 
249
+             <button id="prevBtn" class="absolute left-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -ml-2 hidden sm:block">
250
+                 <i class="fas fa-chevron-left"></i>
251
+             </button>
252
+             <button id="nextBtn" class="absolute right-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -mr-2 hidden sm:block">
253
+                 <i class="fas fa-chevron-right"></i>
254
+             </button>
255
+         </div>
256
+     </section>
257
 
258
+     <section id="about" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
259
+         <div class="flex flex-col lg:flex-row items-center">
260
+             <div class="lg:w-1/2 mb-10 lg:mb-0 lg:pr-10">
261
+                 <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8">
262
+                     <h2 class="text-3xl font-bold mb-6">
263
+                         <span class="text-hf-purple">About</span>
264
+                         <span class="text-white">Me</span>
265
+                     </h2>
266
+                     <p class="text-gray-400 mb-6">
267
+                         As a developer with a deep interest in cybersecurity, I focus on building applications that are not just functional, but also secure and robust. My journey began with web development and quickly grew into a passion for securing the entire stack.
268
+                     </p>
269
+                     <p class="text-gray-400 mb-6">
270
+                         I'm driven by curiosity, whether it's exploring new ways to harden a Linux server or integrating AI models from Hugging Face into my work to solve real-world problems.
271
+                     </p>
272
+                     <div class="flex flex-wrap gap-4 mb-6">
273
+                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Full-Stack Dev</span>
274
+                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Cybersecurity</span>
275
+                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Server Hardening</span>
276
+                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">JavaScript</span>
277
+                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Linux</span>
278
+                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">AI Integration</span>
279
+                     </div>
280
+                     <a href="https://github.com/maxmustermann" target="_blank" rel="noopener noreferrer" class="inline-flex items-center text-hf-purple hover:text-yellow-500 font-medium">
281
+                         <i class="fab fa-github mr-2"></i> Visit my GitHub
282
+                     </a>
283
+                 </div>
284
+             </div>
285
+             <div class="lg:w-1/2 lg:pl-10">
286
+                 <div class="grid grid-cols-2 gap-4">
287
+                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
288
+                         <div class="text-hf-purple text-4xl mb-4">
289
+                             <i class="fas fa-code"></i>
290
+                         </div>
291
+                         <h3 class="text-xl font-semibold mb-2">Open Source</h3>
292
+                         <p class="text-gray-400">
293
+                            I actively contribute to and maintain projects on my GitHub profile.
294
+                         </p>
295
+                     </div>
296
+                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
297
+                         <div class="text-hf-purple text-4xl mb-4">
298
+                             <i class="fas fa-server"></i>
299
+                         </div>
300
+                         <h3 class="text-xl font-semibold mb-2">Infrastructure</h3>
301
+                         <p class="text-gray-400">
302
+                            Hands-on experience with server setup, maintenance, and security protocols.
303
+                         </p>
304
+                     </div>
305
+                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
306
+                         <div class="text-hf-purple text-4xl mb-4">
307
+                             <i class="fas fa-user-secret"></i>
308
+                         </div>
309
+                         <h3 class="text-xl font-semibold mb-2">Security Nerd</h3>
310
+                         <p class="text-gray-400">
311
+                            Passionate about hardening systems and building secure digital environments.
312
+                         </p>
313
+                     </div>
314
+                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
315
+                         <div class="text-hf-purple text-4xl mb-4">
316
+                             <i class="fas fa-rocket"></i>
317
+                         </div>
318
+                         <h3 class="text-xl font-semibold mb-2">Web Platforms</h3>
319
+                         <p class="text-gray-400">
320
+                            Built and launched several web projects, including an AI-powered portal.
321
+                         </p>
322
+                     </div>
323
+                 </div>
324
+             </div>
325
+         </div>
326
+     </section>
327
+    
328
+         <footer class="bg-hf-dark/50 border-t border-gray-800 py-10">
329
+         <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
330
+             <div class="flex flex-col md:flex-row justify-between items-center">
331
+                 <div class="mb-6 md:mb-0">
332
+                     <span class="text-hf-purple font-bold text-xl">Max Mustermann Portfolio</span>
333
+                     <p class="text-gray-400 mt-2">Building the future, securely.</p>
334
+                 </div>
335
+                 <div class="flex flex-wrap justify-center gap-6">
336
+                     <a href="#home" class="text-gray-400 hover:text-hf-purple">Home</a>
337
+                     <a href="#projects" class="text-gray-400 hover:text-hf-purple">Projects</a>
338
+                     <a href="#about" class="text-gray-400 hover:text-hf-purple">About</a>
339
+                     <a href="https://github.com/maxmustermann" class="text-gray-400 hover:text-hf-purple" target="_blank" rel="noopener noreferrer">GitHub</a>
340
+                 </div>
341
+             </div>
342
+             <div class="mt-8 pt-8 border-t border-gray-800 text-center text-gray-500 text-sm">
343
+                 <p>&copy; 2025 Max Mustermann Portfolio. All rights reserved.</p>
344
+             </div>
345
+         </div>
346
+     </footer>
347
 
348
+     <script>
349
+         document.addEventListener('DOMContentLoaded', function () {
350
+             // Mobile menu toggle
351
+             const mobileMenuButton = document.getElementById('mobile-menu-button');
352
+             const mobileMenu = document.getElementById('mobile-menu');
353
+             if (mobileMenuButton) {
354
+                 mobileMenuButton.addEventListener('click', () => {
355
+                     mobileMenu.classList.toggle('hidden');
356
+                 });
357
+             }
358
+             // Smooth scrolling for navigation links
359
+             document.querySelectorAll('a[href^="#"]').forEach(anchor => {
360
+                 anchor.addEventListener('click', function (e) {
361
+                     e.preventDefault();
362
+                     const targetId = this.getAttribute('href');
363
+                     const targetElement = document.querySelector(targetId);
364
+                    
365
+                     if (targetElement) {
366
+                         window.scrollTo({
367
+                             top: targetElement.offsetTop - 64, // Adjust for fixed nav height
368
+                             behavior: 'smooth'
369
+                         });
370
+                        
371
+                         if (!mobileMenu.classList.contains('hidden')) {
372
+                             mobileMenu.classList.add('hidden');
373
+                         }
374
+                     }
375
+                 });
376
+             });
377
+             // Carousel functionality
378
+             const carousel = document.getElementById('carousel');
379
+             const prevBtn = document.getElementById('prevBtn');
380
+             const nextBtn = document.getElementById('nextBtn');
381
+            
382
+             if (carousel) {
383
+                 const items = carousel.querySelectorAll('.carousel-item');
384
+                 const itemCount = items.length;
385
+                 let currentIndex = 0;
386
+                 function getVisibleItems() {
387
+                     if (window.innerWidth >= 1024) return 3; // lg
388
+                     if (window.innerWidth >= 768) return 2; // md
389
+                     return 1; // sm
390
+                 }
391
+                 function updateCarousel() {
392
+                     const itemWidth = items[0].getBoundingClientRect().width;
393
+                     const containerGap = parseInt(getComputedStyle(items[0]).paddingRight) * 2;
394
+                     const totalWidth = itemWidth + containerGap;
395
+                    
396
+                     carousel.style.transform = `translateX(-${currentIndex * totalWidth}px)`;
397
+                     // Button visibility
398
+                     const visibleItems = getVisibleItems();
399
+                     prevBtn.disabled = currentIndex === 0;
400
+                     nextBtn.disabled = currentIndex >= itemCount - visibleItems;
401
+                     prevBtn.style.opacity = prevBtn.disabled ? '0.4' : '1';
402
+                     nextBtn.style.opacity = nextBtn.disabled ? '0.4' : '1';
403
+                 }
404
+                 prevBtn.addEventListener('click', () => {
405
+                     if (currentIndex > 0) {
406
+                         currentIndex--;
407
+                         updateCarousel();
408
+                     }
409
+                 });
410
+                 nextBtn.addEventListener('click', () => {
411
+                     if (currentIndex < itemCount - getVisibleItems()) {
412
+                         currentIndex++;
413
+                         updateCarousel();
414
+                     }
415
+                 });
416
+                
417
+                 window.addEventListener('resize', () => {
418
+                     // Reset to avoid issues on resize
419
+                     currentIndex = 0;
420
+                     updateCarousel();
421
+                 });
422
+                
423
+                 updateCarousel(); // Initial call
424
+             }
425
+         });
426
+     </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
  </body>
428
  </html>