A modern Node.js application that creates GitHub issues and HackMD documents for Node.js team meetings. This tool automates the process of reading meeting configuration, fetching calendar events, creating meeting minutes documents, and posting GitHub issues.
Templates support the following replacement variables:
$TITLE$: Meeting title
$AGENDA_CONTENT$: Auto-generated agenda items
$INVITED$: Invited attendees list
$OBSERVERS$: Observers list
$GITHUB_ISSUE$: GitHub issue URL
$MINUTES_DOC$: Google Doc URL
➕ Adding New Meeting Groups
To add a new meeting group to the system, you need to create templates and update configuration in three places:
1. Create Template Files
Create four template files in the templates/ directory following the naming convention:
# Replace <shortname> with your meeting group identifier
templates/invited_<shortname>
templates/observers_<shortname>
templates/meeting_base_<shortname>
templates/minutes_base_<shortname>
Use kebab-case for script names: your-meeting-group-meeting
Use snake_case for the actual group parameter: your_meeting_group
Always create both production and development (:dev) versions
The development version uses --env-file=.env for local testing
🏗️ Development
Environment Setup
Clone the repository
Install dependencies: npm install
Copy .env.example to .env and configure your credentials
Create meeting artifacts: npm run <group>-meeting:dev
Code Quality
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues automatically
npm run format # Format code with Prettier
npm run format:check # Check code formatting
npm run check # Run both linting and formatting checks
🚀 Usage
Local Development
# Using npx
npx --env-file=.env . tsc
# Direct execution (with a `.env` file)
node --env-file=.env create-node-meeting-artifacts.mjs tsc
📂 Output
The application creates:
GitHub Issue: Posted to the configured repository with meeting details and agenda
HackMD Document: Meeting minutes document in Markdown format with collaborative editing
Console Output: Links to both the created issue and HackMD document
🔧 Configuration
Environment Variables
Required
GITHUB_TOKEN: GitHub Personal Access Token
HACKMD_API_TOKEN: HackMD API token for creating and managing documents
Meeting Base Configuration
Each meeting_base_<group> file contains:
CALENDAR_FILTER="Meeting Name in Calendar"
USER="nodejs"
REPO="repository-name"
GROUP_NAME="Full Group Name"
AGENDA_TAG="agenda-label"
ISSUE_LABEL="optional-issue-label"
HACKMD_TEAM_NAME="openjs-nodejs"
JOINING_INSTRUCTIONS="Meeting join instructions"
Node.js Meeting Artifacts Creator
A modern Node.js application that creates GitHub issues and HackMD documents for Node.js team meetings. This tool automates the process of reading meeting configuration, fetching calendar events, creating meeting minutes documents, and posting GitHub issues.
📋 Requirements
🔑 Authentication Setup
GitHub Authentication
repo(Full control of private repositories)user(Read user information)HackMD Authentication
📁 Project Structure
📝 Meeting Templates
Meeting configurations are stored in the
templates/directory. Each meeting group requires four template files:invited_<group>: List of invited attendees (GitHub team mentions)observers_<group>: List of observers with their detailsmeeting_base_<group>: Base meeting configuration (calendar ID, GitHub repo, etc.)minutes_base_<group>: Template for meeting minutes documentFor detailed information about creating new templates, see TEMPLATES_DOCUMENTATION.md.
Template Variables
Templates support the following replacement variables:
$TITLE$: Meeting title$AGENDA_CONTENT$: Auto-generated agenda items$INVITED$: Invited attendees list$OBSERVERS$: Observers list$GITHUB_ISSUE$: GitHub issue URL$MINUTES_DOC$: Google Doc URL➕ Adding New Meeting Groups
To add a new meeting group to the system, you need to create templates and update configuration in three places:
1. Create Template Files
Create four template files in the
templates/directory following the naming convention:See TEMPLATES_DOCUMENTATION.md for detailed template examples and variable explanations.
2. Update GitHub Actions Workflows
Add your meeting group to both workflow files:
.github/workflows/create-meeting-artifacts-manual.yml.github/workflows/create-meeting-artifacts-scheduled.ymlFor manual workflow, add your group to the
optionslist underworkflow_dispatch.inputs.meeting_group:For scheduled workflow, add your group to the
matrix.meeting_grouplist:3. Update Package.json Scripts
Add npm scripts to
package.jsonfollowing this pattern:Important Notes:
your-meeting-group-meetingyour_meeting_group:dev) versions--env-file=.envfor local testing🏗️ Development
Environment Setup
npm install.env.exampleto.envand configure your credentialsnpm run <group>-meeting:devCode Quality
🚀 Usage
Local Development
📂 Output
The application creates:
🔧 Configuration
Environment Variables
Required
GITHUB_TOKEN: GitHub Personal Access TokenHACKMD_API_TOKEN: HackMD API token for creating and managing documentsMeeting Base Configuration
Each
meeting_base_<group>file contains: