Skip to content

cmpdchtr/cmpdchtr.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Портфоліо (root) — як це працює і як налаштувати

Цей репозиторій містить простий мінімалістичний сайт‑портфоліо у стилі gruvbox, призначений для розгортання на GitHub Pages. Я описую, як працює автоматичне сканування підпапок, які файли шукаються, і як ти можеш налаштувати визначення власника/репо та поведінку автодетекції.


Коротко — що відбувається

  • Головна сторінка (root) — index.html — містить логіку, яка намагається знайти підпапки в корені репозиторію та відобразити їх як "проєкти".
  • Для кожної підпапки сайт намагається отримати короткий опис: спочатку локально (через ./<folder>/index.html), потім через GitHub API (шукає README.md, readme.md, index.html в цій папці).
  • Якщо нічого не знайдено, папка буде показана лише за назвою і посиланням на ./<folder>/.
  • UI має кнопки: переключити тему, оновити список, перемикати режим роботи (GitHub API vs локальний режим), показати/приховати "сховані" папки.
  • Для швидкої діагностики у консолі браузера доступний об'єкт window.pg (див index.html / script.js), який дозволяє вручну викликати сканування.

Визначення власника/репозиторію (owner / repo)

Скрипт намагається виявити owner та repo в такому порядку:

  1. Метатеги в index.html:

    • Якщо ти хочеш вказати явно, додай у <head>:
      • <meta name="gh-owner" content="твій-github-логін">
      • <meta name="gh-repo" content="назва-репо">
    • Цей варіант найнадійніший, особливо коли сайт не хоститься як username.github.io.
  2. Якщо сайт хоститься як user page — username.github.io:

    • Скрипт виводить owner = username, repo = username.github.io.
  3. Фallback через структуру URL:

    • Якщо сайт розміщений під шляхом /owner/repo/, скрипт спробує витягти owner і repo з першої і другої частин шляху.

Якщо визначити репозиторій не вдається — скрипт переходить до локального сканування (див. далі).


Як сайт "сканує" папки (автодетекція)

  • Перш за все він намагається використати GitHub API (якщо дозволено і обрано режим useApi).
    • Запит: GET https://api.github.com/repos/{owner}/{repo}/contents/
    • Отримує список елементів в корені репо, фільтрує елементи типу dir.
    • Для кожної директорії може додатково робити запити на вміст файлів: README.md, index.html.
  • Якщо GitHub API недоступний (rate limit, CORS чи заблоковано), скрипт:
    • Повертається до локального підходу: робить HEAD/GET запити до ./<folder>/index.html, щоб перевірити наявність сторінки.
    • Може використовувати локальний файл index.json (якщо ти бажаєш вручну вказати список папок), наприклад:
      • index.json:
        • {"folders": ["proj-a", "blog", "IWantSomeCatGirls"]}

Як додати нову "сторінку/проєкт"

  1. Створи підпапку в корені репо, наприклад projects/my-cool-site/.
  2. Всередині папки має бути файл index.html (рекомендовано) або README.md (GitHub API).
    • index.html дозволяє показати прев'ю, <title> і мета-опис без API.
    • README.md читатиметься через GitHub API (при успішному використанні API).
  3. Після додавання — відкрий головну сторінку і натисни "Оновити" (Refresh) або виконай window.pg.scan() в консолі.

Приклади корисних змін / кастомізації

  • Явне вказання репозиторію (додай в index.html):
    • <meta name="gh-owner" content="cmpdchtr">
    • <meta name="gh-repo" content="cmpdchtr.github.io">
  • Вручну вказати список папок — створи index.json в корені:
    • {"folders": ["IWantSomeCatGirls", "projects", "docs"]}
  • Змінити кольори/тему — редагуй style.css в корені (root style.css для головної сторінки). Підсторінки мають свої стилі.

Обмеження та зауваження

  • GitHub API:
    • Публічний GitHub API підтримує CORS, але існують обмеження за кількістю запитів (rate limits). Анонімні запити мають низький ліміт — при інтенсивному використанні може виникнути помилка.
    • Якщо репозиторій приватний — клієнтська автентифікація з токеном не рекомендується в статичному сайті (токен буде доступний у браузері). Для приватних репо потрібен серверний проксі або інший підхід.
  • CORS / Браузерні обмеження:
    • Локальні fetch('./folder/index.html') працюють лише якщо файл доступний по тій же області (same-origin) — це нормально для GitHub Pages.
  • Безпека:
    • Не додавай секретні токени у фронтенд.
    • Уникай виконання стороннього JS зі знайдених підпапок автоматично (зміст підпапки використовується лише для читання title/description).

Де шукати і змінювати код

  • Головна сторінка та логіка автосканування: index.html (root).
  • Скрипт: script.js (root) — тут знаходиться логіка визначення репо, запитів до GitHub API і локального сканування.
  • Стилі: style.css (root) — gruvbox‑палітра і компоненти UI.
  • Існуючі підпапки в репо (наприклад IWantSomeCatGirls/) мають свої index.html, style.css та script.js за потреби.

Налагодження (debug)

  • Відкрий DevTools → Console.
  • Виклич:
    • window.pg.scan() — вручну примусити сканування.
    • window.pg.setPreferApi(false) — заборонити використання GitHub API (форсувати локальний режим).
    • window.pg.setShowHidden(true) — показати сховані папки.
  • Статус дій скрипту видно у бічній панелі (aside) і внизу секцій.

Поради для кращої сумісності

  • Кожна "папка-проєкт" повинна мати хоча б index.html або README.md для гарного прев'ю.
  • У index.html кожної підпапки рекомендую додати <title> та <meta name="description" content="..."> — скрипт зчитає ці поля й покаже опис в карточці.
  • Щоб була автоматична детекція власника, хости сайт як user page (username.github.io) — тоді визначення owner/repo працює без додаткових метатегів.

Якщо хочеш, я можу:

  • Згенерувати чіткий приклад index.json або шаблон index.html для підпапки.
  • Допомогти додати README в кожну підпапку із шаблоном для кращого прев'ю.
  • Письмово показати приклад метатегів, якщо треба вставити їх прямо в index.html.

Пиши, що саме ти хочеш покращити або автоматизувати далі — я допоможу конкретним кодом та інструкціями.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published