Skip to content

Commit 37e4a07

Browse files
author
Mikalai Saskavets
committed
Add local community pages for Hacktoberfest, PyCon Belarus, Wagtail Space, and meetup history.
Tell these stories on our own pages instead of sending people to MLH listings, Telegram dumps, or a one-line homepage card: - A Hacktoberfest hub with year pages for 2020, 2021, 2024, and 2025, including the first branded kick-off and Final Night in 2020 and the 2025 kick-off. - A PyCon Belarus page covering the 2015–2021 conference run and its overlap with the meetup. - Wagtail Space Minsk 2018 as the earlier October open-source sprint that preceded branded Hacktoberfest events. - A history page on becoming an independent community, including partners, Python Pet Projects, and people from that period. Homepage initiative cards and copy now link into those pages.
1 parent 25ea444 commit 37e4a07

16 files changed

Lines changed: 2708 additions & 123 deletions

File tree

‎.gitignore‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
.DS_Store
2-
.idea
2+
.idea
3+
tmp/

‎assets/css/hacktoberfest.css‎

Lines changed: 383 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,383 @@
1+
/* Hacktoberfest article pages — community accents, readable prose */
2+
3+
:root {
4+
--hf-accent: #a14668;
5+
--hf-accent-glow: #ff8de0;
6+
--hf-navy: #072540;
7+
--hf-text: #24292e;
8+
--hf-muted: #586069;
9+
--hf-border: #e1e4e8;
10+
--hf-bg-soft: #f6f8fa;
11+
}
12+
13+
body.hf-page {
14+
color: var(--hf-text);
15+
}
16+
17+
.hf-page .extra-wrapper.head-wrap {
18+
background-image: url(../images/mpm-bg-new.jpg);
19+
background-position: top center;
20+
background-repeat: no-repeat;
21+
background-size: cover;
22+
}
23+
24+
.hf-page .head {
25+
height: auto;
26+
min-height: 180px;
27+
padding: 1.5em 20px 2em;
28+
font-size: 1.4em;
29+
}
30+
31+
.hf-page .head h1 {
32+
font-size: 1.35em;
33+
margin: 0.2em 0 0.4em;
34+
}
35+
36+
.hf-page .head .hf-tagline {
37+
font-size: 0.55em;
38+
max-width: 36em;
39+
margin: 0;
40+
opacity: 0.95;
41+
}
42+
43+
.hf-breadcrumb {
44+
font-size: 0.85rem;
45+
margin-bottom: 0.75em;
46+
text-shadow: none;
47+
}
48+
49+
.hf-breadcrumb a {
50+
color: #fff;
51+
text-decoration: underline;
52+
text-underline-offset: 2px;
53+
}
54+
55+
.hf-breadcrumb a:hover {
56+
opacity: 0.9;
57+
}
58+
59+
.hf-breadcrumb span {
60+
opacity: 0.85;
61+
}
62+
63+
.hf-year-nav {
64+
display: flex;
65+
flex-wrap: wrap;
66+
gap: 0.5em;
67+
justify-content: center;
68+
padding: 1.25em 1em 0;
69+
max-width: 900px;
70+
margin: 0 auto;
71+
}
72+
73+
.hf-year-nav a {
74+
display: inline-block;
75+
padding: 0.35em 0.9em;
76+
border-radius: 999px;
77+
border: 1px solid var(--hf-border);
78+
color: var(--hf-accent);
79+
font-weight: 600;
80+
font-size: 0.95rem;
81+
text-decoration: none;
82+
background: #fff;
83+
}
84+
85+
.hf-year-nav a:hover {
86+
border-color: var(--hf-accent);
87+
background: var(--hf-bg-soft);
88+
text-decoration: none;
89+
}
90+
91+
.hf-year-nav a.is-active {
92+
background: var(--hf-accent);
93+
border-color: var(--hf-accent);
94+
color: #fff;
95+
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.15);
96+
}
97+
98+
.hf-article {
99+
max-width: 720px;
100+
margin: 0 auto;
101+
padding: 1.5em 24px 4em;
102+
}
103+
104+
.hf-article h1.hf-title {
105+
text-align: left;
106+
font-size: 2rem;
107+
color: var(--hf-accent);
108+
text-shadow: 2px 2px 0 var(--hf-accent-glow);
109+
padding: 0.5em 0 0.35em;
110+
margin: 0;
111+
}
112+
113+
.hf-article h2 {
114+
text-align: left;
115+
font-size: 1.35rem;
116+
color: var(--hf-navy);
117+
padding: 1.75em 0 0.5em;
118+
margin: 0;
119+
border-bottom: 2px solid var(--hf-accent-glow);
120+
}
121+
122+
.hf-article h3 {
123+
text-align: left;
124+
font-size: 1.1rem;
125+
color: var(--hf-accent);
126+
padding: 1.25em 0 0.35em;
127+
margin: 0;
128+
}
129+
130+
.hf-article p,
131+
.hf-article li {
132+
text-align: left;
133+
line-height: 1.65;
134+
color: var(--hf-text);
135+
}
136+
137+
.hf-article p {
138+
margin: 0 0 1em;
139+
padding: 0;
140+
}
141+
142+
.hf-article ul,
143+
.hf-article ol {
144+
margin: 0 0 1.25em;
145+
padding-left: 1.4em;
146+
}
147+
148+
.hf-article li {
149+
margin-bottom: 0.4em;
150+
}
151+
152+
.hf-article a {
153+
color: var(--hf-accent);
154+
}
155+
156+
.hf-lede {
157+
font-size: 1.15rem;
158+
color: var(--hf-muted);
159+
margin-bottom: 1.5em !important;
160+
}
161+
162+
.hf-meta {
163+
display: flex;
164+
flex-wrap: wrap;
165+
gap: 0.5em;
166+
margin: 0 0 1.75em;
167+
padding: 0;
168+
list-style: none;
169+
}
170+
171+
.hf-meta li {
172+
display: inline-block;
173+
margin: 0;
174+
padding: 0.35em 0.75em;
175+
font-size: 0.85rem;
176+
background: var(--hf-bg-soft);
177+
border: 1px solid var(--hf-border);
178+
border-radius: 6px;
179+
color: var(--hf-muted);
180+
}
181+
182+
.hf-meta strong {
183+
color: var(--hf-navy);
184+
font-weight: 600;
185+
}
186+
187+
.hf-callout {
188+
background: linear-gradient(135deg, rgba(7, 37, 64, 0.06), rgba(161, 70, 104, 0.08));
189+
border-left: 4px solid var(--hf-accent);
190+
border-radius: 0 8px 8px 0;
191+
padding: 1em 1.15em;
192+
margin: 0 0 1.5em;
193+
}
194+
195+
.hf-callout p:last-child {
196+
margin-bottom: 0;
197+
}
198+
199+
.hf-schedule {
200+
list-style: none;
201+
padding: 0;
202+
margin: 0 0 1.5em;
203+
border: 1px solid var(--hf-border);
204+
border-radius: 8px;
205+
overflow: hidden;
206+
}
207+
208+
.hf-schedule li {
209+
display: flex;
210+
gap: 1em;
211+
margin: 0;
212+
padding: 0.75em 1em;
213+
border-bottom: 1px solid var(--hf-border);
214+
background: #fff;
215+
}
216+
217+
.hf-schedule li:nth-child(even) {
218+
background: var(--hf-bg-soft);
219+
}
220+
221+
.hf-schedule li:last-child {
222+
border-bottom: none;
223+
}
224+
225+
.hf-schedule time {
226+
flex: 0 0 4.5em;
227+
font-weight: 600;
228+
color: var(--hf-accent);
229+
font-variant-numeric: tabular-nums;
230+
}
231+
232+
.hf-year-cards {
233+
display: grid;
234+
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
235+
gap: 1em;
236+
margin: 1.5em 0 2em;
237+
padding: 0;
238+
list-style: none;
239+
}
240+
241+
.hf-year-cards a.hf-card {
242+
display: block;
243+
height: 100%;
244+
padding: 1.25em;
245+
border: 1px solid var(--hf-border);
246+
border-radius: 10px;
247+
text-decoration: none;
248+
color: inherit;
249+
background: #fff;
250+
transition: border-color 0.15s ease, box-shadow 0.15s ease;
251+
}
252+
253+
.hf-year-cards a.hf-card:hover {
254+
border-color: var(--hf-accent);
255+
box-shadow: 0 4px 14px rgba(7, 37, 64, 0.1);
256+
text-decoration: none;
257+
}
258+
259+
.hf-card .hf-card-year {
260+
display: block;
261+
font-size: 1.5rem;
262+
font-weight: 700;
263+
color: var(--hf-accent);
264+
text-shadow: 1px 1px 0 var(--hf-accent-glow);
265+
margin-bottom: 0.35em;
266+
}
267+
268+
.hf-card p {
269+
margin: 0;
270+
font-size: 0.95rem;
271+
color: var(--hf-muted);
272+
}
273+
274+
.hf-sources {
275+
display: flex;
276+
flex-wrap: wrap;
277+
gap: 0.6em;
278+
margin: 0.75em 0 1.5em;
279+
}
280+
281+
.hf-sources a {
282+
display: inline-block;
283+
padding: 0.45em 0.95em;
284+
border-radius: 6px;
285+
background: var(--hf-navy);
286+
color: #fff !important;
287+
font-size: 0.9rem;
288+
font-weight: 600;
289+
text-decoration: none;
290+
}
291+
292+
.hf-sources a:hover {
293+
background: var(--hf-accent);
294+
text-decoration: none;
295+
}
296+
297+
.hf-sources a.hf-source-secondary {
298+
background: #fff;
299+
color: var(--hf-accent) !important;
300+
border: 1px solid var(--hf-accent);
301+
}
302+
303+
.hf-sources a.hf-source-secondary:hover {
304+
background: var(--hf-bg-soft);
305+
}
306+
307+
.hf-pager {
308+
display: flex;
309+
flex-wrap: wrap;
310+
justify-content: space-between;
311+
gap: 0.75em;
312+
margin: 2.5em 0 0;
313+
padding-top: 1.5em;
314+
border-top: 1px solid var(--hf-border);
315+
font-size: 0.95rem;
316+
}
317+
318+
.hf-pager a {
319+
font-weight: 600;
320+
}
321+
322+
.hf-join {
323+
display: flex;
324+
flex-wrap: wrap;
325+
gap: 1.25em;
326+
align-items: center;
327+
margin: 1em 0 0;
328+
}
329+
330+
.hf-join a.ico-discord,
331+
.hf-join a.ico-telegram,
332+
.hf-join a.ico-github {
333+
vertical-align: middle;
334+
}
335+
336+
.hf-page .footer .content {
337+
max-width: 900px;
338+
margin: 0 auto;
339+
padding: 0 20px;
340+
}
341+
342+
.hf-page .footer .three-in-row > div {
343+
width: auto;
344+
padding: 0 1.5em 0.5em;
345+
}
346+
347+
.hf-project-list {
348+
columns: 2;
349+
column-gap: 1.5em;
350+
margin-bottom: 1.5em;
351+
}
352+
353+
.hf-project-list li {
354+
break-inside: avoid;
355+
}
356+
357+
.hf-meta a {
358+
color: var(--hf-accent);
359+
}
360+
361+
@media (max-width: 540px) {
362+
.hf-page .head {
363+
font-size: 1.15em;
364+
min-height: 140px;
365+
}
366+
367+
.hf-article h1.hf-title {
368+
font-size: 1.55rem;
369+
}
370+
371+
.hf-schedule li {
372+
flex-direction: column;
373+
gap: 0.25em;
374+
}
375+
376+
.hf-schedule time {
377+
flex: none;
378+
}
379+
380+
.hf-project-list {
381+
columns: 1;
382+
}
383+
}

0 commit comments

Comments
 (0)