# Rachhit Visitor League (RVL) · BNI Pune East

A live scoreboard and management dashboard for the **Rachhit Visitor League** — a competitive visitor-referral game run by the BNI Pune East chapter.

## Overview

Members earn points for bringing visitors to chapter meetings. This app tracks scores in real time, displays a ranked leaderboard, and lets admins manage entries — all from a single HTML file with no build step required.

## Screenshots

| Entry Screen | Leaderboard |
|---|---|
| ![Entry](screenshots/01-entry.png) | ![Leaderboard](screenshots/05-leaderboard.png) |

## Features

- **Live leaderboard** — ranked view of all members by visitor points
- **Entry management** — add, edit, and delete visitor entries
- **Login gate** — simple password-protected admin access
- **Dark / light theme** — toggle-able via the tweaks panel
- **Responsive** — works on desktop and mobile browsers

## Tech Stack

| Layer | Technology |
|---|---|
| UI framework | React 18 (CDN, no build step) |
| Transpiler | Babel Standalone |
| Styling | Custom CSS (`src/styles.css`) |
| Data | Plain JS (`src/data.js`) |
| Fonts | Google Fonts (Anton, Outfit, JetBrains Mono) |

## Project Structure

```
BNI-Game/
├── index.html          # App entry point
├── src/
│   ├── data.js         # Member and score data
│   ├── styles.css      # Global styles
│   ├── app.jsx         # Root component
│   ├── shell.jsx       # App shell / layout
│   ├── dashboard.jsx   # Main dashboard view
│   ├── leaderboard.jsx # Leaderboard screen
│   ├── manage.jsx      # Admin management screen
│   ├── login.jsx       # Login screen
│   ├── entry.jsx       # Entry form
│   ├── components.jsx  # Shared UI components
│   ├── tweaks-panel.jsx# Dev/theme tweaks
│   └── ...
├── assets/             # Static assets (images, icons)
├── uploads/            # Uploaded files (not tracked in git)
└── screenshots/        # App screenshots for docs
```

## Running Locally

No install or build step needed. Just open `index.html` in a browser:

```bash
# Option 1 — open directly
open index.html

# Option 2 — serve with Python (avoids CORS on local file imports)
python3 -m http.server 8080
# then visit http://localhost:8080
```

## Data

Member data and scores live in `src/data.js`. Edit that file to update the roster or initial scores.

## License

Internal tool — BNI Pune East chapter use only.
