Skip to content

Add landing page with auto-generated screenshots#63

Open
danbim wants to merge 17 commits intomainfrom
landing-page
Open

Add landing page with auto-generated screenshots#63
danbim wants to merge 17 commits intomainfrom
landing-page

Conversation

@danbim
Copy link
Owner

@danbim danbim commented Feb 2, 2026

Summary

  • Add public landing page (landing_page/index.html) with Tailwind CDN, ocean gradient theme
  • Organize features by audience: Judges, Head Judges, Spectators
  • Desktop + mobile screenshots for Judges and Spectators, desktop only for Head Judges
  • Playwright E2E tests in e2e/ generate screenshots from seeded app
  • GitHub Actions workflow auto-regenerates screenshots on push to main
  • GitHub Actions workflow deploys landing page to GitHub Pages
  • Landing page linked from README.md
  • CLAUDE.md updated with maintenance instructions for LLM agents

Note: This branch is based on neverthrow (PR #62). Merge that first, then this.

Test plan

  • Open landing_page/index.html in browser - verify layout and styling
  • Run cd e2e && npx playwright test locally with seeded app - verify all screenshots generated
  • Verify screenshots appear correctly in the landing page
  • After merge, verify GitHub Pages deployment workflow runs
  • After merge, verify screenshot generation workflow runs
  • Verify site is live at https://danbim.github.io/ws-scoring/

🤖 Generated with Claude Code

danbim and others added 16 commits January 31, 2026 09:27
…lt types

Domain services (HeatService, generateBracketForDivision) now return
Promise<Result<T, E>> instead of throwing, making error paths explicit
and type-safe. API handlers use unwrapOrThrow() at the oRPC boundary
and result.isErr() checks in legacy REST routes.

- Add neverthrow dependency and src/domain/result.ts re-export
- Convert 6 HeatService methods and generateBracketForDivision to Result
- Add HeatServiceError/BracketServiceError union types, TooManyParticipantsError
- Create unwrapOrThrow() utility for oRPC handlers
- Simplify domainErrorMapper middleware to infrastructure-error safety net
- Fix heat-repository to return early/empty instead of throwing generic errors
- Map HeatDoesNotExistError and ScoreNotFoundError to 404 (was 400)
- Update all domain, integration, and middleware tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Covers page structure, Playwright screenshot generation, CI workflow,
GitHub Pages deployment, and maintenance instructions for LLMs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
11 tasks covering HTML page, Playwright setup, seed users, screenshot
spec, CI workflow, README/CLAUDE.md updates, and GitHub Pages config.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Static landing page for GitHub Pages with ocean blue/teal gradient theme,
sections for judges, head judges, and spectators, screenshot placeholders,
and responsive layout using Tailwind CSS CDN.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add scripts/db/seed-users.ts that creates judge1, judge2, and headjudge
test users without interactive prompts, for use in CI and local E2E setup.
Skips users that already exist. Add db:seed:users npm script.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add isolated e2e/ directory with its own package.json, Playwright config,
and TypeScript config for landing page screenshot generation. Update
.gitignore to exclude e2e build artifacts, node_modules, and lock files.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Uses the modern Actions-based Pages deployment since the classic
source.path only supports / or /docs, not /landing_page.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Run with: bun run test:e2e

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Reads VITE_DEV_PORT and PORT from .env (bun auto-loads it)
so E2E tests work in worktrees with non-default ports.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…env vars

Simplify database configuration by removing support for the full
connection string and requiring individual components:
- POSTGRES_HOST (default: localhost)
- POSTGRES_PORT (default: 5432)
- POSTGRES_USER (required)
- POSTGRES_PASSWORD (required)
- POSTGRES_DB (required)

Updated:
- src/infrastructure/db/index.ts
- drizzle.config.ts
- scripts/db/reset.ts
- docker-compose.yml
- docker-compose.dev.yml
- .github/workflows/screenshots.yml
- .env.example
- README.md
- scripts/worktree-init.sh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@gitguardian
Copy link

gitguardian bot commented Feb 4, 2026

⚠️ GitGuardian has uncovered 2 secrets following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secrets in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
26794660 Triggered Generic Password 31a218f docker-compose.dev.yml View secret
26794660 Triggered Generic Password 31a218f docker-compose.dev.yml View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secrets safely. Learn here the best practices.
  3. Revoke and rotate these secrets.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant