Today's buses and the week's plan — plus the registration board, the roster and last year's numbers, on the tabs below.
Loading…
Parents & Children
Manage parent accounts and their registered children.
✅ Active
0
Created password & signed in
⏳ Pending
0
Haven't activated yet
🔔 Push Enabled
0
Receive notifications
🔎 Family access check
A parent sees children in their portal only if they are linked as a guardian. This finds the accounts that would open the portal and see nothing — and links them back to their family.
Checking…
🗄️ Withdrawn families
Nobody enrolled any more. Their portal access is already gone — no login, no push alerts.
Child
School · Service
Parents / Guardians
Actions
Counselors
Manage counselors and their school assignments.
🙋 Helpers for the day
Two counselors are out and somebody from the JCC is covering the afternoon.
A helper gets today only: their pass dies at midnight, and the app
refuses them the moment it is closed. They can see the hand-offs they are covering,
use the scanner and take a child's photo — nothing else, and no school until you
give them one with 🗓️ Mark absent → cover with on the counselor
who is out.
Read the code out loud — it is shown once, and a new one is
minted every time you open a pass.
Name
Signs in as
Today
Helped before
Actions
📚 Covering the homework teacher
Name
Email
Assigned Schools
🎂 Birthday
⚧ Gender
Actions
🛡️ Admins
People with full admin access. New admins receive an email invitation to set their own password.
Name
Email
Status
🚌 Takes trips
Actions
Schools
Every school in the program, with the settings that drive the buses. Settings opens dismissal times, drive time from the JCC and bus-or-walkover — the same editor the Planner opens when you click a school there, writing to the same place. Today's roster shows who is attending, split by release group where the school has one (Torah / Regular, K–1st / 2nd–5th), and hands that list out: Copy for email for the body of a message, Download CSV for a spreadsheet. 📧 Morning lists (bar below) emails each school's front office today's confirmed and absent JClub children — the contact for each pickup group is saved in that school's Settings, and the lists can also go out automatically every weekday morning.
🪪 QR Cards
Print one card per child. Counselors scan them at the bus and at activity hand-offs. Lost card? Regenerate its QR — the old one stops working instantly and the child goes back in the print queue.
🏷️ Laid out for Shipping Store R013 labels — 3⅜" × 2⅓", 8 per Letter sheet.
In the print dialog: Letter, Scale 100% (not “Fit to page”),
Margins: None. Those three are what keep the labels on the die cuts —
the FS/TO/WO colour band prints either way.
First run on a new printer? Use Test alignment on plain paper before spending labels.
Stamp:FSFull Service — stays for the whole programTO · WOTransportation / Walkover — rides or walks over, no activities
🩺 Medical & behavior
Notes about something that happened on a given afternoon. Every guardian gets a
push, and the note stays in front of them until one of them confirms reading it —
that confirmation is the record. Counselors see the medical ones for their own
schools; behavior notes stay between the office and the family.
Loading…
🚶 Goes home alone
Older children a family has authorized to leave the JCC by themselves.
A family uploads a photo of the signed form and it lands here as pending —
nothing changes for the child until somebody opens the form and approves it.
Children must be at least 10; you can authorize a younger
one, but you have to say why and it stays on the record.
Loading…
🪪 Pickup authorizations
Adults a family has authorized to collect a child, with the dates it covers.
Staff check a photo ID against the name. Any guardian can authorize someone —
including one the other guardian has not met — so revoking here is the office's
release valve.
Loading…
🧦 Lost & found
The bucket by the front desk. Staff photograph what a child left behind; families
see the picture and say if it is theirs. A claim is a request, not a
lock — two navy jackets in size 8 is the ordinary Tuesday, so an item
keeps taking claims and stays on the wall until you decide. Giving it to one
family answers everybody else waiting on it, in the same click.
Loading…
🏕️ Mini-Camps
School days out at the J — one day, K–5th, 9:00 AM–6:00 PM.
Open to every family, not only J-Club, which is why most of these
children are not on the roster and no other screen here can count them.
Straight from Salesforce, read-only — registering and cancelling still
happen there.
Loading…
📡 Live board
Where every bus and every child is, right now, and what has to happen in the next hour and a half — which class takes its children at what time, with whom. Refreshes on its own every 30 seconds — no need to reload. Children nobody has scanned come first, because that is the one this board exists to catch.
Loading…
🧾 Movements
Every scan of the day, newest first: who was checked onto the bus, handed to an enrichment (and who signed for them), collected again, and released to their family. On top, where the counselors themselves are — the four checkpoints of each run to a school.
Instructor signature
Attendance
Who rode the bus, who was out, and what the no-shows add up to.
🔁 Standing arrangements —— children who are out every week on the same day
Family told us — the parent said so through the portal or an answered alert. Nothing is owed. FAMILY DID NOT NOTIFY — nobody called, and a counselor waited at the school for a child who was never coming. This is the one that is charged. Absent — no charge — marked by staff, deliberately not billed (sick, a closure, a courtesy). Change the reason on any row to waive or apply the charge; the absence itself does not move.
Child
Parent
School
Reason
Charge
Marked by
Loading…
Program Calendar
Manage school closures, mini camps, early dismissals, and special events.
Legend:🔴 JClub Closed🟣 Mini Camp🟠 Early Dismissal (4pm)🔵 Special Event / JCC
All Events —
Date
Type
Title
Description
🎯 Activity Center
Everything about the enrichment afternoon: who takes which child where, when each class runs, and who is covering what.
🔁 Make-up classes submitted by families
0
Each row was submitted by a parent. The counselor is auto-assigned based on the recurring slot for the same activity, day and time. If you reassign a recurring entry in Browse & Assign, future make-ups for that slot update automatically.
Loading…
💡 Schedule suggestions waiting for you
0
Families suggest a fix when an activity's times are missing or wrong (e.g. MUSIC has no schedule in Salesforce),
or load a whole class that isn't in Salesforce (e.g. Swimming, with its instructor).
Approving is permanent: the times are saved as a schedule override (🕐 Schedules) that every future
Salesforce sync applies, and the child's roster entries are created/fixed immediately. The suggestion itself is
kept forever as the record of the decision.
Loading…
👁️ Which activities, courses and options appear
0
Untick anything you do not want on this screen. Ticks run downwards:
untick an activity and every course and course option inside it goes with it,
and anything that syncs in under it later is hidden too. It only affects
your browser and it never changes a roster, a schedule or an assignment —
the download still carries every row.
0 selected·
Select an activity above
Choose an activity to view its roster.
🕐 Every class, and the hour it really runs at
One row per program · course · course option · weekday — the level Salesforce
actually sells, so one canonical class (Soccer is four different afternoons) reads as the four
afternoons it is. Everything the roster sync wrote is here, and so is every class a family
suggested and you approved. Edit an hour and it becomes yours: the correction is saved as an override the
next Salesforce sync cannot undo, scoped to the course option you edited. That is the answer
when a class changes time and Salesforce keeps sending the old one.
👤 Who always takes this trip
Name a counselor on a row and they become the standing one for that
trip — this class, this course option, this weekday, this direction. Every row that
lands there with nobody on it goes to them: today's empty ones right away, and the new
ones each sync writes, so a child who changes course option no longer arrives as a
blank row somebody has to notice.
It is a fallback, never an overwrite: a child you moved by hand, or a
cover for an absence, stays exactly where you put them.
Reads who is already taking each trip and offers to make it standing. Shows you
everything first.
Loading…
Add an hour for a class that is not listed above
For a class Salesforce sends with no weekday at all — season-long leagues and travel
teams arrive that way — the class cannot appear above until something puts it on a day. Setting
the days here is what does that; the next sync picks them up. For anything already listed,
edit it in the table instead.
👤 Who is covering what
Every assignment in the coming week, for every counselor at once. It used to make you
pick one person before it showed anything, so the comparisons that matter — who is carrying twelve
hand-offs while somebody has two, which afternoon has nobody on it — could not be made at all.
Sort by any column; the filters stack. 👥 Load per counselor re-groups the same
rows by person and by moment — how many children each one is holding at a single clock
time, and where that is two doors at once. Each moment says which way it goes
(📥 taking them to the class, 📤 collecting them from it — a moment can be both), and the names
inside it read by child or by school, whichever answers the question you are asking.
🧭 Suggest counselors for the activities
Loading…
🧩 Groups inside a class
Salesforce sells one Course Option for many groups —
“Under 9 - Under 18” is ten teams at three venues, and
“Under 7 & Under 8” is two groups whose days are opposite.
The registration never says which. Define the real groups here, put each
child in one, and their days and times get written from the group.
Saved as manual rows — the one source the Salesforce
sync never overwrites.
Loading…
Loading…
Loading…
Loading…
Rosters sync automatically from Salesforce at startup — manual sync in ☁️ SF Sync.
Add Manual Activity Entry
Add activities not in the Excel file (e.g. Swimming — notified by phone).
Who brings them back?
Leave both empty only if JClub never collects this child, or 🕐 Schedules already says nobody is collected from this class.
Everything added by hand
Every afternoon on this list is one the JCC registration never listed:
typed here by the office, materialised from a schedule suggestion you
approved (Swimming, Music), asked for by a family as a make-up, or
written by placing a child in a group. Each row says which.
Loading...
Type at least 2 letters to search.
🧭 Which rooms are the same walk
Every class already says where it happens, in 🕐 Schedules. This says how far
apart those rooms are, which is the half that decides who can cover two of them in one
afternoon. An area is one door — its rooms are the different ways that one
room gets typed — and its neighbours are the doors a short walk away.
A shared hallway is a neighbour, not one door: karate, chess and the Katz
auditorium are a few steps apart and still three doors at 4:15.
Two rooms that are not neighbours are treated as opposite ends of the building. A room
that is not on this map at all is never guessed at — the suggester says so
out loud rather than assuming a walk nobody has described.
Loading…
📦 OLD — Upload Enrichment Excel File (legacy fallback)
Kept only as a fallback for when Salesforce is unavailable. Prefer the automatic startup sync
or the manual ☁️ SF Sync page.
Upload the weekly activity roster Excel. Existing counselor assignments are preserved when a child's activity hasn't changed.
🗓️ Day Off Requests
Counselors submit requests here. Approve to reassign their activities for that day, or reject with a note.
📧 Send Message to Parents
Compose an announcement and choose which parents will receive it. They will get a push notification and see the message in their Inbox.
New Message
— or pick specific schools below —
0 / 4000
Recently Sent
Subject
Audience
Sent
Read
Loading...
🎬 Live Demo
Open the Parent and Counselor portals already logged in, in new tabs, to show the app live.
Open demo portals
Each button opens that portal in a new tab, already signed in with the test
accounts (Parent with Sofia and Daniel, Counselor at Test School).
Keep both tabs open to show real-time pickup:
in the parent tab tap “I'm here”, and the alert appears in the counselor tab.
⚙️ Settings
Program administration and year-end tools.
🔐 Two-Factor Authentication (2FA)
Add an extra layer of security to your account by requiring a verification code from your phone when logging in.
Loading...
Setup Instructions:
Download an authenticator app (Google Authenticator, Authy, or Microsoft Authenticator)
In the app, tap "+" and choose "Enter setup key"
Enter this secret key:
Enter the 6-digit code from the app below to verify
📺 Wall display (TV link)
A link that opens the Live board in any browser with
no login — for a TV in the office. The link itself is the key,
so treat it like a password: anyone who has it can see every child's name and
where they are, today. It is read-only and shows
only today.
⚠️ If a screen is somewhere families or visitors can read it, turn on
short names below — the board still works for staff who know
the children, without putting a full roster of minors on a wall.
Loading…
🚌 Bus notifications
A push to every admin as each bus works through its afternoon.
One notification per run and step — two counselors on the same
bus both tapping "arrived" is still one arrival, because one bus arrived once.
⚠️ A run with two schools sends these twice — once per stop.
Across the fleet that adds up fast, and a channel that buzzes too much gets
muted, which costs more than it gives. Turn off the steps you do not need.
Loading…
👨👩👧 Parent notifications
The global switch per kind of push a family can receive.
Turning one off here stops it for everyone at once — the answer
to "the ETAs are misbehaving" — without touching anyone's own toggles.
A push goes out only when the switch here and the parent's own
setting (🔔 Notifications in their portal) both say yes.
The five transport kinds (bus check-in, ETA, arrival, activity
drop-off and pick-up) start off — nothing reaches
families until you enable them here.
Loading…
🔒 Login lockouts
After 5 failed logins in 15 minutes the app answers
"Too many login attempts". The block is on the network address,
not on the account — so one person guessing their password can lock out everyone
else on the same wifi, and it clears itself after 15 minutes.
Resending an invite does not clear a block. Unlock here (or from the
🔓 button on the person's row in Parents / Counselors) to let them in right away.
Unlocking never changes anyone's password.
Loading…
⏰ Who JClub takes where, and until when
These rules decide whether a counselor is sent, so every path that writes a roster row
asks them — the Salesforce sync, the Excel uploads, an approved parent suggestion, a
parent's make-up class and manual entries. Changing them here changes all of those at
once. Existing rows are not deleted: Browse & Assign hides the ones
that fall outside these hours and says how many it hid.
Loading…
🙈 Classes we do not import from Salesforce
Salesforce is the JCC's registration system, so it carries things JClub has no afternoon in —
a programme somebody else runs, an audition registration. Those never produced a trip, but they
did produce a “the family drives this” card on the parent's screen and a row in
🕐 Schedules asking somebody to set hours. Named here, they are dropped at the source.
Each line is matched as a whole phrase, against the programme, the course and the
course option separately — so Team 4 - 4th Grade Audition drops that one option
and leaves the rest of the programme alone. It never matches part of a word:
Art cannot claim Martial Arts. A phrase typed singular still matches a plural
(Audition finds Auditions) when the word is long enough to be safe.
Preview first. Saving shows what each line matches, by name and by how many children,
before anything is stored — a phrase one word too short takes a real class off every screen at once.
It takes effect on the next Salesforce sync; nothing already in the app is deleted.
Loading…
🎓 End of School Year
Use this button at the end of the school year to clear all children and registrations. Parent and counselor accounts will be kept — only children, registrations, absences, and attendance records will be deleted.
After clearing, simply upload next year's roster to start fresh. Parents will see their new children and updated information.
⚠️ This action cannot be undone. All attendance history, absences, and child registrations will be permanently deleted.
⚠️ Wipe All Data (Testing Only)
Use this to reset the app for testing. Deletes ALL parents, counselors, children, activities, calendar events, and invitations. Admin accounts and schools are preserved.
Flow: wipe → upload a fake roster → test (including "Send All Invitations" — emails only go to the fake addresses) → wipe again → upload the real roster.
🚨 IRREVERSIBLE. Everything except admins and schools will be permanently deleted.
🧪 Staff Training
Give every counselor five fake children to practise a full JClub afternoon on —
bus check-in, a missing child, activities and a parent pickup. Practice data is
invisible to reports, exports, Salesforce sync and families, and is deleted with one button.
Training session
Loading…
While the session is open, counselors see a purple Practice Mode card
on their home screen. Nothing is visible to them until you start it.
Practice always runs on the current day — you can open it the night before and it
still works; each counselor's activities move to today when they first open the page.
Live progress
Playing "the parent"
Each counselor's practice family has its own parent login, so a trainer can open the
parent portal on a second phone and tap "I'm here for pickup" for real. Or just
use Send a pickup on the board above.
Email:
Password:
These addresses use the reserved .test domain — no email can ever reach them.
Practice QR credentials
Print these and hand each counselor their own stack — scanning a real card is the
part everybody wants to try. Counselors can also show them on screen from their
own Practice Mode page.
☁️ Salesforce Sync
The roster syncs automatically from Salesforce every time the platform starts. Use the buttons below to sync manually at any moment.
☁️ Sync from Salesforce
Pulls all Active / Pending Active JClub enrollments straight from Salesforce — no export file needed.
Always shows a preview first; nothing changes until you confirm.
📧 No emails are sent by the sync. New parents get their login credentials only when you press "Send Invites to All Parents" (Parents page).
⏳ Talking to Salesforce...
🎯 Sync Activities from Salesforce
Pulls every active enrichment enrollment for JClub children straight from Salesforce —
same interpretation rules as the Excel upload (skip lists, drop-off/pick-up logic,
Schedule overrides, counselor assignments preserved). Always shows a
preview first; nothing changes until you apply.
Requires the roster sync to have run first (children are matched by their Salesforce ID).
The automatic startup sync already runs this right after the roster.
⏳ Talking to Salesforce...
⏸️ Programs on hold
A school that reads Active in Salesforce but that JClub is
not actually running — the agreement fell through, the site is not open
yet, the families are queued for a spot that does not exist. Salesforce is a registration
system and will keep sending them as enrolled; this is where you say otherwise.
A hold means waitlisted, everywhere: on the next sync those children leave
the roster, their parents lose the portal, there is no QR card and no bus seat, and
no address of theirs goes to Constant Contact or to any mass email. The
capacity board keeps counting them as waiting. Removing the hold puts them
back on the next sync.
Write the school as Salesforce spells it, or the start of it — Lehrman covers
Lehrman Community Day School. It has to match a whole word, so it can never catch a
different school that merely starts the same.
Loading…
⏳ Saving...
📧 Constant Contact
Sends the email address of every family with an Active / Pending Active JClub
enrollment to the Constant Contact mailing list, so a new registration becomes a contact
without anyone re-typing it. One way only: Salesforce → Constant Contact,
never the other way round.
Contacts are matched on their email address, so anyone already in the list is
updated, not duplicated, and whoever unsubscribed stays unsubscribed.
A family with two enrolled children counts as one contact. No email address is stored in
this app — only the counts you see below. Only sync families who agreed to be contacted.
🏷️ Each contact also carries JClub School Group, JClub Service
and JClub Group and Service, so you can send to one school or one service
from Constant Contact — e.g. a segment on JClub Group and Service →
contains → Ben Gamla Torah / Full Service. Always contains,
never is: a family with children in two groups carries both values in the same cell.
The fields are created in your Constant Contact account on the first real sync; the exact
values written appear below.
Loading…
⏳ Working...
📜 Sync History
Audit trail of applied syncs and uploads: who ran them, how each record was identified
(Salesforce ID vs email/name), what changed and who was deactivated.
📦 OLD — Excel / CSV upload (legacy fallback)
Kept only as a fallback for when Salesforce is unavailable. Prefer the Salesforce sync above.
📋 Accepted Formats
✅ Excel (.xlsx) — JCC export format (Only ASP Roster)
✅ CSV — columns: parent_name, parent_email, child_name, school, days
Uploading does not email anyone — new parents get credentials only when you press "Send Invites to All Parents". Existing parents have their children updated automatically.
Upload File
⏳ Uploading, please wait...
🚫 Mark a child absent
🔁 Standing arrangement
For a family who told you their child is out every week on the same day.
Arranged in advance is the definition of having told us, so nothing is
charged — and no counselor waits at a gate for them.
Leave the last day empty for the rest of the year. Tick as many afternoons as the
family named — they are saved together, with the same dates. One arrangement per
child per weekday: saving over one replaces it, and the toast names every weekday
it replaced and what that one said before.
🎓 End School Year
This will permanently delete all children, registrations, absences, and attendance records. Parent and counselor accounts will remain.
To confirm, type END OF YEAR in the box below:
⚠️ Wipe All Data
This permanently deletes all parents, counselors, children, activities, calendar events, and invitations. Admin accounts and schools are preserved.
🚨 This cannot be undone. To confirm, type WIPE ALL DATA and enter your admin password.
Add Parent
Add Child to
What are you scanning?
Pick one — the camera opens next.
Photo
Check it is the right child before saving. A photo saved against the wrong name sends somebody to the wrong child at a door.
Who is receiving the group?
The instructor signs once, here. Then you scan the children one after another — every card you scan is logged as handed to this person, and their names build up on screen so you can see who is in.
Which child?
Which child?
✏️ Edit entry
Who brings them back?
Leave both empty when this child already has a pick-up row for that day, or when ⏰ Hours / 🕐 Schedules already answered it.
📸 Children with no photo
🚗 Today's pickups
Claimed pickups disappear from the counselors' live feed. If a claim went
stale (e.g. the counselor's phone died), release it so someone else can take it.
⇄ App vs Salesforce —
Add Counselor
Add Admin
The new admin will receive an email with a one-time link (valid 7 days) to set their own password. Admins have full access to manage parents, counselors, schools, and other admins.
Assign Schools to
School Roster
School
Loading…
School
Loading…
Today's lists
Exactly what each school receives. Copy one if you would rather send it from your own email.
Loading…
Add School
Events
Add event for this day
Mark absent
Their activities and the schools they cover move to whoever you pick,
for these dates only. Next week is untouched, and you can undo it from Day-off.
Picking someone here gives them the whole day. Leaving it empty marks the absence
and leaves everything unassigned, for you to sort out in Day-off.