import { Skill, Job, Project } from "@/lib/types";

export const skills: Skill[] = [
  {
    name: "Azure Pipelines",
  },
  {
    name: "C#",
  },
  {
    name: "C++",
  },
  {
    name: "Django",
  },
  {
    name: "Docker",
  },
  {
    name: "FastAPI",
  },
  {
    name: "Git",
  },
  {
    name: "Java",
  },
  {
    name: "Javascript",
  },
  {
    name: "Linux",
  },
  {
    name: "PostGIS",
  },
  {
    name: "PostgreSQL",
  },
  {
    name: "Python",
  },
  {
    name: "Qt",
  },
  {
    name: "React",
  },
  {
    name: "Rust",
  },
  {
    name: "TailwindCSS",
  },
  {
    name: "Typescript",
  },
  {
    name: "Unity",
  },
];

export const jobs: Job[] = [
  {
    id: 2,
    position: "Full Stack Developer",
    company: "GIAP",
    still_working: false,
    start_date: "2021-05-19",
    end_date: "2023-02-03",
    sub_phases: [
      {
        label: "Frontend",
        start_date: "2022-02-01",
        end_date: "2023-02-03",
        bullets: [
          "Engineered a comprehensive, public-facing web application for the City of Gdańsk (geogdansk.pl) leveraging React, TypeScript, Redux, and the ArcGIS JS API.",
        ],
      },
      {
        label: "Desktop / Backend",
        start_date: "2021-05-19",
        end_date: "2022-02-01",
        bullets: [
          "Architected and optimized complex PostGIS/PostgreSQL cross-database comparison queries utilizing Common Table Expressions (CTEs), drastically reducing execution time from over 5 minutes to under 15 seconds.",
          "Developed a robust GIS data assertion module using Python and Qt to automatically validate spatial data against strict compliance standards.",
        ],
      },
    ],
    technologies: [
      "Python",
      "React",
      "Typescript",
      "PostgreSQL",
      "PostGIS",
      "ArcGIS JS API",
      "Redux",
      "Qt",
      "QGIS",
      "Git",
    ],
  },
  {
    id: 7,
    position: "Software Engineer",
    company: "digimonkeys.com",
    still_working: true,
    start_date: "2021-05-19",
    end_date: null,
    technologies: [
      "Python",
      "FastAPI",
      "Django",
      "PostgreSQL",
      "React",
      "TailwindCSS",
      "Nginx",
    ],
  },
  {
    id: 8,
    position: "Software Engineer",
    company: "WPP Media | Choreograph | Wavemaker",
    still_working: true,
    start_date: "2023-09-13",
    end_date: null,
    summary:
      "Advanced from frontend UI development to backend systems engineering, leading infrastructure-agnostic design initiatives.",
    sub_phases: [
      {
        label: "Backend & Infrastructure",
        start_date: "2025-03-01",
        end_date: null,
        bullets: [
          "Engineered and optimized backend applications and internal tools using Python, FastAPI, and Django.",
          "Streamlined CI/CD workflows and containerized applications with GitLab Pipelines, Docker, and Kubernetes across GCP and Azure environments.",
        ],
      },
      {
        label: "Frontend Architecture",
        start_date: "2023-09-13",
        end_date: "2025-03-01",
        bullets: [
          "Architected scalable microfrontends utilizing Angular and Module Federation, seamlessly integrating standalone internal tools into a unified enterprise shell application.",
          "Ensured seamless integration of UI components with Kubernetes-based deployments and Azure Pipelines.",
        ],
      },
    ],
    technologies: [
      "Angular",
      "Azure",
      "Azure Pipelines",
      "Django",
      "Docker",
      "FastAPI",
      "GCP",
      "Gitlab CI",
      "Gitlab Pipelines",
      "Kubernetes",
      "PostgreSQL",
      "Python",
      "React",
      "SCSS",
      "TailwindCSS",
      "Typescript",
    ],
  },
];

export const projects: Project[] = [
  {
    id: 16,
    name: "K-Notes",
    short_description: "A Google Keep replica focusing on simplicity.",
    description:
      "A full-featured Google Keep replica designed for speed and simplicity. It allows users to manage their notes efficiently and is a core part of the K-Suite.\n\n**Technical details:**\n- **Backend:** Rust\n- **Frontend:** React",
    category: "Web",
    github_url: "https://github.com/GKaszewski/k-notes",
    visit_url: "https://knotes.gabrielkaszewski.dev/",
    download_url: null,
    technologies: ["Rust", "React", "TailwindCSS", "PWA"],
    thumbnails: ["/images/k-notes.png"],
  },
  {
    id: 6,
    name: "Thoughts",
    short_description:
      "Federated microblogging platform with a Frutiger Aero aesthetic.",
    description:
      "Thoughts is a fully federated microblogging platform built on ActivityPub, compatible with Mastodon, Misskey, Pleroma, and Movies Diary. It features a distinctive Frutiger Aero style straight out of the 00s.\n\nUsers can post short thoughts (up to 128 characters), reply, boost, and like. Profiles are fully customizable with user-supplied CSS. The feed is purely chronological — no algorithms.\n\n**Federation:**\n- WebFinger, NodeInfo, shared inbox, paginated outbox, and actor profile sync\n- Remote actor discovery by `@user@instance` handle\n- Follow/unfollow remote actors with proper `Accept`/`Follow` delivery\n- Per-domain and per-actor moderation with `Block` activity delivery\n\n**Technical details:**\n- **Architecture:** Hexagonal (Ports & Adapters)\n- **Backend:** Rust, Axum, SQLx\n- **Frontend:** Next.js, TailwindCSS\n- **Database:** PostgreSQL (full-text search via trigram indexes)\n- **Event bus:** NATS JetStream (async AP delivery and notifications)\n- **Auth:** JWT + API key\n- **Docs:** OpenAPI (Swagger UI + Scalar)",
    category: "Web",
    github_url: "https://git.gabrielkaszewski.dev/GKaszewski/thoughts",
    visit_url: "https://thoughts.gabrielkaszewski.dev/",
    download_url: null,
    technologies: ["Rust", "Axum", "Next.js", "TailwindCSS", "ActivityPub", "PostgreSQL", "NATS"],
    thumbnails: ["/images/thoughts.avif"],
  },
  {
    id: 17,
    name: "K-Tuner",
    short_description: "Web app to tune guitar, ukulele and piano.",
    description:
      "A web application for tuning musical instruments including guitar, ukulele, and piano. It features a nostalgic Frutiger Aero style and is built as a Progressive Web App (PWA) for use on any device.\n\n**Technical details:**\n- **Frontend:** React PWA",
    category: "Web",
    github_url: "https://github.com/GKaszewski/k-tuner",
    visit_url: "https://tuner.gabrielkaszewski.dev/",
    download_url: null,
    technologies: ["React", "PWA", "TailwindCSS"],
    thumbnails: ["/images/k-tuner.png"],
  },
  {
    id: 15,
    name: "K-QR",
    short_description: "Fast and simple QR code generator.",
    description:
      "A high-performance QR code generator built with Rust. It serves a clean HTML template and provides a fast, single-executable solution for generating QR codes. Part of the K-Suite.\n\n**Technical details:**\n- **Backend:** Rust\n- **Frontend:** HTML templates",
    category: "Web",
    github_url: "https://github.com/GKaszewski/k-qr",
    visit_url: "https://qr.gabrielkaszewski.dev/",
    download_url: null,
    technologies: ["Rust", "HTML"],
    thumbnails: ["/images/k-qr.png"],
  },
  {
    id: 2,
    name: "Spanish Inquisition",
    short_description: "Educational game made in 24 hours in Unity.",
    description:
      "I made this game because I have Spanish as one of the subjects in school. I wanted to improve my vocabulary by having fun and a game is a perfect solution for this problem. I made this in 24 hours. It is not perfect gameplay-wise but I learned some Spanish from it. So it kind of works.",
    category: "Game",
    github_url: "https://github.com/GKaszewski/Spanish-Learning-Game",
    visit_url: "https://gamejolt.com/games/spanish-inquisition/425125",
    download_url: null,
    technologies: ["C#", "Unity"],
    thumbnails: [],
  },
  {
    id: 3,
    name: "Everyday quotes",
    short_description: "Simple app for reading various quotations",
    description:
      "I made this app as my first Flutter app because I wanted to learn how to write mobile apps and how to use public APIs.",
    category: "Mobile",
    github_url: "https://github.com/GKaszewski/Everyday_quotes",
    visit_url:
      "https://play.google.com/store/apps/details?id=com.GabrielKaszewski.everydayquotes",
    download_url: null,
    technologies: ["Dart", "Flutter"],
    thumbnails: [],
  },
  {
    id: 4,
    name: "Raytracer",
    short_description: "CPU based raytracer",
    description:
      "My attempt at making CPU raytracer in Rust.\r\n\r\nFeatures:\r\n- rendering spheres, cubes, triangles and meshes (gltf only)\r\n- multithreading\r\nResources:\r\n[Raytracing in One weekend](https://raytracing.github.io/books/RayTracingInOneWeekend.html)",
    category: "Desktop",
    github_url: "https://github.com/GKaszewski/raytracer-rs",
    visit_url: null,
    download_url: null,
    technologies: ["Rust"],
    thumbnails: [],
  },
  {
    id: 5,
    name: "Tiny packer",
    short_description: "Small utility to combine images into one atlas.",
    description:
      "**Overview:**\r\nTiny Packer is a command-line utility designed to combine multiple images into a single texture atlas. It provides options for manual and automatic sizing of the atlas, including adjustable padding between images.\r\n\r\n# Features\r\n- CLI \r\n- GUI \r\n- Padding support\r\n- Auto size\r\n\r\n# How to use? \r\n## GUI\r\n**Hotkeys**\r\n- `Ctrl+I` - Import images\r\n- `Ctrl+Shift+I` - Add images\r\n- `Ctrl+Shift+C` - Clear images\r\n- `Ctrl+S` - Save generated atlas\r\n## CLI\r\n**Usage:**\r\n```bash\r\ntiny_packer --input <input_files> --output <output_file> [OPTIONS]\r\n```\r\n\r\n**Required Arguments:**\r\n- `--input`, `-i`: Specify the input image files. Multiple files can be specified by repeating the argument for each file.\r\n- `--output`, `-o`: Specify the path where the output atlas image will be saved.\r\n\r\n**Options:**\r\n- `--width`: Specify the width of the atlas. Defaults to `512` pixels. This option is ignored if auto sizing is enabled.\r\n- `--height`: Specify the height of the atlas. Defaults to `512` pixels. This option is ignored if auto sizing is enabled.\r\n- `--padding`, `-p`: Set the padding between images in the atlas. Defaults to `0` pixels.\r\n- `--auto_size`, `-a`: Enable or disable automatic sizing of the atlas dimensions. Defaults to `false`. When enabled, the atlas dimensions are calculated based on the input images.\r\n- `--unified`: Each cell has the same size (based on largest dimensions of image.) Defaults to `false`. [CLI only for now] \r\n\r\n**Examples:**\r\n\r\n1. **Creating an Atlas with Specified Dimensions:**\r\n   Generate an atlas with a specific width and height, ignoring automatic sizing.\r\n   ```bash\r\n   tiny_packer -i image1.png -i image2.png -o atlas.png --width 1024 --height 1024 -a false\r\n   ```\r\n\r\n2. **Creating an Atlas with Automatic Sizing:**\r\n   Generate an atlas where dimensions are automatically calculated.\r\n   ```bash\r\n   tiny_packer -i image1.png -i image2.png -i image3.png -o atlas.png\r\n   ```\r\n\r\n3. **Creating an Atlas with Padding:**\r\n   Generate an atlas with a specified padding between images.\r\n   ```bash\r\n   tiny_packer -i image1.png -i image2.png -o atlas.png -p 10\r\n   ```\r\n\r\n**Additional Tips:**\r\n- Multiple input files should be specified by repeating the `-i` or `--input` option for each file.\r\n- Ensure that file paths are correctly specified and accessible from the command line.\r\n- For best results, images should be of compatible formats and dimensions when padding and auto sizing are considered.\r\n\r\n**Help:**\r\nTo view more information and help regarding the command options, you can use the `--help` flag:\r\n```bash\r\ntiny_packer --help\r\n```\r\n# License\r\nMIT",
    category: "Desktop",
    github_url: "https://github.com/GKaszewski/tiny_packer",
    visit_url: null,
    download_url: null,
    technologies: ["Rust", "Tauri", "React", "TailwindCSS"],
    thumbnails: [],
  },
  {
    id: 7,
    name: "Fleet Compass",
    short_description: "SaaS solution for modern fleet management.",
    description:
      "Fleet Compass is a comprehensive SaaS platform designed to streamline fleet management operations. It provides real-time tracking, analytics, and management tools to help businesses optimize their logistics.",
    category: "Web",
    github_url: null,
    visit_url: "https://fleetcompass.pl/",
    download_url: null,
    technologies: [
      "React",
      "Python",
      "Django",
      "PostgreSQL",
      "PostGIS",
      "TailwindCSS",
    ],
    thumbnails: [],
    commercial: true,
  },
  {
    id: 8,
    name: "Poczuj - Szkoła z Lasu",
    short_description: "Interactive music composition app for children.",
    description:
      'A commissioned project for "Szkoła z Lasu". This application is an interactive tool designed for children, allowing them to compose music that reflects their current emotions. It combines educational values with creative expression, helping young users understand and express their feelings through sound.',
    category: "Web",
    github_url: null,
    visit_url: "https://poczuj.szkolazlasu.pl/",
    download_url: null,
    technologies: ["React"],
    thumbnails: [],
    commercial: true,
  },
  {
    id: 9,
    name: "Codebase to Prompt",
    short_description: "CLI tool to convert codebase context into LLM prompts.",
    description:
      "A Rust-based Command Line Interface (CLI) tool designed to aggregate and format a codebase into a single prompt suitable for Large Language Models (LLMs). This tool streamlines the process of sharing code context with AI assistants.",
    category: "Desktop",
    github_url: "https://github.com/GKaszewski/codebase-to-prompt",
    visit_url: "https://crates.io/crates/codebase-to-prompt",
    download_url: null,
    technologies: ["Rust"],
    thumbnails: [],
  },
  {
    id: 10,
    name: "Parasitic God",
    short_description: "Game Jam entry created in Godot.",
    description:
      "A game created during a Game Jam. It explores themes of cosmic horror and parasitic control. Developed using the Godot Engine.",
    category: "Game",
    github_url: null,
    visit_url: "https://gabrielkaszewski.itch.io/parasitic-god",
    download_url: null,
    technologies: ["Godot", "C#"],
    thumbnails: [],
  },
  {
    id: 11,
    name: "Broberry",
    short_description: "Action-packed Game Jam entry.",
    description:
      "A fun and fast-paced game developed for a Game Jam. Check it out on Itch.io!",
    category: "Game",
    github_url: null,
    visit_url: "https://gabrielkaszewski.itch.io/broberry",
    download_url: null,
    technologies: ["Unity", "C#"],
    thumbnails: [],
  },
  {
    id: 12,
    name: "Chip8 Emulator",
    short_description: "CHIP-8 interpreter written in Rust.",
    description:
      "A fully functional emulator for the CHIP-8 programming language, written in Rust. It demonstrates low-level programming concepts and system emulation.",
    category: "Desktop",
    github_url: "https://github.com/GKaszewski/chip8",
    visit_url: null,
    download_url: null,
    technologies: ["Rust", "Raylib"],
    thumbnails: [],
  },
  {
    id: 13,
    name: "Godot LDtk Importer",
    short_description: "Plugin to import LDtk maps into Godot.",
    description:
      "A tool designed to bridge the gap between the LDtk level editor and the Godot Game Engine. It streamlines the workflow for developers using LDtk for level design.",
    category: "Desktop",
    github_url: "https://github.com/GKaszewski/godot-ldtk-importer",
    visit_url: null,
    download_url: null,
    technologies: ["Godot", "C#"],
    thumbnails: [],
  },
  {
    id: 14,
    name: "Simple Cloudflare DDNS",
    short_description: "Dynamic DNS updater for Cloudflare.",
    description:
      "A lightweight utility to automatically update Cloudflare DNS records with your dynamic IP address. Useful for home labs and self-hosting setups.",
    category: "Api",
    github_url: "https://github.com/GKaszewski/simple_cloudflare_ddns",
    visit_url: null,
    download_url: null,
    technologies: ["Rust"],
    thumbnails: [],
  },
  {
    id: 18,
    name: "K-Launcher",
    short_description: "A Rofi-like application launcher with a plugin system.",
    description:
      "A keyboard-driven application launcher inspired by Rofi. Ships with built-in plugins for launching apps, browsing files, and a calculator. The community can build and share additional plugins. Colors and theme are fully configurable via a config file.\n\n**Technical details:**\n- **Language:** Rust\n- **GUI:** iced",
    category: "Desktop",
    github_url: "https://git.gabrielkaszewski.dev/GKaszewski/k-launcher",
    visit_url: null,
    download_url: null,
    technologies: ["Rust", "iced"],
    thumbnails: ["/images/k-launcher.avif"],
  },
  {
    id: 19,
    name: "K-TV",
    short_description: "Turn your media library into classic broadcast TV.",
    description:
      "K-TV takes your existing media library (Jellyfin, Plex, or local files) and turns it into a classic broadcast TV experience. Users can create channels, define programming blocks, and set up schedules — simulating the feel of live TV from your own collection. Part of the K-Suite.\n\n**Technical details:**\n- **Backend:** Rust\n- **Frontend:** Next.js, TailwindCSS",
    category: "Web",
    github_url: "https://git.gabrielkaszewski.dev/GKaszewski/k-tv",
    visit_url: "https://tv.gabrielkaszewski.dev/",
    download_url: null,
    technologies: ["Rust", "Next.js", "TailwindCSS"],
    thumbnails: ["/images/k-tv.png"],
  },
  {
    id: 20,
    name: "K-Convert",
    short_description:
      "Client-side image and audio converter powered by FFmpeg & WASM.",
    description:
      "K-Convert is a 100% client-side web app for converting images and audio files. All processing happens locally in the browser — no files are ever uploaded to a server. Powered by FFmpeg compiled to WebAssembly.\n\n**Technical details:**\n- **Frontend:** React, TypeScript, TailwindCSS\n- **Processing:** FFmpeg.wasm (WASM)",
    category: "Web",
    github_url: "https://github.com/GKaszewski/k-convert",
    visit_url: "https://convert.gabrielkaszewski.dev/",
    download_url: null,
    technologies: ["React", "TypeScript", "TailwindCSS", "FFmpeg.wasm", "WASM"],
    thumbnails: ["/images/k-convert.avif"],
  },
  {
    id: 21,
    name: "K-Shrink",
    short_description:
      "Wayland clipboard daemon that auto-compresses images on copy.",
    description:
      "K-Shrink is a Wayland clipboard daemon that automatically compresses images the moment you copy them. Copy a 3 MB screenshot, paste a 300 KB WebP — no extra steps required.\n\n**Technical details:**\n- **Language:** Rust\n- **Protocol:** Wayland",
    category: "Desktop",
    github_url: "https://github.com/GKaszewski/k-shrink",
    visit_url: null,
    download_url: "https://aur.archlinux.org/packages/k-shrink",
    technologies: ["Rust", "Wayland"],
    thumbnails: [],
  },
  {
    id: 22,
    name: "Galeria Rumia",
    short_description: "Website for shopping mall in Rumia, Poland.",
    description:
      "A commercial project for a shopping mall in Rumia, Poland. The website provides information about the mall, its stores, events, and promotions. It features a modern design and is built with custom handmade wordpress theme and in-house map plugin.",
    category: "Web",
    github_url: null,
    visit_url: "https://galeriarumia.com/",
    download_url: null,
    technologies: ["WordPress"],
    thumbnails: ["/images/galeria_rumia.avif", "/images/galeria_rumia2.avif"],
    commercial: true,
  },
  {
    id: 25,
    name: "PocketChords",
    short_description:
      "Self-hosted chord chart library for playing music on the go.",
    description:
      "A rip-off of Ultimate Guitar without ads or subscriptions. Import chord sheets from UG HTML, transpose chords (including slash chords like G/B), view piano and guitar chord diagrams — all optimized for phone use while playing.\n\n**Highlights:**\n- Import from Ultimate Guitar URLs or HTML files (bulk import)\n- Server-side transposition with slash chord support\n- Piano keyboard and guitar fretboard chord diagrams\n- Auto-scroll, section navigation, wake lock for hands-free playing\n- Favorites, adjustable font size, capo support\n- JWT auth (register/login/refresh/logout)\n- OpenAPI docs at /docs\n- Single binary serves both API and SPA\n\n**Technical details:**\n- **Architecture:** Hexagonal (Ports & Adapters) with DDD/CQRS\n- **Backend:** Rust, Axum, SQLx\n- **Frontend:** React Router 7 (SPA), TailwindCSS, shadcn/ui\n- **Database:** SQLite\n- **Auth:** JWT + Argon2",
    category: "Web",
    github_url: "https://git.gabrielkaszewski.dev/GKaszewski/pocket-chords",
    visit_url: "https://chords.gabrielkaszewski.dev/",
    download_url: null,
    technologies: [
      "Rust",
      "Axum",
      "React",
      "TailwindCSS",
      "SQLite",
      "Docker",
    ],
    thumbnails: [],
  },
  {
    id: 24,
    name: "Movies Diary",
    short_description:
      "Self-hosted movie logging with ActivityPub federation.",
    description:
      "A self-hosted, server-side rendered movie logging system with a full REST API. Built entirely in Rust with no JavaScript in the HTML interface — just HTML forms and an RSS feed.\n\n**Highlights:**\n- Immutable, append-only viewing ledger (tracks re-watches)\n- ActivityPub federation — follow remote users, broadcast reviews as federated Notes, shared inbox, paginated outbox\n- Full-text search via SQLite FTS5 or PostgreSQL tsvector + GIN\n- Background poster fetching, TMDB enrichment (cast, crew, genres, box office), image conversion to AVIF/WebP\n- File importer: CSV, TSV, JSON, XLSX from Letterboxd, IMDb, etc.\n- Dual database support: SQLite and PostgreSQL\n- Terminal UI client\n- OpenAPI documentation (Swagger UI + Scalar)\n\n**Technical details:**\n- **Architecture:** Hexagonal (Ports & Adapters) with DDD\n- **Backend:** Rust, Axum, SQLx\n- **Templates:** Askama (SSR)\n- **Event bus:** SQLite/PostgreSQL queue or NATS JetStream\n- **Federation:** ActivityPub (AP)",
    category: "Web",
    github_url: "https://github.com/GKaszewski/movies-diary",
    visit_url: "https://movies.gabrielkaszewski.dev/",
    download_url: null,
    technologies: [
      "Rust",
      "Axum",
      "SQLite",
      "PostgreSQL",
      "ActivityPub",
      "Askama",
      "NATS",
      "Docker",
    ],
    thumbnails: ["/images/movies-diary.webp"],
  },
  {
    id: 23,
    name: "Pixel palette colorizer",
    short_description:
      "CLI tool that changes image colors to fit a given palette.",
    description:
      "This tool was created because I was lazy to change palettes of pixel art to match the style of my game. Usage is pretty straightforward, you give the tool a palette and images you want to colorize, and it will output the colorized images, you can also specify the color space to use for color matching.",
    category: "Desktop",
    github_url: "https://github.com/GKaszewski/pixel-palette-colorizer",
    visit_url: null,
    download_url:
      "https://github.com/GKaszewski/pixel-palette-colorizer/releases",
    technologies: ["Rust"],
    thumbnails: [],
  },
];
