summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
10 daystrigger redeployyyamashita-0/+0
10 daysFix mobile layout for iPhone-sized viewportsyyamashita-22/+22
- Stack header vertically on mobile (flex-col sm:flex-row) to prevent logo+nav overflow - Hide venue and price columns in list/row views on mobile to give title room - Shrink date/time columns on mobile (w-24 sm:w-32, w-20 sm:w-28) - Make keyword filter input full-width on mobile (w-full sm:w-52) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10 daysAdd F.A.D YOKOHAMA scraperyyamashita-0/+179
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10 daysAdd Claude Code settings with bypass permissions modeyyamashita-0/+6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10 daysFix scrapers returning 0 events for 4 venuesyyamashita-184/+132
Rewrote selectors to match actual HTML structure after inspecting each site: - LIQUID ROOM: article selector, date extracted from URL (_YYYYMMDD suffix) - WWW/WWW X: article.column selector, month from li.month nav, day rollover detection - 新宿 LOFT: section.block_schedule_list links, full date from time div.year/month/day - CLUB QUATTRO: li[data-event-date] with ISO date attribute, jp-label time parsing Result: 0件 → LIQUID ROOM 25件 / WWW 48件 / LOFT 13件 / QUATTRO 24件 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10 daysAdd CLAUDE.md with architecture and development guidanceyyamashita-0/+332
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10 daysAdd 5 new venue scrapers; extract artist info for WARP, shibuya-o, MOON ↵yyamashita-65/+621
STEP, mod New scrapers: Fever 下北沢, Nine Spices 下北沢, 西荻窪 JAM, mod 柴崎, 中野 MOON STEP Artist extraction added/fixed: - warp-kichijoji: parse div.w-flyer (clone + remove nested notes-wrapper) - shibuya-o: rewrite to scrape each sub-venue; artist from li.p-scheduled-card__artist-item - moon-step-nakano: parse 出演 section from WordPress API description HTML - mod-shibasaki: fetch individual event pages in parallel; handle live:/出演:/・ bullet formats Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysAdd date-based event view grouped by venueyyamashita-0/+193
New route /events/by-date shows events for a single day (default today) with prev/next day navigation and a date picker, grouped by livehouse. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysAdd list view toggle to event listingyyamashita-2/+98
Adds EventListRow component and a card/list toggle (persisted in ?view= URL param) so users can switch between the grid card layout and a compact single-row list layout. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysPlaywright scraping for FLAT/Pitbar; web UI display-onlyyyamashita-136/+302
- Install Playwright + Chromium; add shared browser singleton (playwright.server.ts) - Rewrite flat-nishiogikubo scraper: Wix calendar via headless browser, month navigation via date picker, extracts .WPczEB/.ExCBIq selectors - Rewrite pitbar-nishiogikubo scraper: freecalend.com via headless browser, parses cal-{member}-{year}-{month}-{day} cell IDs - scraper-runner: close shared browser after each run with closeBrowser() - Remove all scrape trigger buttons from web UI (events index, venues page); remove /api/scrape and /api/scrape-status from routes.ts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysAsync scraping, scrape_logs, and CLIyyamashita-87/+861
Background scraping: - POST /api/scrape returns 202 immediately with run_id; scraping runs async - GET /api/scrape-status?run_id=xxx polls for results per venue - scrape_logs table: per-venue status (running/ok/error), events_saved, error, timestamps CLI (npm run scrape): - npm run scrape — 全会場をスクレイプ、結果を色付きで出力 - npm run scrape liquid-room — 特定会場のみ - npm run scrape -- --list — 登録済み会場一覧を表示 - エラー時は exit code 1 + エラーメッセージを dim 表示 Venues page: - 最終スクレイプ日時・成否をインラインで表示 - 会場ごとの「更新」ボタンを追加 Bug fix: upsertEvent に description/optional fields のデフォルト値を設定し better-sqlite3 の "Missing named parameter" エラーを解消 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysAdd 4 new venue scrapers: Meets 大塚, WARP 吉祥寺, FLAT 西荻窪, ↵yyamashita-9/+338
Pitbar 西荻窪 meets-otsuka: rinky.info プラットフォーム。div.blog-entry.event-wrap[event-date] から日付・タイトル・出演者・時間・価格・チケットURLを取得。 warp-kichijoji: WordPress カスタムテーマ。<h3>YYYY<br/><span>MM</span></h3> で 年月を取得、article.schedules-box から各イベントをパース。 flat-nishiogikubo: Wix サイトのため JS レンダリング必須。エラーを返す プレースホルダー実装(Playwright 等への移行が必要)。 pitbar-nishiogikubo: freecalend.com (mem25771) から取得を試みるが、 ボット遮断のため現状はエラー。URL パターン・代替策をコメントに記載。 SCRAPE_TARGETS.md に状態列(✅/⚠️)を追加。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysAdd SCRAPE_TARGETS.md listing event scraping targetsyyamashita-0/+34
Documents all registered venues, their schedule URLs, scraper file paths, and instructions for running scrapes and adding new venues. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysLimit scrape window and default event list to ~1 monthyyamashita-10/+48
Scraper runner now filters events to today + 35 days before upserting, so the DB only holds the upcoming month of events. Event list loader defaults date_from/date_to to the same window when no query params are set, and passes the values down to FilterBar so the date inputs are pre-filled on first load. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysAdd Tokyo livehouse event aggregator serviceyyamashita-563/+3100
Full-stack React Router v7 app that scrapes event listings from major Tokyo live venues (Liquid Room, WWW/WWW X, Shibuya O-EAST, Shinjuku LOFT, Club Quattro) and stores them in SQLite for browsing and search. - Modular scraper architecture: add a new venue by dropping a file in app/scrapers/ and registering it in index.ts - Routes: /events (filter by keyword/venue/date), /events/:id, /venues, GET /api/scrape - EventCard shows artist, date/time, venue, ticket URL, and fee - Post-scrape per-venue Markdown files generated to events/ (dev reference) - /add-livehouse Claude Code skill defined in .claude/commands/ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysInitial commit from create-react-routeryyamashita-0/+4595