aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.rsyncignore9
-rw-r--r--index.css267
-rw-r--r--index.html145
4 files changed, 217 insertions, 205 deletions
diff --git a/.gitignore b/.gitignore
index cdc376c..fd6892b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
1.svelte-kit/ 1.svelte-kit/
2deploy.sh
2package 3package
3.env 4.env
4.env.production 5.env.production
diff --git a/.rsyncignore b/.rsyncignore
new file mode 100644
index 0000000..2479e96
--- /dev/null
+++ b/.rsyncignore
@@ -0,0 +1,9 @@
1
2.git/
3.gitignore
4README.md
5node_modules/
6*.log
7.env
8deploy.sh
9.rsyncignore
diff --git a/index.css b/index.css
index 256e2fc..72f84cf 100644
--- a/index.css
+++ b/index.css
@@ -1,138 +1,129 @@
1 * { 1* { box-sizing: border-box; }
2 box-sizing: border-box; 2body {
3 } 3 margin: 0;
4 4 font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
5 body { 5 Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
6 margin: 0; 6 font-size: 1.125rem; /* 18px base */
7 background: #fcfdfe; /* base07 - light background */ 7 line-height: 1.8;
8 color: #000c18; /* base00 - dark text */ 8 background: #fcfdfe;
9 line-height: 1.75; 9 color: #000c18;
10 font-size: 1rem; 10 display: flex;
11 display: flex; 11 flex-direction: column;
12 flex-direction: column; 12 min-height: 100vh;
13 min-height: 100vh; 13 overflow-x: hidden;
14 overflow-x: hidden; 14}
15 font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, 15
16 Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 16header, footer { padding: 2em; }
17 } 17
18 18main {
19 header, footer { 19 flex-grow: 1;
20 padding: 2em; 20 max-width: 900px;
21 text-align: center; 21 margin: 0 auto;
22 } 22 padding: 2em;
23 23}
24 main { 24
25 flex-grow: 1; 25footer {
26 padding: 2em; 26 border-top: 1px solid currentColor;
27 width: 100%; 27 text-align: center;
28 box-sizing: border-box; 28 font-size: 1.05rem;
29 max-width: 900px; 29}
30 margin: 0 auto; 30
31 } 31h2 {
32 32 margin: 0 0 0.75em;
33 footer { 33 font-weight: 700;
34 border-top: 1px solid #000c18; /* base00 */ 34 line-height: 1.3;
35 color: #000c18; /* base00 */ 35}
36 } 36
37 37h1 { font-size: 2.5rem; }
38 h1, h2 { 38h2 { font-size: 2rem; }
39 font-weight: normal; 39
40 margin: 0; 40header h1 { font-size: 2rem; }
41 font-size: 2.25rem; 41section { margin-bottom: 3em; padding: 0 2%; }
42 color: inherit; /* inherit from body */ 42a {
43 } 43 color: #22aa44;
44 44 font-weight: 700;
45 section { 45 text-decoration: underline;
46 margin-bottom: 3em; 46 text-decoration-color: transparent;
47 color: inherit; /* inherit from body */ 47 text-underline-offset: 4px;
48 width: 100%; 48 text-decoration-thickness: 2px;
49 padding: 0 2%; 49 transition: color .3s, text-decoration-color .3s;
50 } 50}
51 51a:hover,
52 a { 52a:focus {
53 color: #22aa44; /* base0B - green */ 53 color: #9966b8;
54 text-decoration: underline; 54 text-decoration-color: currentColor;
55 font-weight: 700; 55}
56 transition: color 0.3s ease, text-decoration-color 0.3s ease; 56a:focus-visible {
57 text-underline-offset: 3px; 57 outline: 3px solid #22aa44;
58 text-decoration-thickness: 2px; 58 outline-offset: 4px;
59 text-decoration-color: transparent; 59 border-radius: 3px;
60 } 60}
61 61header { text-align: center; }
62 a:hover, 62
63 a:focus { 63.header-top {
64 color: #9966b8; /* base08 - purple */ 64 display: flex;
65 text-decoration-color: currentColor; 65 justify-content: center;
66 outline-offset: 3px; 66 align-items: center;
67 outline: 2px solid #22aa44; 67 gap: 2rem;
68 outline-radius: 3px; 68}
69 } 69
70 70nav ul {
71 a:focus-visible { 71 list-style: none;
72 outline-offset: 4px; 72 margin: 0;
73 outline: 3px solid #22aa44; /* base0B */ 73 padding: 0;
74 outline-radius: 3px; 74 display: flex;
75 } 75 gap: 2rem;
76 76 justify-content: center;
77 .links a { 77 flex-wrap: wrap;
78 color: #22aa44; /* base0B */ 78}
79 } 79nav a {
80 80 font-weight: 600;
81 .links a:hover { 81 font-size: 1.125rem;
82 color: #e6550d; /* base09 */ 82}
83 } 83.menu-toggle {
84 84 display: none;
85 @media (max-width: 768px) { 85 background: none;
86 h1 { 86 border: 0;
87 font-size: 1.8rem; 87 font-size: 1.75rem;
88 } 88 cursor: pointer;
89 89 color: inherit;
90 h2 { 90}
91 font-size: 1.6rem; 91.sr-only {
92 } 92 position: absolute;
93 93 width: 1px; height: 1px;
94 footer { 94 margin: -1px; padding: 0;
95 font-size: 0.9em; 95 overflow: hidden;
96 } 96 clip: rect(0 0 0 0);
97 97 border: 0;
98 .privacy { 98}
99 font-size: 0.8em; 99@media (max-width: 768px) {
100 } 100 h1 { font-size: 2rem; }
101 101 h2 { font-size: 1.75rem; }
102 main { 102 main { padding: 1.5em; }
103 padding: 1.5em; 103
104 } 104 .header-top {
105 } 105 justify-content: space-between;
106 106 text-align: left;
107 @media (prefers-color-scheme: dark) { 107 }
108 body { 108 nav ul {
109 background: #000c18; /* base00 */ 109 flex-direction: column;
110 color: #b7b8b9; /* base05 */ 110 align-items: center;
111 } 111 gap: 1.25rem;
112 112 display: none;
113 footer { 113 }
114 border-color: #fcfdfe; /* base07 */ 114 nav ul.open { display: flex; }
115 color: #fcfdfe; /* base07 */ 115 .menu-toggle { display: block; }
116 } 116 header {
117 117 position: sticky;
118 a { 118 top: 0;
119 color: #22aa44; /* keep green links in dark mode */ 119 z-index: 1000;
120 text-decoration-color: transparent; 120 background: inherit;
121 } 121 }
122 122}
123 a:hover, 123@media (prefers-color-scheme: dark) {
124 a:focus { 124 body { background: #000c18; color: #b7b8b9; }
125 color: #9966b8; /* base08 */ 125 footer { border-color: #fcfdfe; color: #fcfdfe; }
126 text-decoration-color: currentColor; 126 a { color: #22aa44; }
127 } 127 a:hover, a:focus { color: #9966b8; }
128 } 128}
129 129.highlight { background: #9966b8; color: #fcfdfe; }
130 .high-contrast {
131 background-color: #fcfdfe; /* base07 */
132 color: #000c18; /* base00 */
133 }
134
135 .highlight {
136 background-color: #9966b8; /* base08 */
137 color: #fcfdfe; /* base07 */
138 }
diff --git a/index.html b/index.html
index 537c04b..5204048 100644
--- a/index.html
+++ b/index.html
@@ -1,91 +1,102 @@
1<!doctype html> 1<!doctype html>
2<html lang="en"> 2<html lang="en">
3<head> 3<head>
4 <meta charset="UTF-8" /> 4 <meta charset="utf-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" />
6 <title>Filip Wandzio</title> 6 <title>Filip Wandzio – Software Engineer | Web & Mobile Development</title>
7 <meta name="description" content="Filip Wandzio β€” Software Engineer specializing in web technologies, mobile apps, and software design. Discover projects, research, presentations, and blog posts." /> 7 <meta name="description" content="Filip Wandzio β€” software engineer building web apps, mobile tools, and software with a focus on clarity and usefulness. Explore projects, research, and writing." />
8 <meta name="keywords" content="Software Engineer, Web Technologies, Mobile Apps, Presentations, Blog, Filip Wandzio" /> 8 <meta name="keywords" content="software engineer, web technologies, mobile apps, projects, research, blog, filip wandzio" />
9 <link rel="icon" type="image/x-icon" href="./public/favicon.ico" /> 9 <meta name="robots" content="index, follow" />
10 <link rel="icon" type="image/png" href="./public/favicon.ico" />
11 <link rel="apple-touch-icon" href="./public/favicon.ico" />
10 <link rel="stylesheet" href="./index.css"> 12 <link rel="stylesheet" href="./index.css">
11 <link rel="canonical" href="https://philw.dev" /> 13 <link rel="canonical" href="https://philw.dev" />
12
13 <meta property="og:title" content="Filip Wandzio - Software Engineer" /> 14 <meta property="og:title" content="Filip Wandzio - Software Engineer" />
14 <meta property="og:description" content="Software engineer specializing in web technologies, mobile apps, and software design." /> 15 <meta property="og:description" content="Software engineer building web apps, mobile tools, and software with a focus on clarity and usefulness." />
15 <meta property="og:type" content="website" /> 16 <meta property="og:type" content="website" />
16 <meta property="og:url" content="https://philw.dev" /> 17 <meta property="og:url" content="https://philw.dev" />
17 <meta property="og:image" content="https://philw.dev/preview.webp" /> 18 <meta property="og:image" content="https://philw.dev/preview.webp" />
18 19 <meta property="og:locale" content="en_US" />
19 <meta name="twitter:card" content="summary_large_image" /> 20 <meta name="theme-color" content="#000c18" />
20 <meta name="twitter:title" content="Filip Wandzio - Software Engineer" /> 21 <script type="application/ld+json">
21 <meta name="twitter:description" content="Software engineer specializing in web technologies, mobile apps, and software design." /> 22 {
22 <meta name="twitter:image" content="https://philw.dev/public/preview.webp" /> 23 "@context": "https://schema.org",
23 24 "@type": "Person",
24 <meta name="theme-color" content="#22aa44" /> 25 "name": "Filip Wandzio",
25 26 "url": "https://philw.dev",
26 <!-- <script type="application/ld+json"> --> 27 "jobTitle": "Software Engineer",
27 <!-- { --> 28 }
28 <!-- "@context": "https://schema.org", --> 29 </script>
29 <!-- "@type": "Event", -->
30 <!-- "name": "Enter The Matrix", -->
31 <!-- "startDate": "2025-11-11", -->
32 <!-- "location": { -->
33 <!-- "@type": "Place", -->
34 <!-- "name": "MacMeeting" -->
35 <!-- }, -->
36 <!-- "organizer": { -->
37 <!-- "@type": "Person", -->
38 <!-- "name": "Filip Wandzio" -->
39 <!-- } -->
40 <!-- } -->
41 <!-- </script> -->
42</head> 30</head>
43<body> 31<body>
44 <header aria-label="Website header"> 32 <header>
45 <h1>Filip Wandzio</h1> 33 <div class="header-top">
34 <h1>Filip Wandzio</h1>
35 <button class="menu-toggle" aria-expanded="false" aria-controls="main-nav">
36 ☰ <span class="sr-only">Menu</span>
37 </button>
38 </div>
39 <nav id="main-nav" aria-label="Main navigation">
40 <ul>
41 <li><a href="#about">About</a></li>
42 <li><a href="#projects">Projects</a></li>
43 <li><a href="#research">Research</a></li>
44 <li><a href="#contact">Contact</a></li>
45 </ul>
46 </nav>
46 </header> 47 </header>
48
47 <main> 49 <main>
48 <section id="about" aria-labelledby="about"> 50 <section id="about" aria-labelledby="about-heading">
49 <h2>About Me</h2> 51 <h2 id="about-heading">πŸ’‘ About</h2>
50 <p>Software engineer focused on practical tools and solving real-world problems with minimal overhead. Currently working with web technologies, mobile applications, and software design.</p> 52 <p>I’m a software engineer who makes tools that are simple, practical, and useful. Right now I mostly work with web applications, mobile development, and general software design.</p>
51 <p>In my free time, I enjoy music β€” both listening and producing my own pieces.</p> 53 <p>Outside of programming, I spend time with music β€” listening, exploring, and creating my own pieces.</p>
52 </section> 54 </section>
53 55
54 <section id="projects" aria-labelledby="projects"> 56 <section id="projects" aria-labelledby="projects-heading">
55 <h2>Projects</h2> 57 <h2 id="projects-heading">πŸ‘¨β€πŸ’» Projects</h2>
56 <p>Personal projects are available <a href="https://git.philw.dev" target="_blank" rel="noopener noreferrer" aria-label="Visit Filip Wandzio's Git repository">here</a>.</p> 58 <p>Side projects are hosted on my <a href="https://www.git.philw.dev" target="_blank" rel="noopener noreferrer" aria-label="visit filip wandzio's git repository">git repository</a>. They are experiments, prototypes, and actual working solutions used on my personal machine. Here you can also find materials used on my prelections.</p>
57 </section> 59 </section>
58 60
59 <!-- <section id="presentations" aria-labelledby="presentations"> --> 61 <section id="research" aria-labelledby="research-heading">
60 <!-- <h2>Upcoming Presentations</h2> --> 62 <h2 id="research-heading">πŸ”¬ Research</h2>
61 <!-- <ul> --> 63 <p>
62 <!-- <li><strong>Enter The Matrix</strong> β€” <em>MacMeeting</em> β€” 11.11.2025</li> --> 64 Currently I am an undergraduate / master’s student in Computer Science with a interest in
63 <!-- </ul> --> 65 <strong>Cybersecurity, Operating Systems and Network Engineering</strong>.
64 <!-- </section> --> 66 My academic work has focused on learning core concepts, exploring how technology can be made
67 more accessible, and experimenting with practical projects that bridge theory and application.
68 </p>
69 <p>
70 I am not yet a professional researcher, but I enjoy reviewing academic papers,
71 and building prototypes. My long-term goal is to pursue further graduate studies where I can deepen my
72 expertise.
73 </p>
74 </section>
65 75
66 <section id="research" aria-labelledby="research"> 76 <section id="contact" aria-labelledby="contact-heading">
67 <h2>Research</h2> 77 <h2 id="contact-heading">βœ‰οΈ Contact</h2>
68 <ul> 78 <p>If you’d like to get in touch, send me an email: <a href="mailto:contact@philw.dev" aria-label="email filip wandzio">contact@philw.dev</a>.</p>
69 <li><a href="#" aria-label="Bachelor's thesis details">Bachelor's thesis</a></li>
70 <li><a href="#" aria-label="Master's thesis details">Master's thesis</a> β€” work in progress</li>
71 </ul>
72 </section> 79 </section>
80 </main>
81 <script>
82
83const toggleButton = document.querySelector('.menu-toggle');
84const navMenu = document.querySelector('#main-nav ul');
73 85
74 <!-- <section id="blog" aria-labelledby="blog"> --> 86toggleButton.addEventListener('click', () => {
75 <!-- <h2>Blog</h2> --> 87 const expanded = toggleButton.getAttribute('aria-expanded') === 'true';
76 <!-- <ul> --> 88 toggleButton.setAttribute('aria-expanded', String(!expanded));
77 <!-- <li><a href="#" aria-label="My approach to web technologies article">Web Technologies</a> β€” work in progress</li> --> 89 navMenu.classList.toggle('open');
78 <!-- <li><a href="#" aria-label="My experience with music production article">Music production and GNU/Linux</a> β€” work in progress</li> --> 90});
79 <!-- </ul> -->
80 <!-- </section> -->
81 91
82 <section id="contact" aria-labelledby="contact"> 92document.querySelectorAll('#main-nav a').forEach(link => {
83 <h2>Contact</h2> 93 link.addEventListener('click', () => {
84 <p>Reach out via <a href="mailto:contact@philw.dev" aria-label="Email Filip Wandzio">contact@philw.dev</a>.</p> 94 if (navMenu.classList.contains('open')) {
85 </section> 95 navMenu.classList.remove('open');
86 </main> 96 toggleButton.setAttribute('aria-expanded', 'false');
87 <footer aria-label="Footer with privacy statement"> 97 }
88 <p class="privacy">This website does not collect any data or track visitors.</p> 98 });
89 </footer> 99});
100 </script>
90</body> 101</body>
91</html> 102</html>