https://github.com/devcybiko/hackrva-communications
https://github.com/devcybiko/hackrva-communications
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/devcybiko/hackrva-communications
- Owner: devcybiko
- Created: 2022-10-25T23:07:17.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-21T23:09:22.000Z (about 2 years ago)
- Last Synced: 2026-03-06T09:48:57.235Z (4 months ago)
- Language: HTML
- Size: 4.39 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: newsletter.json
Awesome Lists containing this project
README
# hackrva-communications
This app creates a newsletter from the Meetup.com calendar.
Events are stored in the `./data/hackrva.sqlite` file.
## Usage
* edit the `newsletter.json` file to update the values month, welcomeImageURL, mindate, and maxdate
```json
"month": "December",
"welcomeImageURL": "december.png",
"mindate": "2022-12-01",
"maxdate": "2022-12-31",
```
* ensure there is a file in `html/.png` for the banner
* run: `./scripts/make-newsletter.sh `
* NOTE: the `monthname` is a double-check that you've updated the `newsletter.json` file
## Results
* The output HTML is in the `html/.html` folder
* Upload both the html and png files to the HackRVA.org wiki "Media" area
* Create a Post which points to the `.html` URL in the "Media" area
## EMAIL
You can get an abbreviated newsletter with ./scripts/make-email.sh
Send to : HackRVA-Meetup-list@meetup.com
## Design Notes
### Getting the Meetup Events
* `curl https://api.meetup.com/hackrva-meetup/events | jq > events.json`
* This command
* calls the Web Service routine from Meetup.com
* formats it with `jq` (which is optional)
* stores it in `events.json`
* Meetup will send a year's worth of events that have not occurred in the past
### Updating the database
* `./js/update-database.js events.json`
* This Command
* reads the `events.json`
* adds each record to the `data/hackrva.sqlite` flat-file database table
* NOTE: It will overrite existing records with the same Meetup-event-id.
* If you do this twice a month, all the old and new events will be stored
* Meaning that updating the newsletter will work, and you can regenerate old newsletters
### Extract the events from the local database
* `./js/extract-events.js > monthly-json/$month.json`
* This Command
* gets the `mindate` and `maxdate` from the `newsletter.json` file
* queries the `Event` table from `data/hackrva.sqlite`
* writes the event records to `monthly-json/$month.json` for the particular month
### Merge the month's events into an HTML file
* `./js/newsletter-merge.js monthly-json/$month.json > html/$month.html`
* This Command
* combines the parts of the HTML template from the `template/` folder
* replaces `{{fieldname}}` fields with values from each event in the `monthly-json/$month.json` file
* writes the output to the `html/$month.html`
### Display the output in a browser for your inspection
* `open html/$month.html`
* This Command
* is Mac-specific
* You'll have to change it for other OSs
* Or just double-click on the resulting `html/$month.html` file
## Folder Structure
* data/ - holds the `sqlite3` database
* html/*.html - the resultant monthly newsletters are stored here
* html/*.png - the monthly 'header' .png files go here. YOU supply them.
* js/ - javascript files
* models/ - table definition for the tables. (Event.js)
* monthly-json/ - temporary storage for each month's events in JSON format
* scripts/ - bash shell scripts
* template/ - html fragments for the newsletter's HTML
* NOTE: the files are joined in alphabetical order
* NOTE: the `event-header.htm` and `event.htm` have `{{macro}}` fields that are expanded for each event