// Portfolio content — edit here to update the whole site.

const DJIBY = {
  name: "Djiby",
  handle: "Lancelcode",
  role: "Software Developer",
  location: "Edinburgh, UK",
  bio: "I work as a web developer and value everything it has taught me about shipping real products. Along the way, though, I noticed the part I enjoyed most was always whatever sat closest to the machine, so my focus is steadily shifting toward infrastructure, cybersecurity, and high-performance computing: FPGAs and other high-frequency technologies.",
  shortBio: "Software developer heading toward infrastructure, security & HPC. Edinburgh.",
  yearsExp: 1,
  available: true,
  email: "djibysowrebollo@gmail.com",
  github: "Lancelcode",
  linkedin: "Djiby Sow",
  twitter: "Lancelcode",

  skills: [
    { name: "JavaScript", level: 88, years: 1, tags: ["React", "Node"],        color: "#F7DF1E" },
    { name: "TypeScript", level: 80, years: 1, tags: ["Next.js", "tRPC"],      color: "#3178C6" },
    { name: "Java",       level: 82, years: 1, tags: ["Spring", "JVM"],        color: "#f89820" },
    { name: "Python",     level: 78, years: 1, tags: ["AI", "CLI"],            color: "#3776AB" },
    { name: "C",          level: 70, years: 1, tags: ["Systems", "C99"],       color: "#5C6BC0" },
    { name: "PHP",        level: 72, years: 1, tags: ["MySQL", "PHPUnit"],     color: "#777BB4" },
    { name: "React",      level: 84, years: 1, tags: ["Hooks", "Next.js"],     color: "#61DAFB" },
    { name: "HTML / CSS", level: 92, years: 1, tags: ["Tailwind", "Sass"],     color: "#E34F26" },
    { name: "PostgreSQL", level: 74, years: 1, tags: ["SQL", "Indexes"],       color: "#336791" },
    { name: "Docker",     level: 68, years: 1, tags: ["Compose", "CI"],        color: "#2496ED" },
    { name: "Git",        level: 82, years: 1, tags: ["GitHub", "CI/CD"],      color: "#F05032" },
    { name: "Spring Boot",level: 76, years: 1, tags: ["JWT", "REST"],          color: "#6DB33F" },
  ],

  // Projects. The Skills cards link here: clicking a skill filters this list
  // to projects done with that technology, then a 60s countdown returns to the
  // default view. To curate which projects are the default ("ones I'm proud
  // of"), add `featured: true` to the ones you want shown by default — if any
  // are flagged, only those show by default; otherwise ALL projects show.
  projects: [
    {
      id: "01",
      title: "nvvri",
      year: "2026",
      tags: ["TypeScript", "Next.js", "React"],
      blurb: "Nursery finder with AI natural language search, filter by area, age, Ofsted & price.",
      role: "Full-stack",
      color: "#22d3ee",
      status: ["Completed", "Live"],
      highlights: [
        "AI-powered natural language search for nurseries.",
        "Filter by area, age range, Ofsted rating & price.",
        "Built with Next.js 15, React 19 & TypeScript — no CSS frameworks.",
      ],
      live: "https://nvvri.co.uk/",
      repo: "github.com/Lancelcode/nvvri",
    },
    {
      id: "02",
      title: "PulseDB",
      year: "2026",
      tags: ["C", "C99", "Systems"],
      blurb: "A Redis server reimplemented from scratch in C99.",
      role: "Systems",
      color: "#a78bfa",
      status: "Completed",
      highlights: [
        "Full RESP protocol implementation.",
        "50+ commands — strings, lists, hashes, sorted sets, streams, transactions, geo.",
        "No libraries. No dependencies.",
      ],
      repo: "github.com/Lancelcode/PulseDB",
    },
    {
      id: "03",
      title: "GreenScore",
      year: "2026",
      tags: ["PHP", "MySQL", "Bootstrap"],
      blurb: "Full-stack sustainability tracking & certification platform.",
      role: "Full-stack",
      color: "#34d399",
      status: ["Completed"],
      highlights: [
        "42 PHPUnit tests, 63 assertions — all passing.",
        "CSRF/session/rate-limiting security baked in throughout.",
        "Admin dashboard + digital certificate generation.",
      ],
      repo: "github.com/Lancelcode/GreenScore",
    },
    {
      id: "04",
      title: "Project Manager API",
      year: "2026",
      tags: ["Java", "Spring Boot", "PostgreSQL", "Docker"],
      blurb: "Production-ready REST API built from scratch in Java 21 + Spring Boot.",
      role: "Backend",
      color: "#f59e0b",
      status: "In progress",
      highlights: [
        "JWT auth with full token lifecycle.",
        "PostgreSQL + Docker + CI/CD pipeline.",
        "Full test coverage from day one.",
      ],
      repo: "github.com/Lancelcode/project-manager-api",
    },
    {
      id: "05",
      title: "claudecode",
      year: "2026",
      tags: ["Python", "AI", "CLI"],
      blurb: "An AI coding assistant that runs in your terminal.",
      role: "AI tool",
      color: "#7c5cff",
      status: "In progress",
      highlights: [
        "Give it a prompt — it reads your code and figures out what needs doing.",
        "Executes changes autonomously inside your project.",
        "Built in Python, runs fully in the terminal.",
      ],
      repo: "github.com/Lancelcode/claudecode",
    },
    {
      id: "06",
      title: "Lex",
      year: "2026",
      tags: ["Rust", "WebAssembly", "Compilers"],
      blurb: "A small functional language with type inference — compiled to WebAssembly, plays in the browser.",
      role: "Compiler",
      color: "#ec4899",
      status: ["Unavailable", "Planning"],
      highlights: [
        "Hand-written lexer, parser & Hindley-Milner type checker.",
        "Compiles to WebAssembly — runs in any browser, no server.",
        "Interactive playground with live error squiggles & inferred types.",
      ],
      repo: "github.com/Lancelcode/lex",
    },
  ],

  experience: [
    {
      when: "2025 — 2025",
      role: "Full Stack Developer Contractor",
      org: "Vaste",
      where: "Edinburgh",
      bullets: [
        "Contributed to the backend of a fintech platform for biofuel trading in a highly regulated market",
        "Built and integrated REST APIs consumed by frontend trading interfaces",
        "Developed autonomy delivering in a fast moving early stage environment with limited oversight",
      ],
    },
    {
      when: "2024 — 2028",
      role: "Computer Science BSc",
      org: "Edinburgh Napier University",
      where: "Edinburgh",
      bullets: [
        "Targeting first class honours",
        "Relevant modules: Algorithms, Distributed Systems, Compilers",
        "Final year project: a Rust OS kernel with static analysis for known vulnerabilities and AI-driven anomaly detection for unknown threats",
      ],
    },
    {
      when: "2023 — present",
      role: "Independent Developer",
      org: "Personal Projects",
      where: "Edinburgh",
      bullets: [
        "Built PulseDB, a Redis server reimplemented in C99 with 50+ commands, full RESP protocol and zero dependencies",
        "Built nvvri, a nursery finder with AI natural language search using Next.js 15, React 19 and TypeScript",
        "Built GreenScore, a full stack sustainability platform with 42 PHPUnit tests, security hardening and admin dashboard",
      ],
    },
  ],

  testimonials: [
    {
      quote: "Djiby ships fast and writes code I actually want to maintain. Rare combo at any level.",
      who: "Aisha M.",
      role: "Engineering Lead",
    },
    {
      quote: "Picked up our stack in a week. Asked the right questions. Hire him while you can.",
      who: "Tom R.",
      role: "Studio Director",
    },
    {
      quote: "Genuinely cares about the user. That shows up in every detail of his work.",
      who: "Priya K.",
      role: "Product Designer",
    },
  ],

  posts: [
    {
      title: "Rebuilding Redis in C99: what it taught me about memory",
      link: "posts/rebuilding_redis_in_c99.html",
      date: "May 2026",
      read: "7 min",
      kicker: "Systems",
    },
    {
      title: "From the browser to the metal: finding my lane",
      link: "posts/from_the_browser_to_the_metal.html",
      date: "Apr 2026",
      read: "5 min",
      kicker: "Reflection",
    },
    {
      title: "Why I stopped reaching for frameworks first",
      link: "posts/why_i_stopped_reaching_for_frameworks_first.html",
      date: "Mar 2026",
      read: "6 min",
      kicker: "Opinion",
    },
  ],

  facts: [
    { k: "Based", v: "Edinburgh" },
    { k: "Years", v: "1+" },
    { k: "Stack", v: "Java · JS" },
    { k: "Status", v: "Available" },
  ],
};

window.DJIBY = DJIBY;
