-
Notifications
You must be signed in to change notification settings - Fork 14
/
CONTRIBUTING-POSTS.md
196 lines (155 loc) · 5.9 KB
/
CONTRIBUTING-POSTS.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# Contributing to meeting posts
On this page:
* [Editing](#editing)
* [Creating](#creating)
* [Publishing](#publishing)
---
## Editing
There are two ways to edit an existing post:
1. Directly edit [post files](https://github.com/austinjavascript/austinjavascript.com/tree/master/_posts) online and submit Pull Request.
1. Clone the repo locally (see next section), edit/save, git commit/push, and then open a Pull Request.
## Creating
### Setup local environment
1. Fork the [Austin JavaScript GitHub](https://github.com/austinjavascript/austinjavascript.com/) repo to your org.
1. Clone your repo to a local directory, replacing `{my-username}` below with your username.
```sh
git clone https://github.com/{my-username}/austinjavascript.com.git
cd austinjavascript.com
```
1. Set the `upstream` remote repo to "austinjavascript". (If you look at `.git/config`, you should see that your fork is the `origin` remote.)
```sh
git remote add upstream https://github.com/austinjavascript/austinjavascript.com.git
```
2. Create a new git branch for your work.
```sh
git checkout -b new-post
```
3. To review your work, you may want to run [Eleventy](https://11ty.dev/) — a JavaScript static site generator.
```sh
npm install
```
Once all the packages are done loading, you can start a local server.
```sh
npm start
```
Once the server is up and running, point your browser to the address that shows up in the terminal (e.g., http://localhost:8080) and enjoy the scenery.
### Create new file
To create a new meetup post, copy the `/_drafts_/YYYY-MM-DD-meetup.md` file to the `/_meetups/` directory, changing `YYYY-MM-DD` to the appropriate year, month, and date.
> **IMPORTANT:** Make sure the date part of the file name is the **event date**. This will be used for all related event data.
### Add meetup details and content
Open the [Markdown](https://commonmark.org/) file and notice the file structure.
```yaml
---
{YAML front matter}
---
{Markdown content}
```
* The *{[YAML front matter](https://jekyllrb.com/docs/front-matter/)}* contains all the variables that will be used by a magical template (`/_layouts/meetup.html`) to generate posts. It has the format:
```yaml
---
layout: meetup
title: {presentation title}
when: {ISO-8601 date-- e.g., 2019-04-16T19:30:00-05:00}
slides: {presentation slides URL}
video: {presentation video URL}
speakers:
- name: {full name - REQUIRED}
title: {professional title}
avatar: {twitter image URL}
bio: {short bio blurb}
email: {email address}
homepage: {homepage url}
twitter: {profile name}
github: {profile name}
linkedin: {profile name}
sponsor: {key to sponsor data}
name: {sponsor full name}
url: {sponsor homepage URL}
careerUrl: {sponsor career page URL}
logo: {sponsor logo URL}
venue: {key to host venue data - REQUIRED}
after: {key to "after party" data}
organizers:
- {key to people data}
---
```
<!-- markdownlint-disable md023 -->
#### YAML tips
> NOTE: `speakers` is a YAML array, so each `name` should be preceded by a dash. For example:
>
> ```yaml
> speakers:
> - name: Pat Anser
> title: Developer Extraordinaire at Austin JavaScript
> ..
> - name: Dale Andhill
> title: Another Developer
> ..
> ```
>
> If there are no speakers for the meetup, leave only the `speakers:` field and remove the rest of the array (e.g., `-name: ...`).
>
> NOTE: Should any front matter value start with a `[` or `{` character, it will confuse the YAML parser (it thinks it's an array or object) and throw an error. If you need to start the value with one of those characters, be sure to wrap the entire value with quotes.
>
> ```yaml
> ..
> bio: [Bob](https://bobross.com) is an American icon. ## throws error
> bio: "[Bob](https://bobross.com) is an American icon." ## works
> ..
> ```
>
> NOTE: For multiline YAML, start the 1st line with a pipe, then start the content on the next line, indented.
>
> ```yaml
> ..
> bio: |
> This is a sentence.
>
> This is another sentence.
>
> * This is a list item
> * This is another list item
> ..
> ```
>
#### Data tips
> NOTE: For `sponsor`, if a key to the sponsor info exists in the `/_data/organizations.yaml` file, then use it alone.
>
> ```yaml
> ..
> sponsor: {key_name}
> venue: ...
> ..
> ```
>
> If an org key doesn't exist, then add the fields: `name`, `url`, `careerUrl` (optional), `logo` (optional), and `message` (optional wholesale replacement text for sponsor template).
>
> ```yaml
> ..
> sponsor:
> name: {sponsor name}
> url: {sponsor URL}
> venue: ...
> ..
> ```
The `sponsor`, `venue`, and `after` key values can be found in or added to `/_data_/organizations.yaml`. The format for that YAML file is:
```yaml
{key - REQUIRED}:
name: {org full name - REQUIRED}
url: {org homepage URL}
careerUrl: {org career page URL}
logo: {org logo URL}
location: {org full street address + floor and/or room}
note: {additional notes}
```
* The _{Markdown content}_ follows the [CommonMark spec](https://commonmark.org/help/) for creating formatted HTML from plain text. Some tips for content:
* Provide context for presentation. What was the problem, solution, drama?
* Hyperlink all the things! ...and use Markdown syntax (e.g., `[Eleventy](https://11ty.dev/)`).
## Publishing
Save and commit. Then push to your repo.
```sh
git add .
git commit -m "Add new meetup post"
git push origin new-post
```
Open your browser to the [austinjavascript.com](https://www.github.com/austinjavascript/austinjavascript.com/) repo (or your fork) and open a Pull Request.