commit cb65b574f95a321697709ac0f194e640beb29817 Author: Vysyr Date: Mon Aug 31 21:49:20 2026 +0200 initial page diff --git a/README.md b/README.md new file mode 100644 index 0000000..93926b2 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# codevisoft.com + +Static about/portfolio page for Codevisoft (Paweł Szudarek), meant to be hosted on a Raspberry Pi. + +## Structure + +- `index.html` — page content +- `styles.css` — styling +- `script.js` — small footer-year script +- `images/` — logo assets + +No build step — plain static files. + +## Deploying on the Raspberry Pi (nginx) + +1. Install nginx if not already installed: + ``` + sudo apt update && sudo apt install nginx + ``` +2. Copy the site files to the web root, e.g.: + ``` + sudo mkdir -p /var/www/codevisoft + sudo cp -r index.html styles.css script.js images /var/www/codevisoft/ + ``` +3. Create an nginx server block, e.g. `/etc/nginx/sites-available/codevisoft`: + ``` + server { + listen 80; + server_name codevisoft.com www.codevisoft.com; + root /var/www/codevisoft; + index index.html; + } + ``` +4. Enable it and reload nginx: + ``` + sudo ln -s /etc/nginx/sites-available/codevisoft /etc/nginx/sites-enabled/ + sudo nginx -t + sudo systemctl reload nginx + ``` +5. Point your router's port forwarding (80/443) and DNS `A` record for `codevisoft.com` at your public IP, or use a tunnel (e.g. Cloudflare Tunnel) if you don't want to expose the Pi directly. +6. For HTTPS, use `certbot` (`sudo apt install certbot python3-certbot-nginx`) once DNS is pointed at the Pi. + +## Editing content + +Edit `index.html` directly — sections are marked `About`, `Portfolio`, and `Contact`. Update the email address, portfolio entries, and links as needed. diff --git a/images/Emblem.png b/images/Emblem.png new file mode 100644 index 0000000..b53303b Binary files /dev/null and b/images/Emblem.png differ diff --git a/images/FullLogo — kopia.png b/images/FullLogo — kopia.png new file mode 100644 index 0000000..e19a0b9 Binary files /dev/null and b/images/FullLogo — kopia.png differ diff --git a/images/FullLogo.png b/images/FullLogo.png new file mode 100644 index 0000000..130d674 Binary files /dev/null and b/images/FullLogo.png differ diff --git a/images/FullLogo_transparent.png b/images/FullLogo_transparent.png new file mode 100644 index 0000000..9a0906a Binary files /dev/null and b/images/FullLogo_transparent.png differ diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000..130d674 Binary files /dev/null and b/images/logo.png differ diff --git a/images/logo.svg b/images/logo.svg new file mode 100644 index 0000000..abfb0f4 --- /dev/null +++ b/images/logo.svg @@ -0,0 +1,6 @@ + + +CODEVISOFT logo + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..b326b9b --- /dev/null +++ b/index.html @@ -0,0 +1,97 @@ + + + + + +Codevisoft — Paweł Szudarek + + + + + + + + +
+ +
+
+ +

Software & game development, IT services and consulting.

+
+
+ +
+
+

About

+

+ Codevisoft is the sole proprietorship of Paweł Szudarek, an independent + software developer working across IT services & consulting and game development. + From small competition projects to freelance IT work, Codevisoft focuses on building + solid, well-crafted software. +

+ +
+
+ +
+
+

Portfolio

+
+ +
+

Jeżmin

+

Action-RPG · by CD Pink · ZTGK 2025 competition entry

+

An action-RPG built for the 2025 ZTGK game development competition.

+ View on itch.io → +
+ +
+

PanDa 3

+

Educational · by OgórkiKiszone · ZTGK 2026 competition entry

+

An educational game developed for the 2026 ZTGK game development competition.

+ View on itch.io → +
+ +
+ +
+
+ +
+ +
+ +
+ + + + + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..ee94172 --- /dev/null +++ b/script.js @@ -0,0 +1 @@ +document.getElementById("year").textContent = new Date().getFullYear(); diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..e8151ab --- /dev/null +++ b/styles.css @@ -0,0 +1,159 @@ +:root { + --bg: #0d1117; + --bg-alt: #11161d; + --text: #e6edf3; + --text-dim: #9aa7b4; + --accent: #36A9E1; + --border: #1f2732; + --max-width: 960px; +} + +* { box-sizing: border-box; } + +html { scroll-behavior: smooth; } + +body { + margin: 0; + background: var(--bg); + color: var(--text); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + line-height: 1.6; +} + +a { + color: var(--accent); + text-decoration: none; +} +a:hover { text-decoration: underline; } + +.container { + max-width: var(--max-width); + margin: 0 auto; + padding: 0 1.5rem; +} + +.site-header { + border-bottom: 1px solid var(--border); + position: sticky; + top: 0; + background: rgba(13, 17, 23, 0.9); + backdrop-filter: blur(6px); + z-index: 10; +} + +.header-inner { + display: flex; + align-items: center; + justify-content: center; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +nav a { + color: var(--text); + margin-left: 1.5rem; + font-weight: 500; +} +nav a:hover { color: var(--accent); text-decoration: none; } + +.hero { + text-align: center; + padding: 5rem 0 4rem; +} + +.hero-emblem { + width: 88px; + height: auto; + margin-bottom: 1.5rem; +} + +.hero h1 { + font-size: 2.75rem; + margin: 0 0 0.5rem; + letter-spacing: 0.02em; +} + +.tagline { + color: var(--text-dim); + font-size: 1.15rem; + margin: 0; +} + +.section { + padding: 3.5rem 0; +} + +.section.alt { + background: var(--bg-alt); + border-top: 1px solid var(--border); + border-bottom: 1px solid var(--border); +} + +.section h2 { + font-size: 1.75rem; + margin-top: 0; + margin-bottom: 1.5rem; +} + +.links-inline { + color: var(--text-dim); +} + +.portfolio-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); + gap: 1.5rem; +} + +.card { + background: var(--bg); + border: 1px solid var(--border); + border-radius: 10px; + padding: 1.5rem; +} + +.card h3 { + margin: 0 0 0.25rem; +} + +.card-meta { + color: var(--text-dim); + font-size: 0.85rem; + margin: 0 0 0.75rem; +} + +.card-link { + display: inline-block; + margin-top: 0.75rem; + font-weight: 500; +} + +.more-link { + margin-top: 2rem; + color: var(--text-dim); +} + +.contact-list { + list-style: none; + padding: 0; + margin: 0; +} + +.contact-list li { + padding: 0.4rem 0; +} + +.site-footer { + border-top: 1px solid var(--border); + padding: 2rem 0; + color: var(--text-dim); + font-size: 0.9rem; + text-align: center; +} + +@media (max-width: 600px) { + .header-inner { flex-direction: column; gap: 0.5rem; } + nav a { margin: 0 0.75rem; } + .hero { padding: 3.5rem 0 2.5rem; } + .hero h1 { font-size: 2.1rem; } +}