|
1 | | -# Basketball 24 shot clock app |
| 1 | +# ShotClock Pro — Free Online Basketball Shot Clock |
2 | 2 |
|
3 | | -[Check it out!](https://wwww.24shotclock.com) |
| 3 | +**Live at [24shotclock.com](https://www.24shotclock.com)** |
4 | 4 |
|
5 | | -## Background |
| 5 | +A professional-grade basketball shot clock simulator built for referees, coaches, and fans who want to practice officiating or follow a live game. Fully compliant with FIBA rules. |
6 | 6 |
|
7 | | -Sweet application that simulates a control panel of 24 basketball shot clock according to [FIBA](https://www.fiba.basketball/) rules, built in React. |
8 | | -I originally created it to practice in off-season time, but it is very fun also if just a basketball fan. |
| 7 | +--- |
9 | 8 |
|
10 | | -The best way to practice is to broadcast a game on your TV, and operate the shot clock according to occurrences in this game. |
11 | | -The application is updated from time to time according to the rules updates of FIBA. |
| 9 | +## Features |
12 | 10 |
|
13 | | -## Operations |
| 11 | +- **24s / 14s resets** — one-tap resets per FIBA rules (backcourt possession → 24s, offensive rebound / frontcourt control → 14s) |
| 12 | +- **Start / Stop** — single tap to freeze or resume the clock |
| 13 | +- **Correction mode** — increment or decrement seconds to match the referee's monitor review decision |
| 14 | +- **Clear** — blank the display during free throws and between periods |
| 15 | +- **Arena video hero** — immersive basketball court background on the home screen |
| 16 | +- **Basketball loader** — DSEG14 digital-font countdown animation on every page transition |
| 17 | +- **Light & Dark themes** — persisted per device |
| 18 | +- **Fully responsive** — optimised for phones (portrait and landscape), tablets, and desktop |
| 19 | +- **5 languages** — English, Italian, Spanish, French, Greek (auto-routed per URL prefix) |
| 20 | +- **SEO optimised** — structured data (WebSite, WebApplication, FAQPage, HowTo), Open Graph, Twitter cards, canonical URLs |
14 | 21 |
|
15 | | -1. **Start** - starts and stops the clock. |
16 | | -2. **Reset 14s** - Reset the clock to 14 seconds (for example on offensive rebound or a team gaining ball control on the front half court). |
17 | | -3. **Reset 24s** - Reset the clock to 24 seconds when the team (for example when a team gaining ball control on the back half court, or 24 shot clock is over). |
18 | | -4. **Clear** - Clears the seconds view display (usually used between periods and during free throws shooting). |
19 | | -5. **Correction** - Fix the seconds display by increment / decrement seconds according to the referees decision after they have checked the monitor. |
| 22 | +--- |
20 | 23 |
|
21 | | -## Supported view modes |
| 24 | +## Pages |
22 | 25 |
|
23 | | -- Light mode (orange based) |
24 | | -- Dark mode (black based) |
| 26 | +| Route | Description | |
| 27 | +|---|---| |
| 28 | +| `/` | Landing page with hero, feature overview, and mode cards | |
| 29 | +| `/clock` | The shot clock — full controls | |
| 30 | +| `/play` | Quick-launch page that goes straight to the clock | |
| 31 | +| `/instructions` | Step-by-step operating guide with pro tips | |
| 32 | +| `/fiba-resources` | Links to official FIBA rulebooks and documents | |
| 33 | +| `/faq` | Frequently asked questions | |
| 34 | +| `/about` | About the project and the developer | |
25 | 35 |
|
26 | | -## Supported languages |
| 36 | +Non-English routes are prefixed: `/it/`, `/es/`, `/fr/`, `/el/`. |
27 | 37 |
|
28 | | -- English |
29 | | -- Hebrew |
30 | | -- Italian |
31 | | -- Spanish |
| 38 | +--- |
32 | 39 |
|
33 | | -More languages to be supported soon! |
| 40 | +## How to Use |
34 | 41 |
|
35 | | -## Usage |
| 42 | +The best way to practice is to broadcast a game on TV or YouTube and operate the shot clock in real time alongside the referees. |
36 | 43 |
|
37 | | -The most comfortable usage is in your cell phone since this is the closest experience to the actual remote usually exist in gyms, [check it out here](https://wwww.24shotclock.com). |
| 44 | +1. **Throw-in / new possession** → Reset 24s, then Start |
| 45 | +2. **Offensive rebound** → Reset 14s (clock keeps running) |
| 46 | +3. **Defensive foul in backcourt** → Stop, Reset 24s |
| 47 | +4. **Defensive foul in frontcourt with ≥14s remaining** → Stop, leave as is |
| 48 | +5. **Defensive foul in frontcourt with <14s remaining** → Stop, Reset 14s |
| 49 | +6. **Free throws** → Clear display; after last FT made, Reset 24s |
| 50 | +7. **Referee monitor review** → Use Correction to adjust seconds |
| 51 | + |
| 52 | +--- |
| 53 | + |
| 54 | +## Tech Stack |
| 55 | + |
| 56 | +| | | |
| 57 | +|---|---| |
| 58 | +| Framework | React 18 + TypeScript | |
| 59 | +| Styling | styled-components | |
| 60 | +| Routing | React Router v6 | |
| 61 | +| Animations | react-spring | |
| 62 | +| Hosting | AWS Amplify + CloudFront | |
| 63 | +| Font | DSEG14 (digital clock), Poppins (UI) | |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +## Local Development |
| 68 | + |
| 69 | +```bash |
| 70 | +npm install |
| 71 | +npm start # dev server at localhost:3000 |
| 72 | +npm run build # production build |
| 73 | +npm test # interactive test runner |
| 74 | +npm test -- --watchAll=false # single test run |
| 75 | +``` |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +## Rules Reference |
| 80 | + |
| 81 | +- [FIBA Official Basketball Rules](https://www.fiba.basketball/rules) |
| 82 | +- [Shot Clock Equipment Rules](https://www.fiba.basketball/rules/equipment) |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +Built by [Chen Gazit](https://chengazit.com) |
0 commit comments