Only board members can edit. Sign in with the Google account the board added for you — no new password.
Board members only. You’ll be asked which Google account to use.
Access tab, Keeping the data safe, then Download everything. It takes a few seconds. Keep the file in the board's Drive, not in somebody's downloads folder.
This site does not send email. Write the opening line, press Build, and paste the draft into Zeffy. The monthly habit is under Runbook → Monthly.
These open the visit counts. If a report looks empty, or Google asks you to start measuring, read Runbook → Reading the numbers before you change anything.
This opens Firebase’s count of database reads, writes, and deletes for the day. Compare the reads with 50,000. People opening pages with pictures stored on this site are what push that number up. The page does not show the monthly 10 GB of downloads. Only the shared Google account that owns the Firebase project can open it. Signing in here as a board member is not enough. If it says you do not have permission, switch to that Google account.
Paid members, RSVPs, volunteer names, and the newsletter list are not stored here. Where each one lives is under Runbook → Where the lists live.
This is not the calendar. Say what already happened. A date goes under Events. See Runbook → Posting news and events.
To make words a link, write [the words](https://the-address). A pasted address becomes a link on its own.
Optional. One photo from the thing you are writing about. A post without one reads exactly as it does now.
Every event can carry its own album link, a cover picture for its card on the Photos page, and its own pictures and clips. They open for people the board has approved — sign-in is the lock. Before anything goes up, check it against the school’s opt-out list.
Check the setting in Google Photos before you paste the link, and again whenever an album changes hands. If Collaborate is on, any parent can drop a photo straight in front of every family and no one checks the opt-out list first. The website cannot detect that or prevent it, because the photo never passes through the site.
The one album that keeps Collaborate on is the submissions inbox, and it is set up under Community, never here.
To make words a link, write [the words](https://the-address). A pasted address becomes a link on its own.
Always give a real length. "Help needed" does not fill; "1 hour, 4:45 PM" does.
The recruiting block on the site is built from this list and vanishes entirely once every seat is filled.
Shown for any member who has not sent a photo yet. Remove it and the page falls back to their initial instead.
Optional. A head-and-shoulders picture, square if you can. Without one the page shows their initial, which looks fine.
Shown on the About us page. Rewrite it whenever the board's focus changes.
One list, shown in two places: the About us page, and "What it pays for" on the Give page.
Shown on the Membership page. The vote and the thank-you gift are fixed, above whatever you add here — those come from Settings and the Text tab.
Plain text only — no bold, no links, no HTML. The length limits are there so each heading and intro still fits its layout on a phone.
Approved families can open a published album. Collaborate must be off. The submissions album is the only one parents can add to, and that link must never go on a public page. Google Photos does not ask the board first. The steps are under Runbook → Photos.
Setting up the submissions inbox instead? Same steps, except Collaborate goes on at step 2, and its link goes in the box below rather than on an event. It is the only album on this site that works that way, and you only make it once.
Parents see this number under the Submit button. The sentence is under Text → Photos. It uses {max} so the number stays in step with this box. Why the site cannot cap the upload itself is under Runbook → Photos.
An event album goes on the event, under Events. Everything else goes here. These cards sit with the event albums on the Photos page, grouped by school year.
A Google Photos link is not a picture. Upload a cover or the card is blank.
Covers and tiles uploaded here use the opt-out tick. Album links do not pass through this site. See Runbook → Photos.
Children whose families said no to photos. Check this before you publish. The rules are under Runbook → The opt-out list.
Only signed-in board members can read this. The school’s list is the real one. When they update it, update this the same day.
Public. Anyone can see these, including Google. Use a shot you would print on a flyer. A child’s face goes in a published album. Four pictures max.
Choose a photo from your computer, or paste a link if it already lives somewhere.
Shown on the home page, in this order. Hide any you do not want up. Use real quotes, with permission.
Shown on the home page. Add a photo when you have one. People still order on Zeffy.
The product, photographed plainly. Your browser shrinks it before anything is saved.
Bylaws, minutes, the budget. Keep the files in Drive and link them here — published openly is the norm, and it is what makes a parent organisation look trustworthy.
To make words a link, write [the words](https://the-address). A pasted address becomes a link on its own.
Download a file every month and put it in the board Drive. What is in the file, and how restore works, is under Runbook → Backups and who can sign in.
The download holds children’s names, family email addresses and the opt-out list. Treat it like the school’s own records rather than something left sitting in a downloads folder or emailed around.
Replace everything with the file? Every page, every family, every setting becomes what the file says. Download a copy first if you are not sure.
Every save keeps the previous copy of the part that changed. Bringing one back is explained under Runbook → Backups and who can sign in.
Restore this version? Whatever that part of the site holds right now gets replaced — but it is archived first, so this itself can be undone the same way.
Every approval, removal, deletion and settings change, newest first. Nobody can edit this list.
New people come in as editors and sign in with their own Google account. Owners can also change this list. The handover rule is under Runbook → Backups and who can sign in.
Use a Gmail address. This form cannot make an owner. The site cannot tell if that Google account exists. Have them sign in once before you rely on it.
One seat is the Friends of DSI account, not a person. An owner hands their seat to an editor from their own row. The count does not change. The reason is under Runbook → Backups and who can sign in.
The site is empty. Load the sample to see the pages, then replace it. The photos and parent quotes are fake.
One line at the top of every page. Use it for something people need today. Leave it off the rest of the time.
If a visitor closes it, it stays closed for them until you change the words.
Name, address, and contact email used across the site.
These are the choices a family picks from on the request form. Separate them with commas, in the order they should appear.
Approved staff see the same event details, volunteer signups and photos as an approved family. The board still reads every request by hand. This only decides whether staff are offered the option at all.
Album links are not here — they live under Community, and only people the board has approved ever see them.
Only promise a rhythm here if the board will keep it. “One email a month” is a commitment; “Get the newsletter” is not.
The browser shrinks the file before it is saved. Keep each under 220 KB. Why is under Runbook → Uploading pictures.
The thunderbird is already in the top bar. Replace it only if you want a different mark. A square image works best.
Shows beside the announcement, not on the home page. A PNG with a transparent background works best.
Everything here runs inside Google’s free allowances and stays free at this school’s size. No card is on file and no billing account is attached. The project is on Google’s free Spark plan, which cannot charge anything: if the site ever outgrew an allowance it would stop serving rather than bill anyone. Attaching billing is a deliberate decision for a future board, not something that can happen by accident.
| Piece | Service | Cost | Why |
|---|---|---|---|
| Hosting | Firebase Hosting (Spark) | $0 | 10 GB, free SSL, custom domain. |
| Sign-in | Firebase Authentication | $0 | Google Sign-In for people at DSI and the board alike. No passwords anywhere. |
| The door | Firestore (requests, members) + rules | $0 | Someone asks once; a board member says yes under Families; the rules do the rest. |
| Content | Cloud Firestore | $0 | Every tab above. 50,000 reads a day, 10 GB of downloads a month, 1 GB stored. Pictures stored on this site count. See Uploading pictures. |
| Photos | Google Photos albums + pictures inside the site | $0 | One album per event, plus any standing on their own, and the pictures kept inside the site. All of it reaches approved people only. Larger sets go to Cloud Storage (5 GB free in us-central1) once billing is attached. |
| Donations | Zeffy | $0 | No platform or processing fee. |
| Newsletter | Zeffy | $0 | Same account as dues and donations. One less thing to hand over. |
Almost nothing on the public site is hardcoded. Pages, links, contact details, the board, the money lines, the FAQ, and the standing wording on every page (the Text tab) come from these tabs. A future board does not need a developer to keep the site correct. A developer is only needed to change how it looks.
The one rule that matters: a dedicated Friends of DSI Google account owns all of it — Firebase, every photo album, Zeffy, the domain. Never a personal account. Handover is one password to the next board.
The public site does not keep who paid, who is coming, or who is on the newsletter.
Photos of children stay behind sign-in. A public page has no list of children on it. You can show that page to a helper without handing them those names.
The Dashboard has two buttons for the same visits. The Firebase button is the short look. Google Analytics is the full report.
If Google Analytics says welcome and asks you to start measuring, you are in the wrong Google account. Switch accounts. Do not press that button.
If a report is empty, turn off your ad blocker or open a private window before you decide the site is broken. Everyone else may still be counted.
On the Firebase dashboard, Active users in last 30 minutes is who is on the site right now. Boxes for app version and crash-free users say No data available, and they will say that here forever. Those boxes are for phone apps.
Page counts are under Reports, then Engagement, then Pages and screens. Button counts are under Events. The names are:
donate, join, volunteer, event_ticket, event_rsvp, photos_album, photos_submit, click_shop, click_document, announce_click, announce_dismiss, newsletter_signup
To let another person see the numbers, open the third Dashboard button. Add their Google account. Choose Assign Firebase role(s). Check only Analytics, then Viewer. That role does not show families or the database. Only an existing Owner of the shared Google project can add people. Right now that Owner is the board’s shared account. If a link says you do not have permission, you may be signed into the wrong Google account in this browser.
An event is something that is going to happen. Add it under Events. News is what already happened, or something that was never on the calendar. Add it under News.
To make words a link, write [the words](https://the-address). A pasted address becomes a link on its own.
A published album is one that approved families can open. Make it in Google Photos under the Friends of DSI account. Turn Collaborate off before you share it. Copy the link. If the pictures belong to one event, paste the link on that event. If they do not, add the album under Community. Upload a cover here. A Google Photos link opens the album. It is not a picture. The card is blank without a cover.
The submissions album is the only album where Collaborate is on. The Submit button on the Photos page goes there. Nothing in that album is on the website. Families do not read it. You open it, check each face against the opt-out list, and copy the allowed photos into a published album. Never paste the submissions link on a page a family can open.
Google Photos shows a new photo to everyone who has the link as soon as it is added. This website never sees that photo. It cannot warn you and it cannot block it. Turn Collaborate on for a published album and that protection stops, with no message here.
Front-page tiles are public. Search engines can index them. Use a shot you would print on a flyer. A child’s face goes in a published album, not on the front page. Four tiles at most.
The number you ask each family for is the box under Community. The sentence parents read is under Text, then Photos. That sentence uses {max} so it stays the same number as the box.
This is the children whose families said no to photographs. Only the board can read it. It is not on the public site. A normal save of events or news cannot put it there. The school’s own list is the one that counts. When the school updates theirs, update this one the same day. Check it before a photo goes on a public page or into a published album.
Nothing backs this site up for you. Once a month, download the file under Access and put it in the board Drive. The file contains family names, email addresses, and the opt-out list. Do not email it. Do not leave it in Downloads.
Restore replaces the whole site with that file. Download a fresh copy first if you are not sure. Every save also keeps the previous copy of the part that changed. You can bring that copy back. The current copy is saved first, so you can undo the undo.
A new person is an editor. They can change events, news, photos, and settings. They sign in with the Google account they already have. There is no separate password. The address has to be a Gmail address. @googlemail.com is the same mailbox. The site cannot tell if that account exists. Have them sign in once and watch their name appear before you rely on it.
An owner can do what an editor can do, and can change this list. There are always two owners. One seat is the Friends of DSI account, not a person. You do not promote someone into a seat and you do not delete a seat. An owner picks a named editor on their own row. That editor becomes an owner. The outgoing owner becomes an editor.
The announcement is one line at the top of every page. Use it for a date that moved, a deadline, or a closure. Leave it off the rest of the time, or people stop reading it. If a visitor closes it, it stays closed for them until you change the words.
The thunderbird in the top bar is already the logo. Replace it only if you want a different mark. The mascot shows beside the announcement, not on the home page.
Grades are the choices on the family request form. Separate them with commas, in the order they should appear. Approved staff see the same event details, signups, and photos as an approved family. The board still reads each request. The checkbox only decides whether staff are offered the form.
The newsletter heading should not promise a schedule the board will not keep. “Get the newsletter” is a label. “One email a month” is a promise. If the site is empty, the sample fill is fake. The photos are placeholders and the parent quotes are made up. Replace them before you send anyone the link.
Events are typed under Events. This site does not read them out of Google Calendar, and there is no API key to create.
Each event page has Add to calendar. That puts that one event on the reader’s own calendar.
Settings, then Links, also has two links for a shared calendar you keep yourself.
Those links point at the Google Calendar, not at this website. Changing an event here does not change that calendar. If the shared calendar should match the site, add the event in both places. How people take part, the signup link, the flyer, and the longer description live only on the event in this admin.
There is a file picker for the logo, the mascot, the front-page tiles, and event flyers. The top bar already shows the thunderbird, so the logo can stay. The mascot shows beside the announcement, not on the home page. Choose a file and your browser shrinks it before anything is saved. A 4 MB phone photo comes out around 100 KB. Nothing large ever leaves your machine.
The reason for the shrinking is that these pictures are kept in the database next to the text. Paid file storage would need a billing account, and there is no card on file. The picker refuses a picture it cannot get under about 220 KB.
Every visit asks the database for the page, then for each picture stored on this site that the visitor is allowed to see. Coming back later does not skip that. The copy on their computer is used only when the database cannot be reached.
A stranger loads the public pictures, such as the mascot and the store photos. A signed-in family or a board member loads every picture stored on the site, including pictures that are not on the page they opened. A Google Photos album does not count. The site only keeps the link, and Google serves those pictures.
Two different limits apply.
The free allowance is 50,000 of those database reads a day, 10 GB of downloads a month, and 1 GB of stored data in total. A busy day of people opening pages with pictures stored here is what uses it up. Each of those pictures is one read and one download of its bytes, on every visit. If a daily limit is passed, that part of the site stops until the next day. If the monthly download is passed, it stops until the next month. Nobody is billed.
The day’s read count is in Firebase, not on this site. The Dashboard button “Check today’s database usage” opens it. Only the shared Google account that owns the project can see that page. It shows reads, writes, and deletes. It does not show the monthly download total.
The other limit is how many pictures you can save here. A save that would leave more than 60 different pictures stored on the site is refused. The pictures already saved stay where they are. Links to Google Photos do not count toward the 60. If the site is already over 60, the next save fails until that same save removes pictures down to 60. The front page has its own limit of four tiles.
What this is not for. This is not a photo album. Event photos belong in Google Photos, which does not spend this site's allowance.
If you would rather host an image elsewhere and paste a link, every picker still accepts a URL.
Every picker also accepts a link. A Google Drive file set to “anyone with the link”, used as https://drive.google.com/thumbnail?id=FILE_ID&sz=w1200, works and costs nothing — though Google has changed that URL shape before, so check the tiles once a term. For most boards the built-in picker is simpler and there is no reason to reach for this.
A Google Photos album link is not an image URL — it opens the album, it does not embed. The picture fields refuse one and say where it goes instead, and the admin lists flag any tile saved with one before that check existed. This is why every album card needs a cover picture uploaded here.
A published album must have Collaborate off. The submissions album is the only one with Collaborate on. Google Photos shows a new photo to everyone with the link immediately. This site cannot see that photo. The steps are under Photos, above. Check Collaborate again whenever an album link changes hands.
CAN-SPAM applies to nonprofits — there is no exemption. Every bulk send needs a real reply-to address, the physical mailing address from Settings, and a working unsubscribe honored within ten business days.
Build the list on this site. The school's parent directory belongs to the school — those families opted in to the school, not to Friends of DSI. The clean start: ask the school to send one announcement linking here, then own the list from there.
The whole site is on GitHub at github.com/friendsofDSI/friendsofdsi-website. The GitHub account is the same fodsiboard@gmail.com organisation account that owns Firebase, every photo album and Zeffy, so handover stays one account rather than five. Sign in to GitHub with it the same way, through Google.
Nothing a board member does day to day needs GitHub at all. It matters for two things. It is the copy that survives if the Firebase project is ever lost, and it is what a future volunteer with coding experience would be pointed at.
Day-to-day content never touches code. Code changes are rare:
npm install -g firebase-tools, once.firebase login with the Friends of DSI Google account.firebase deploy --only hosting from the project folder.firestore.rules changed, firebase deploy --only firestore:rules as well. Hosting deploys never publish rules, and a rule that stays unpublished fails silently.git push, so GitHub matches what is live.Firebase keeps previous releases, so a bad deploy is one click to roll back.