vikingowl 05ef985851 feat: Complete scoreboard with avatar, score, and player color indicators
Enhance match details scoreboard with additional visual information for better
player identification and context.

## Changes

### Avatar Column
- Display player profile images in first column (40x40px)
- Rounded style with border for consistent appearance
- Non-sortable for visual continuity

### Score Column
- Show in-game score for each player
- Sortable to identify top performers
- Monospace font for numeric alignment

### Player Color Indicators
- Add colored dot next to player names
- Map CS2 player colors (green, yellow, purple, blue, orange, grey) to hex values
- Visual indicator helps identify specific players during match review

## Implementation Details

Created `playerColors` mapping object to convert CS2's player color names to
hex color codes for display. Updated Player name column render function to
include inline colored dot element.

All columns maintain existing team color styling (terrorist/CT) for consistency.

Note: MVP and K/D ratio columns already existed in scoreboard.

This completes Phase 2 Feature 1 - scoreboard now provides comprehensive player
information at a glance.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 20:05:51 +01:00
2022-01-31 01:25:06 +01:00

CS2.WTF

SvelteKit TypeScript Tailwind CSS GPL3 Liberapay status-badge

Statistics for CS2 matchmaking matches - A complete rewrite of CSGOW.TF with modern web technologies.


🚀 Quick Start

Prerequisites

  • Node.js ≥ 18.0.0 (v20.11.0 recommended - see .nvmrc)
  • npm or yarn

Installation

# Clone the repository
git clone https://somegit.dev/CSGOWTF/csgowtf.git
cd csgowtf

# Switch to the cs2-port branch
git checkout cs2-port

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env

# Start development server
npm run dev

The app will be available at http://localhost:5173


📦 Tech Stack

Core Framework

  • SvelteKit 2.0 - Full-stack framework with SSR/SSG
  • Svelte 5 - Reactive UI framework
  • TypeScript 5.3 - Type safety (strict mode)
  • Vite 5 - Build tool and dev server

Styling

  • Tailwind CSS 3.4 - Utility-first CSS framework
  • DaisyUI 4.0 - Component library with CS2 custom themes
  • PostCSS - CSS processing

Data & State

  • Axios - HTTP client for API requests
  • Zod - Runtime type validation and parsing
  • Svelte Stores - State management

Testing

  • Vitest - Unit and component testing
  • Playwright - End-to-end testing
  • Testing Library - Component testing utilities
  • MSW - API mocking

Code Quality

  • ESLint - Linting (TypeScript + Svelte)
  • Prettier - Code formatting
  • Stylelint - CSS linting
  • Husky - Git hooks
  • lint-staged - Pre-commit linting

🛠️ Development

Available Scripts

# Development
npm run dev              # Start dev server
npm run dev -- --host    # Expose to network

# Type Checking
npm run check            # Run type check
npm run check:watch      # Type check in watch mode

# Linting & Formatting
npm run lint             # Run ESLint + Prettier check
npm run lint:fix         # Auto-fix linting issues
npm run format           # Format code with Prettier

# Testing
npm run test             # Run unit tests
npm run test:watch       # Run tests in watch mode
npm run test:coverage    # Generate coverage report
npm run test:e2e         # Run E2E tests (headless)
npm run test:e2e:ui      # Run E2E tests with UI
npm run test:e2e:debug   # Debug E2E tests

# Building
npm run build            # Build for production
npm run preview          # Preview production build

Project Structure

csgowtf/
├── src/
│   ├── lib/
│   │   ├── api/              # API client & endpoints
│   │   ├── components/       # Reusable Svelte components
│   │   │   ├── layout/       # Header, Footer, Nav
│   │   │   ├── ui/           # Base UI components
│   │   │   ├── charts/       # Data visualization
│   │   │   ├── match/        # Match-specific components
│   │   │   └── player/       # Player-specific components
│   │   ├── stores/           # Svelte stores (state)
│   │   ├── types/            # TypeScript types
│   │   ├── utils/            # Helper functions
│   │   └── i18n/             # Internationalization
│   ├── routes/               # SvelteKit routes (pages)
│   ├── mocks/                # MSW mock handlers
│   ├── tests/                # Test setup
│   ├── app.html              # HTML shell
│   └── app.css               # Global styles
├── tests/
│   ├── unit/                 # Unit tests
│   ├── integration/          # Integration tests
│   └── e2e/                  # E2E tests
├── docs/                     # Documentation
│   ├── API.md                # Backend API reference
│   └── TODO.md               # Project roadmap
├── public/                   # Static assets
└── static/                   # Additional static files

