This repository contains the PAARA.org website which is hosted on Github Pages.
Club members are encouraged to help file Issues for the problems encountered on the website, but at the same time we are more than happy to receive Pull Requests with fixes or improvements.
This page acts mainly as a HowTo for other contributors. The old readme is now at ARCHITECT.md.
-
Modify the meeting skeleton to add:
- topic
- presenter
- details
- Zoom meeting details
- example at https://github.com/PAARA-org/paara-org.github.io/blob/master/meetings/2025/202506.md?plain=1
-
Upload an image (optional) and render it inline
-
Modify
_includes/meeting-short.mdto include the same details (this will be rendered on the first page)
Add zoom meeting link and phone dial number to the _includes/meeting-short.md as in the example below::
## Next club meeting
* **Date**: `6 June 2025`
* **Topic**: `The Legacy of Trans-Pacific Radio`
* **Presenter**: `Richard Dillman (W6AWO)`
* **Zoom Meeting**:
* <https://us02web.zoom.us/j/81572645379>
* <+16699006833,,81572645379#> US (San Jose)Run the ./script/rollover-to-next-month.sh script from the top repository location which will generate an output similar to this:
% ./script/rollover-to-next-month.sh
[ Step 1: Detecting next monthly meeting filename ]
File meetings.md exists.
Current meeting is for year(2025) month(08). Next meeting is year(2025) month(09).
[ Step 2: Deleting the current symlink ]
Running: 'rm meetings.md' ...DONE
[ Step 3: Creating the new meeting file if necessary ]
The file 'meetings/2025/202509.md' does not exist or is empty. Initializing from meetings/template.md ... DONE
[ Step 4: Creating the new symlink ]
Running: 'ln -s meetings/2025/202509.md meetings.md' ...DONE
[ Step 5: Updating the _includes/meeting-short.md file ]
Successfully updated _includes/meeting-short.md.
[ Step 6: Updating past meeting history ]
Running ./script/parse-past-meetings.sh ...DONE
Update meetings/2025/202506.md and _includes/meeting-short.md with the topic and presenter details.
For some of the meetings, we get a PDF of PPT that we can link in the meeting page (for example https://paara.org/meetings/2025/202504.html).
The following steps must be followed:
- Upload the PDF or PPT into the https://github.com/PAARA-org/paara.org-attachments repository
- the files must be uploaded in meetings/
YYYY, whereYYYYis the meeting year (meetings/2025for example) - the file name must start with YYYY
MM, whereMMis the month (202504for example) - a full filename example is
meetings/2025/202501_Instant_Tuning_For_A_Manual_Tuner.pdformeetings/2025/202504_Stealth_HF_Antennas_McClary.ppt
- the files must be uploaded in meetings/
- In the meeting page, under the
## Presentation materialsheading, add links to the PDF in both Download and Docs Viewer mode (example at )
* *PDF*: [[download](https://github.com/PAARA-org/paara.org-attachments/blob/main/events/2025/202501_Instant_Tuning_For_A_Manual_Tuner.pdf?raw=true)] [[Docs Viewer](https://docs.google.com/viewer?url=https://github.com/PAARA-org/paara.org-attachments/blob/main/events/2025/202501_Instant_Tuning_For_A_Manual_Tuner.pdf?raw=true)]- Open the YouTube video in your browser
- Click the
Share->Embedand copy the iframe code:
<iframe width="560" height="315" src="https://www.youtube.com/embed/5QrTYcUS4hU?si=ImhnyzMrJMUEigxn" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>-
Add this code into the particular monthly meeting file, just above the
## Presentation materialsline -
Regenerate the past meetings index, which will add the video tag to this meeting as well:
./script/parse-past-meetings.sh > _includes/meetings-template.md- Ensure you have a Github fine-grained access token a. Login to Github b. Navigate to Developer settings (bottom of left sidebar) c. Click Personal access tokens -> Fine-grained tokens d. Click Generate new token e. Give it a name and your desired expiration. You shouldn't need to change anything else f. Click Generate token g. Copy the token - you won't be able to see it again
- Ensure you've uploaded the PAARAgraphs issue to the PAARAgraphs repo
- Fork this repository if you haven't already, and create a new branch for the addition (
git checkout -b <branch>) - Run
GITHUB_TOKEN=<token_from_step_1> ./script/generate-newsletter.py > newsletter.md - Push the repo up and create a pull request (
git push -u origin <branch>, click the link in the output to create a pull request)
Event photo albums are backed by public Google Drive folders, indexed in _data/galleries.json, and displayed with a responsive thumbnail grid and full-screen lightbox viewer with camera EXIF timestamps. On each page visit, thumbnail grids highlight a fresh, continuous sequential slice of photos from the event, while the underlying album always preserves true chronological order (oldest to newest) with a "▶ Start from oldest" button.
Add a new heading and the gallery include snippet in photos.md:
## Field Day 2027
{% include gallery.html folder_id="YOUR_GOOGLE_DRIVE_FOLDER_ID" %}(You can also use this include snippet in any event post under events/YYYYMMDD.md).
Run the photo sync script for the folder:
go run ./script/sync-photos.go -folder=YOUR_GOOGLE_DRIVE_FOLDER_IDThe script automatically:
- Auto-detects the album title from
photos.md(or use-title="Custom Title"). - Scrapes all photos and videos from the Google Drive folder without the 50-item limit.
- Concurrently extracts camera EXIF capture dates/times using fast HTTP Range requests.
- Sorts the entire album chronologically from earliest to latest (morning to evening).
- Saves the metadata to
_data/galleries.json.
You can customize the preview grid on any page:
{% include gallery.html folder_id="YOUR_FOLDER_ID" limit=4 show_meta=true %}folder_id(required): The Google Drive folder ID.limit(optional, default: 8): Number of preview thumbnails to show on the page. On each page visit, a fresh random continuous slice of<limit>photos is displayed.show_meta(optional, default: true): Displays the item counter, "▶ Start from oldest" button, "View all N" toggle, and Google Drive link.
git add _data/galleries.json photos.md
git commit -m "Add and index photos for Field Day 2027"
git push| Command | Description |
|---|---|
go run ./script/sync-photos.go -folder=ID |
Sync, extract EXIF, and sort a single new folder (title auto-detected from photos.md). |
go run ./script/sync-photos.go -folder=ID -title="Title" |
Sync a single folder with an explicit custom title. |
go run ./script/sync-photos.go |
Scan photos.md and synchronize all Google Drive folders. |
go run ./script/sync-photos.go -enrich-only |
Re-extract EXIF timestamps and re-sort existing galleries without re-scraping Drive. |
go run ./script/sync-photos.go -key="AIza..." |
Optional: Use an official Google Drive API v3 key if available. |