Start here
1 - Quick start
Do this every time: edit in admin, verify on the website.
1Open admin.html, or click Volunteer Login on the homepage.
2Log in, pick a tab, fill the form, click Save.
3Wait for the Saved notification, then click View Website to verify.
TIP: keep two tabs open - admin in one, homepage in the other.
Access
2 - Log in / out
Login lives in admin.html. You stay logged in until you close the tab or log out.
1Go to admin.html, enter Username + Password, click Sign In. Demo: volunteer / **********.
2The dashboard shows Good to see you, Coach and then 10 tabs: Games & Scores, Latest News, Divisions, Standings, Tournament, Fields & Status, Action Showcase, Sponsors, Registration, Announcement. Every section of this guide maps to one tab.
3Click Log Out top-right on shared computers.
Login fails? Check Caps Lock, extra spaces, and credentials.
Most used
3 - Games + scores
Tab: Games & Scores. Homepage shows a vertical list grouped by date.
Add a game
1Fill Date (picker), Time like 10:00 AM, Division (U4-U19), Status (Upcoming / Final / Live), pick Home + Away teams from the dropdowns (they list every team that appears in your games; choose Other (type in)… to add a new team), Location. Picking a team auto-fills Division.
2Click Save Game. New row appears in the table below.
Enter a final score
1Click Edit on that row. Set Status = Final, enter Home / Away numbers.
2Click Save Game again. Use Clear to abandon an edit, Del to remove.
U19 displays as U16-U20 publicly. A Final with no score means the score boxes were blank.
Export the schedule to CSV
1In the Games & Scores tab, click Export CSV next to Save Game.
2Your browser downloads bsc-schedule-YYYY-MM-DD.csv with columns: id, date, time, division, home, away, location, status, homeScore, awayScore. Opens in Excel / Sheets.
Import games from CSV
1Click CSV Template to download a pre-formatted file with 2 example rows.
2Fill it in (see format rules below), then click Import CSV and pick your file. Matching IDs update, blank IDs create new games. You confirm counts before anything saves.
3Teams come from the games: every home/away team name in the CSV automatically shows up in the team dropdowns and in Standings after import — no separate team setup needed.
CSV format rules (must match exactly)
- Header row, exact names, any order OK but all required:
id,date,time,division,home,away,location,status,homeScore,awayScore
- id: leave blank for new games (system assigns one). Reuse an existing id to update that game. Example:
g-sample-1 or blank.
- date:
YYYY-MM-DD only, e.g. 2026-09-27. Not 9/27/26.
- time: text like
10:00 AM or TBD. Never blank.
- division: one of
U4 U6 U8 U10 U12 U15 U19 exactly. U19 shows as U16-U20 on the site.
- status: one of
Upcoming Final Live exactly, capital first letter.
- home / away / location: required text. Wrap in quotes if they contain commas:
"Civitan Park, Field 2".
- homeScore / awayScore: numbers for Finals (e.g.
3,2). Leave blank for Upcoming.
- Tip: always Export first to see a known-good file, or start from CSV Template. Bad rows are listed by line number and skipped; nothing saves until you confirm.
End of season
4 - Tournament
Tab: Tournament. A separate schedule for the end-of-season tournament — the regular season schedule and standings are never affected. Use Tournament Day at the top of the tab to set the date shown in the Tournament Day card on the public Tournament page (e.g. October 31, 2026).
1Fill the form exactly like Games & Scores. Team dropdowns reuse the teams from your season games — pick Other (type in)… for a brand-new team.
2Set Status = Final with both scores when a tournament game ends.
3The public Tournament page (linked from Schedule + Results) shows the filterable schedule, Results & Division Winners (🥇 winner, 🥈 runner-up per division), and full tournament standings — all updated the moment you save.
Export CSV works here too — same format as the season schedule CSV, and Import CSV accepts the same columns.
Homepage cards
5 - Divisions
Tab: Divisions. Homepage cards come only from what you add here — with no divisions saved, the Find Your Division section is hidden.
The individual teams come from your games — every home/away team in an upcoming or played game shows in the schedule and in Standings (also public at standings.html). Teams never appear as cards on the homepage.
1Pick the Division (one card each), then fill Name, Ages, Practice, Players, Color, Photo URL, Description.
2Click Save Division. Blank photo gets a default soccer image.
3Edit reloads a division into the form. Clear empties it. Del removes that card from the homepage — when the last one is removed the section disappears from the index.
Scores in → rankings out
6 - Standings
Tab: Standings. Auto-calculates each team's wins, losses, ties and win % from your games. This is the exact same table families see on the public standings.html page.
1Schedule games in Games & Scores first — every team that appears in a game automatically gets a standings row. No separate team setup.
2Open the Standings tab any time — it recalculates instantly. Use the Division filter to view one age group.
Only Final games with both scores count. Ties count as half a win: Win % = (W + 0.5 × T) ÷ GP. A team with no games yet still appears with zeros.
Upcoming games list the teams but do not affect standings until a Final score is entered.
3Families see standings on the public standings.html page (linked from Schedule + Results) — updated the moment you save a Final score.
Rainy days
7 - Fields status
Tab: Fields & Status. The rainy-day switch. Updates the dark FIELD STATUS card instantly.
1Pick ONE: OPEN (green, come play), CLOSED (red, stay home), CHECK WITH COACH (yellow).
2Add a note, e.g. Field 2 soft after rain - U8 moves to Field 1.
3Click Publish Field Status. Update the site FIRST, then text coaches.
Address never changes: 1225 Blennerhassett Ave, Belpre OH, with map + layout image.
Showcase
8 - Photos
Tab: Action Showcase. Updates the Saturday Energy grid. Clicking a photo enlarges it.
1Paste an image URL + optional caption, or Choose File to upload from your device.
2Click Add Photo. Uploads save to uploads/ on the server.
3Edit changes caption only. Remove deletes (no undo).
Landscape wins. Image too large? Resize or use a link instead.
Homepage
Latest News posts (up to 3)
Tab: Latest News in admin. These are the posts in the homepage Latest News section — small picture on the left, title + text on the right.
1Fill in Post 1, 2, 3 — each has a title, text, and picture (paste a URL or upload from your device).
2Only complete posts show: a post needs a title + text to appear. Leave a slot blank and it stays off the website.
3Tick Hide this post from the website to pull a post without deleting it. Untick to bring it back.
4Click Publish News Posts. Each slot shows LIVE / Draft / Hidden so you know what visitors see.
If every post is blank or hidden, the whole News section hides itself from the homepage.
Seasonal
10 - Registration button link
Tab: Registration. Controls the Register Here hero button and Register Now Join button. The link changes every season.
1Set Status to Open and paste the new season registration URL (full https link or mailto), plus the button label. Click Publish Registration Link.
2Between seasons, set Status to Closed and publish — both buttons send visitors to the Registration Currently Closed page instead.
Use Preview Closed Page in the tab to see what families see when closed.
Banners
11 - Announcements
Tab: Announcement. One tab controls three separate messages. Do not mix them up.
- Announcement bar - box above Schedule. Type + Publish Announcement.
- Enrollment pill - red text in top bar. Keep SHORT + Publish Enrollment Text.
- Ticker - scrolling band under hero. Type ONCE (it loops) + Publish Ticker.
Reset demo data restores samples and wipes all edits. Only click to wipe.
Help
Fix problems
Still stuck? Note the tab, what you clicked, and the notification or error text, then send a screenshot to your web admin.
The web admin can be emailed directly at [email protected]
| Problem | Fix |
| Cant log in | Caps Lock, spaces, api-config.php |
| Saved locally only | Log out, log in, save again |
| Website shows older games or scores than this console | Announcements & Ticker tab → Sync this device's data to server, then confirm. It lists the counts on each side and when this device last saved. |
| Phone not updated | Hard-refresh: Ctrl Shift R |
| Image too large | Resize or use link |
| Season vs tournament | Two separate schedules on purpose — the tournament never changes season standings |
Know the site
Other pages a volunteer may be asked about
You only ever edit from admin.html — every other page updates itself from your saved data. Useful to recognise:
| Page | What it shows | Driven by |
index.html | Homepage — hero, schedule, fields, news, sponsors, pricing | Everything |
standings.html | Public league table | Games & Scores |
tournament.html | Tournament schedule, winners & runners-up | Tournament tab |
volunteer.html | Volunteer sign-up form | Sent to your inbox |
referee.html | Referee sign-up / paid games & classes | Sent to your inbox |
sponsor.html | How local businesses can sponsor | Sponsors tab |
registration-closed.html | What families see between seasons | Registration status |
offline.html | Fallback when a phone has no signal | Automatic |
Mobile tip: volunteers can add the site to their phone home screen and it behaves like an app. After publishing a change, pull-to-refresh or close and reopen it to see the update.
Field address: the site always shows 1225 Blennerhassett Ave, Belpre OH 45714 with a map. A game's Location box is free text and older sample data still says "Civitan Park" — correct it if you see it.