🎨 Features

Current (Phase 1 - Complete)

  • SvelteKit project scaffolded with TypeScript strict mode
  • Tailwind CSS + DaisyUI with CS2-themed color palette
  • Complete development tooling (ESLint, Prettier, Husky)
  • Testing infrastructure (Vitest + Playwright)
  • CI/CD pipeline (Woodpecker)
  • Backend API documented

Planned (See docs/TODO.md for details)

  • 🏠 Homepage with featured matches
  • 📊 Match listing with advanced filters
  • 👤 Player profiles with stats & charts
  • 🎮 Match detail pages (overview, economy, flashes, damage, chat)
  • 🌍 Multi-language support (i18n)
  • 🌙 Dark/Light theme toggle (default: dark)
  • 📱 Mobile-responsive design
  • WCAG 2.1 AA accessibility
  • 🎯 CS2-specific features (MR12, Premier rating, volumetric smokes)

🔗 Backend

This frontend connects to the csgowtfd backend.

  • Language: Go
  • Framework: Gin
  • Database: PostgreSQL
  • Cache: Redis
  • API Docs: See docs/API.md

Default API endpoint: http://localhost:8000


🧪 Testing

Unit & Component Tests

# Run all tests
npm run test

# Watch mode for TDD
npm run test:watch

# Generate coverage report
npm run test:coverage

End-to-End Tests

# Run E2E tests (headless)
npm run test:e2e

# Run with Playwright UI
npm run test:e2e:ui

# Debug mode
npm run test:e2e:debug

🚢 Deployment

Build for Production

npm run build

The built app will be in the build/ directory, ready to be deployed to any Node.js hosting platform.

Environment Variables

See .env.example for all available configuration options:

  • VITE_API_BASE_URL - Backend API URL
  • VITE_API_TIMEOUT - API request timeout
  • VITE_ENABLE_LIVE_MATCHES - Feature flag for live matches
  • VITE_ENABLE_ANALYTICS - Feature flag for analytics

CI/CD

Woodpecker CI automatically builds and deploys:

  • master branch → Production
  • dev branch → Development/Staging
  • cs2-port branch → CS2 Preview (during rewrite)

🤝 Contributing

We welcome contributions! Please follow these guidelines:

Before You Start

  • Check existing issues or create one describing your feature/fix
  • Comment on the issue to avoid duplicate work
  • Fork the repository and create a feature branch

Code Standards

  • Follow TypeScript strict mode (no any types)
  • Write tests for new features
  • Follow existing code style (enforced by ESLint/Prettier)
  • Keep components under 300 lines
  • Write meaningful commit messages (Conventional Commits)

Pull Request Process

  1. Create a feature branch: feature/your-feature-name
  2. Make your changes and commit with clear messages
  3. Run linting and tests: npm run lint && npm run test
  4. Push to your fork and create a PR to the cs2-port branch
  5. Ensure CI passes and address review feedback

Git Workflow

  • Branch naming: feature/, fix/, refactor/, docs/
  • Commit messages: feat:, fix:, docs:, test:, refactor:
  • Only one feature/fix per PR
  • Squash commits before merging

📚 Documentation


📄 License

GPL-3.0 © CSGOW.TF Team


💖 Support

If you find this project helpful, consider supporting us:

Liberapay



Status: 🚧 Phase 1 Complete - Active rewrite for CS2 support

Description
csgow.tf frontend
https://csgow.tf
Readme 412 MiB
1.0.9 Latest
2022-12-07 07:14:08 +01:00
Languages
Vue 86%
JavaScript 11.8%
HTML 1.3%
SCSS 0.9%