{"id":31101104,"url":"https://github.com/ruslanlap/ruslanlap_buymeacoffe","last_synced_at":"2026-08-04T01:31:43.372Z","repository":{"id":314110253,"uuid":"987695835","full_name":"ruslanlap/ruslanlap_buymeacoffe","owner":"ruslanlap","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-10T14:50:27.000Z","size":2451,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-10T18:29:45.483Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ruslanlap.github.io/ruslanlap_buymeacoffe/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruslanlap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-21T12:59:27.000Z","updated_at":"2025-09-10T14:49:32.000Z","dependencies_parsed_at":"2025-09-10T18:30:21.319Z","dependency_job_id":"825ebdc2-dba7-4545-a5bf-a03b20a6a744","html_url":"https://github.com/ruslanlap/ruslanlap_buymeacoffe","commit_stats":null,"previous_names":["ruslanlap/ruslanlap_buymeacoffe"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ruslanlap/ruslanlap_buymeacoffe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslanlap%2Fruslanlap_buymeacoffe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslanlap%2Fruslanlap_buymeacoffe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslanlap%2Fruslanlap_buymeacoffe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslanlap%2Fruslanlap_buymeacoffe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruslanlap","download_url":"https://codeload.github.com/ruslanlap/ruslanlap_buymeacoffe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslanlap%2Fruslanlap_buymeacoffe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275505193,"owners_count":25476956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-16T02:00:10.229Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-16T23:50:10.910Z","updated_at":"2026-08-04T01:31:43.360Z","avatar_url":"https://github.com/ruslanlap.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Buy Me a Coffee - Support Page\n\nСучасна веб-сторінка для підтримки проєкту з багатомовністю, анімаціями та адаптивним дизайном.\n\n## 🛠 Технології\n\n- **React 19** + **TypeScript** - UI фреймворк\n- **Vite 7** - збірщик та dev сервер\n- **Tailwind CSS 4** - стилізація\n- **shadcn/ui** - UI компоненти на базі Radix UI\n- **Framer Motion** - анімації\n- **React Router** (HashRouter) - маршрутизація\n- **TanStack Query** - управління станом\n- **next-themes** - теми (dark/light)\n\n## 📋 Вимоги\n\n- **Node.js** \u003e= 20.x\n- **npm** або **bun** (проєкт підтримує обидва)\n\n## 🚀 Розробка (Development)\n\n### Встановлення залежностей\n\n```bash\n# Використовуючи npm\nnpm install\n\n# Або використовуючи bun (якщо встановлено)\nbun install\n```\n\n### Запуск dev сервера\n\n```bash\nnpm run dev\n```\n\nСервер запуститься на `http://localhost:8080` (або наступному доступному порту).\n\n**Особливості dev режиму:**\n- Hot Module Replacement (HMR) - зміни відображаються миттєво\n- Source maps для дебагу\n- Швидка збірка завдяки Vite\n- Автоматичне відкриття браузера (залежить від налаштувань)\n\n### Структура проєкту\n\n```\nsrc/\n├── components/          # React компоненти\n│   ├── ui/             # shadcn/ui компоненти\n│   ├── HeroSection.tsx # Головна секція\n│   ├── DonationOptions.tsx # Опції донату\n│   └── ...\n├── pages/              # Сторінки\n│   ├── Index.tsx       # Головна сторінка\n│   └── NotFound.tsx    # 404 сторінка\n├── contexts/           # React контексти\n│   └── LanguageContext.tsx # Контекст мови (uk/en)\n├── hooks/              # Кастомні хуки\n├── lib/                # Утиліти\n├── img/                # Зображення\n└── icons/              # Іконки\n```\n\n### Налаштування dev сервера\n\nУ `vite.config.ts`:\n- **Порт**: 8080 (можна змінити)\n- **Host**: `::` (слухає на всіх інтерфейсах)\n- **Base path**: `/ruslanlap_buymeacoffe/` (для GitHub Pages)\n\n### Лінтінг та форматування\n\n```bash\n# Перевірка коду ESLint\nnpm run lint\n\n# Автоматичне форматування Prettier\nnpm run format\n```\n\n## 🏗 Production (Збірка та деплой)\n\n### Локальна збірка\n\n```bash\n# Production збірка (оптимізована)\nnpm run build\n\n# Development збірка (з source maps)\nnpm run build:dev\n```\n\nЗбірка створює папку `dist/` з оптимізованими файлами:\n- Мінімізований JavaScript\n- Оптимізовані CSS\n- Оптимізовані зображення\n- Tree-shaking (видалення невикористаного коду)\n\n### Перегляд production збірки локально\n\n```bash\nnpm run preview\n```\n\nЦе запускає локальний сервер для перевірки production збірки перед деплоєм.\n\n### Деплой на GitHub Pages\n\n#### Автоматичний деплой (через GitHub Actions)\n\nПроєкт має налаштований GitHub Actions workflow (`.github/workflows/deploy.yml`):\n\n1. **Автоматичний деплой** відбувається при push в гілку `master`\n2. Workflow автоматично:\n   - Встановлює Node.js 20\n   - Встановлює залежності (`npm ci`)\n   - Збирає проєкт (`npm run build`)\n   - Створює SPA fallback (`dist/404.html`)\n   - Деплоїть на GitHub Pages\n\n**Щоб увімкнути автоматичний деплой:**\n\n1. Переконайтеся, що у репозиторії увімкнено GitHub Pages:\n   - Settings → Pages → Source: `GitHub Actions`\n\n2. Push в гілку `master`:\n```bash\ngit push origin master\n```\n\n#### Ручний деплой\n\n```bash\n# Збірка проєкту\nnpm run predeploy\n\n# Деплой на GitHub Pages (через gh-pages)\nnpm run deploy\n```\n\n**Примітка:** Для ручного деплою потрібен пакет `gh-pages`, який вже встановлений.\n\n### Налаштування base path\n\nЯкщо репозиторій має іншу назву, змініть `base` в `vite.config.ts`:\n\n```typescript\nexport default defineConfig({\n  base: \"/ваша-назва-репо/\", // Змініть на вашу назву\n  // ...\n});\n```\n\n## 🌍 Багатомовність\n\nПроєкт підтримує дві мови:\n- **Українська** (uk) - за замовчуванням\n- **Англійська** (en)\n\nПереклади знаходяться в `src/contexts/LanguageContext.tsx`.\n\n**Додавання нової мови:**\n\n1. Додайте мову до типу `Language`:\n```typescript\nexport type Language = \"uk\" | \"en\" | \"нова_мова\";\n```\n\n2. Додайте переклади в об'єкт `translations`:\n```typescript\nconst translations: Record\u003cLanguage, Record\u003cTranslationKey, string\u003e\u003e = {\n  // ... існуючі мови\n  нова_мова: {\n    heroTitle: \"Переклад\",\n    // ... інші ключі\n  }\n};\n```\n\n## 🎨 Темна/світла тема\n\nПроєкт використовує `next-themes` для перемикання тем. Тема зберігається в `localStorage` та синхронізується з системними налаштуваннями.\n\n## 📦 Скрипти package.json\n\n| Скрипт | Опис |\n|--------|------|\n| `npm run dev` | Запуск dev сервера на порту 8080 |\n| `npm run build` | Production збірка |\n| `npm run build:dev` | Development збірка (з source maps) |\n| `npm run preview` | Перегляд production збірки локально |\n| `npm run lint` | Перевірка коду ESLint |\n| `npm run format` | Форматування коду Prettier |\n| `npm run predeploy` | Збірка перед деплоєм |\n| `npm run deploy` | Деплой на GitHub Pages |\n\n## 🔧 Налаштування\n\n### Зміна порту dev сервера\n\nУ `vite.config.ts`:\n```typescript\nserver: {\n  port: 3000, // Змініть на потрібний порт\n}\n```\n\n### Аліаси шляхів\n\nПроєкт використовує аліас `@` для папки `src/`:\n```typescript\nimport Component from \"@/components/Component\";\n// замість\nimport Component from \"../../components/Component\";\n```\n\n## 🐛 Вирішення проблем\n\n### Проблеми з портом 8080\n\nЯкщо порт зайнятий, Vite автоматично запропонує наступний доступний порт.\n\n### Проблеми з деплоєм на GitHub Pages\n\n1. Переконайтеся, що `base` в `vite.config.ts` відповідає назві репозиторію\n2. Перевірте, що GitHub Pages увімкнено в налаштуваннях репозиторію\n3. Переконайтеся, що workflow файл знаходиться в `.github/workflows/`\n\n### Проблеми з залежностями\n\n```bash\n# Видаліть node_modules та lock файли\nrm -rf node_modules package-lock.json\n\n# Встановіть заново\nnpm install\n```\n\n## 📝 Додаткові ресурси\n\n- [Vite Documentation](https://vitejs.dev/)\n- [React Documentation](https://react.dev/)\n- [Tailwind CSS Documentation](https://tailwindcss.com/)\n- [shadcn/ui Documentation](https://ui.shadcn.com/)\n- [GitHub Pages Documentation](https://docs.github.com/en/pages)\n\n## 📄 Ліцензія\n\nПроєкт розроблений з любов'ю 💜\n\n---\n\n**Автор:** ruslanlap\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruslanlap%2Fruslanlap_buymeacoffe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruslanlap%2Fruslanlap_buymeacoffe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruslanlap%2Fruslanlap_buymeacoffe/lists"}