aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pydis_site/apps/home/README.md3
-rw-r--r--pydis_site/apps/home/urls.py3
-rw-r--r--pydis_site/apps/home/views.py5
-rw-r--r--pydis_site/apps/timeline/README.md45
-rw-r--r--pydis_site/apps/timeline/__init__.py0
-rw-r--r--pydis_site/apps/timeline/apps.py50
-rw-r--r--pydis_site/apps/timeline/entries/2017-01-08_python-discord-is-created.md9
-rw-r--r--pydis_site/apps/timeline/entries/2017-11-10_1000-members.md10
-rw-r--r--pydis_site/apps/timeline/entries/2018-02-03_our-logo-is-born.md9
-rw-r--r--pydis_site/apps/timeline/entries/2018-03-04_pydis-hits-2000-members-pythondiscord-com-and-python-are-live.md11
-rw-r--r--pydis_site/apps/timeline/entries/2018-03-23_first-code-jam-with-the-theme-snakes.md12
-rw-r--r--pydis_site/apps/timeline/entries/2018-05-21_privacy-policy-created.md12
-rw-r--r--pydis_site/apps/timeline/entries/2018-06-09_do-you-even-python-and-pydis-merger.md13
-rw-r--r--pydis_site/apps/timeline/entries/2018-06-20_pydis-hits-5000-members-and-partners-with-r-python.md10
-rw-r--r--pydis_site/apps/timeline/entries/2018-07-10_pydis-is-now-partnered-with-discord.md10
-rw-r--r--pydis_site/apps/timeline/entries/2018-10-01_first-hacktoberfest-pydis-event.md12
-rw-r--r--pydis_site/apps/timeline/entries/2018-11-24_10000-members.md9
-rw-r--r--pydis_site/apps/timeline/entries/2018-12-19_django-simple-bulma-is-released-on-pypi.md11
-rw-r--r--pydis_site/apps/timeline/entries/2019-04-08_15000-members.md10
-rw-r--r--pydis_site/apps/timeline/entries/2019-09-15_the-django-rewrite-of-pythondiscord-com.md10
-rw-r--r--pydis_site/apps/timeline/entries/2019-09-22_sebastiaan-zeef-becomes-an-owner.md9
-rw-r--r--pydis_site/apps/timeline/entries/2019-10-26_code-of-conduct-created.md10
-rw-r--r--pydis_site/apps/timeline/entries/2019-12-22_30000-members.md10
-rw-r--r--pydis_site/apps/timeline/entries/2020-01-17_pydis-sixth-code-jam.md16
-rw-r--r--pydis_site/apps/timeline/entries/2020-04-05_new-help-channel-system.md11
-rw-r--r--pydis_site/apps/timeline/entries/2020-04-14_40000-members.md8
-rw-r--r--pydis_site/apps/timeline/entries/2020-04-17_pydis-game-jam-2020.md15
-rw-r--r--pydis_site/apps/timeline/entries/2020-05-25_modmail-is-now-live.md11
-rw-r--r--pydis_site/apps/timeline/entries/2020-05-28_python-discord-is-now-listed-on-python-org.md11
-rw-r--r--pydis_site/apps/timeline/entries/2020-06-04_python-discord-public-statistics-are-now-live.md10
-rw-r--r--pydis_site/apps/timeline/entries/2020-07-31_pydis-summer-code-jam-2020.md14
-rw-r--r--pydis_site/apps/timeline/entries/2020-08-16_python-discord-is-now-the-new-home-of-the-pyweek-event.md10
-rw-r--r--pydis_site/apps/timeline/entries/2020-10-21_2020-cpython-core-developer-q-a.md9
-rw-r--r--pydis_site/apps/timeline/entries/2020-10-22_100000-members.md10
-rw-r--r--pydis_site/apps/timeline/entries/2020-11-29_we-migrate-all-our-infrastructure-to-kubernetes.md10
-rw-r--r--pydis_site/apps/timeline/entries/2020-12-01_advent-of-code.md11
-rw-r--r--pydis_site/apps/timeline/entries/2021-02-08_we-release-the-pep-8-song.md14
-rw-r--r--pydis_site/apps/timeline/entries/2021-02-18_150000-members.md8
-rw-r--r--pydis_site/apps/timeline/entries/2021-03-01_leon-sandoy-appears-on-talk-python-to-me.md16
-rw-r--r--pydis_site/apps/timeline/entries/2021-03-13_new-feature-weekly-discussion-channel.md16
-rw-r--r--pydis_site/apps/timeline/entries/2021-03-13_teaching-python-podcast.md14
-rw-r--r--pydis_site/apps/timeline/entries/2021-03-21_summer-code-jam-2020-highlights.md15
-rw-r--r--pydis_site/apps/timeline/entries/2021-04-23_owners-become-psf-fellows.md10
-rw-r--r--pydis_site/apps/timeline/entries/2021-05-24_inaugural-run-of-pixels.md14
-rw-r--r--pydis_site/apps/timeline/entries/2021-05-24_partnership-with-black.md10
-rw-r--r--pydis_site/apps/timeline/entries/2021-07-09_summer-code-jam-2021-cj8.md11
-rw-r--r--pydis_site/apps/timeline/entries/2021-10-04_python-310-release-stream.md16
-rw-r--r--pydis_site/apps/timeline/entries/2022-01-19_300000-members.md9
-rw-r--r--pydis_site/apps/timeline/entries/2022-02-02_smarter-resources.md11
-rw-r--r--pydis_site/apps/timeline/entries/2022-02-09_events-team.md9
-rw-r--r--pydis_site/apps/timeline/entries/2022-02-12_trivia-night.md11
-rw-r--r--pydis_site/apps/timeline/entries/2022-02-21_sir-robin.md9
-rw-r--r--pydis_site/apps/timeline/entries/2022-05-19_partnership-with-pyqtgraph.md9
-rw-r--r--pydis_site/apps/timeline/entries/2022-07-21_summer-code-jam-2022-cj9.md17
-rw-r--r--pydis_site/apps/timeline/entries/2022-10-24_python-311-release-stream.md17
-rw-r--r--pydis_site/apps/timeline/entries/2022-11-25_switch-to-forum-based-help-system.md11
-rw-r--r--pydis_site/apps/timeline/entries/2023-01-30_retirement-of-joe-and-sebastiaan.md12
-rw-r--r--pydis_site/apps/timeline/entries/2023-07-11_new-paste-service.md13
-rw-r--r--pydis_site/apps/timeline/tests/__init__.py0
-rw-r--r--pydis_site/apps/timeline/tests/test_views.py10
-rw-r--r--pydis_site/apps/timeline/urls.py9
-rw-r--r--pydis_site/apps/timeline/views.py20
-rw-r--r--pydis_site/settings.py1
-rw-r--r--pydis_site/static/css/timeline/timeline.css (renamed from pydis_site/static/css/home/timeline.css)9
-rw-r--r--pydis_site/templates/base/navbar.html2
-rw-r--r--pydis_site/templates/home/index.html2
-rw-r--r--pydis_site/templates/home/timeline.html983
-rw-r--r--pydis_site/templates/timeline/timeline.html39
-rw-r--r--pydis_site/urls.py1
69 files changed, 783 insertions, 994 deletions
diff --git a/pydis_site/apps/home/README.md b/pydis_site/apps/home/README.md
index 34c1e367..1296ea3f 100644
--- a/pydis_site/apps/home/README.md
+++ b/pydis_site/apps/home/README.md
@@ -1,8 +1,7 @@
# The "home" app
This Django application takes care of serving the homepage of our website, that
-is, the first page that you see when you open pythondiscord.com. It also
-manages the timeline page showcasing the history of our community.
+is, the first page that you see when you open pythondiscord.com.
## Directory structure
diff --git a/pydis_site/apps/home/urls.py b/pydis_site/apps/home/urls.py
index 30321ece..ccbb5824 100644
--- a/pydis_site/apps/home/urls.py
+++ b/pydis_site/apps/home/urls.py
@@ -1,9 +1,8 @@
from django_distill import distill_path
-from .views import HomeView, timeline
+from .views import HomeView
app_name = 'home'
urlpatterns = [
distill_path('', HomeView.as_view(), name='home'),
- distill_path('timeline/', timeline, name="timeline"),
]
diff --git a/pydis_site/apps/home/views.py b/pydis_site/apps/home/views.py
index bfa9e02d..71f95293 100644
--- a/pydis_site/apps/home/views.py
+++ b/pydis_site/apps/home/views.py
@@ -153,8 +153,3 @@ class HomeView(View):
"""Collect repo data and render the homepage view."""
repo_data = self._get_repo_data()
return render(request, "home/index.html", {"repo_data": repo_data})
-
-
-def timeline(request: WSGIRequest) -> HttpResponse:
- """Render timeline view."""
- return render(request, 'home/timeline.html')
diff --git a/pydis_site/apps/timeline/README.md b/pydis_site/apps/timeline/README.md
new file mode 100644
index 00000000..0b639261
--- /dev/null
+++ b/pydis_site/apps/timeline/README.md
@@ -0,0 +1,45 @@
+# The "timeline" app
+
+The [timeline page](https://www.pythondiscord.com/timeline/) on our website is
+powered by this Django application.
+
+## The entries
+
+Timeline entries are written in markdown files with YAML frontmatter under the
+`entries` directory.
+
+Each file represents a timeline entry. The file names have the format
+`<date>_<name>.md`, where:
+- `date` is in `YYYY-MM-DD` for easy sorting of files in directory listings,
+ also used for sorting of the entries displayed on the timeline page.
+- `name` is an arbitrary slug in `kebab-case`, used for linking to individual
+ timeline entries on the page, which will be set in the `id` attribute for each
+ timeline item.
+
+Each file contains:
+- A YAML frontmatter, which defines some metadata shown next to each entry in
+ the timeline, including:
+ - `date`: User-facing date label.
+ - `icon`: The CSS class used for the icon, e.g. "fa fa-snowflake". Set to
+ `pydis` to use the pydis logo image.
+ - `icon_color`: The CSS class that sets the background color of the icon, e.g.
+ "pastel-red". List of available colors can be found in [the CSS
+ file](../../static/css/timeline/timeline.css). This can be omitted if the
+ pydis logo is used.
+- Markdown content.
+
+
+## Directory structure
+
+The app has a single view in `views.py` that renders the template using the list
+of parsed entries from `apps.py`, which reads the markdown files on startup.
+This is a standard Django view, mounted in `urls.py` as usual.
+
+The `tests` directory validates that the page renders successfully as expected.
+If you made changes to the app and are looking for guidance on adding new tests,
+the [Django tutorial introducing automated
+testing](https://docs.djangoproject.com/en/dev/intro/tutorial05/) is a good
+place to start.
+
+This application does not use the database and as such does not have models nor
+migrations.
diff --git a/pydis_site/apps/timeline/__init__.py b/pydis_site/apps/timeline/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/pydis_site/apps/timeline/__init__.py
diff --git a/pydis_site/apps/timeline/apps.py b/pydis_site/apps/timeline/apps.py
new file mode 100644
index 00000000..37a61e93
--- /dev/null
+++ b/pydis_site/apps/timeline/apps.py
@@ -0,0 +1,50 @@
+from pathlib import Path
+
+from django.apps import AppConfig
+import frontmatter
+import markdown
+
+from pydis_site import settings
+
+
+ENTRIES_PATH = Path(settings.BASE_DIR, "pydis_site", "apps", "timeline", "entries")
+
+
+class TimelineConfig(AppConfig):
+ """AppConfig instance for Timeline app."""
+
+ name = 'pydis_site.apps.timeline'
+
+ def ready(self) -> None:
+ """Fetch all the timeline entries."""
+ self.entries = []
+
+ for path in ENTRIES_PATH.rglob("*.md"):
+ metadata, content = frontmatter.parse(path.read_text(encoding="utf-8"))
+
+ md = markdown.Markdown()
+ html = str(md.convert(content))
+
+ # Strip `.md` file extension from filename and split it into the
+ # date (for sorting) and slug (for linking).
+ key, slug = path.name[:-3].split("_")
+
+ icon_color = metadata.get("icon_color")
+ # Use the pydis blurple as the default background color.
+ if not icon_color or metadata["icon"] == "pydis":
+ icon_color = "has-background-primary"
+
+ entry = {
+ "key": key,
+ "slug": slug,
+ "title": metadata["title"],
+ "date": metadata["date"],
+ "icon": metadata["icon"],
+ "icon_color": icon_color,
+ "content": html,
+ }
+
+ self.entries.append(entry)
+
+ # Sort the entries in reverse-chronological order.
+ self.entries.sort(key=lambda e: e['key'], reverse=True)
diff --git a/pydis_site/apps/timeline/entries/2017-01-08_python-discord-is-created.md b/pydis_site/apps/timeline/entries/2017-01-08_python-discord-is-created.md
new file mode 100644
index 00000000..31775b3b
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2017-01-08_python-discord-is-created.md
@@ -0,0 +1,9 @@
+---
+title: Python Discord is created
+date: Jan 8th, 2017
+icon: pydis
+---
+
+**Joe Banks** becomes one of the owners around 3 days after it is created, and
+**Leon Sandøy** (lemon) joins the owner team later in the year, when the
+community has around 300 members.
diff --git a/pydis_site/apps/timeline/entries/2017-11-10_1000-members.md b/pydis_site/apps/timeline/entries/2017-11-10_1000-members.md
new file mode 100644
index 00000000..dd4ec829
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2017-11-10_1000-members.md
@@ -0,0 +1,10 @@
+---
+title: Python Discord hits 1,000 members
+date: Nov 10th, 2017
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+Our main source of new users at this point is a post on Reddit that happens to
+get very good SEO. We are one of the top 10 search engine hits for the search
+term "python discord".
diff --git a/pydis_site/apps/timeline/entries/2018-02-03_our-logo-is-born.md b/pydis_site/apps/timeline/entries/2018-02-03_our-logo-is-born.md
new file mode 100644
index 00000000..1cb2edb1
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-02-03_our-logo-is-born.md
@@ -0,0 +1,9 @@
+---
+title: Our logo is born. Thanks @Aperture!
+date: Feb 3rd, 2018
+icon: pydis
+---
+
+<p style="background-color: #7289DA; border-radius: 10px;">
+ <img style="padding-right: 20px;" src="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_banner/logo_site_banner.svg">
+</p>
diff --git a/pydis_site/apps/timeline/entries/2018-03-04_pydis-hits-2000-members-pythondiscord-com-and-python-are-live.md b/pydis_site/apps/timeline/entries/2018-03-04_pydis-hits-2000-members-pythondiscord-com-and-python-are-live.md
new file mode 100644
index 00000000..31ee1578
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-03-04_pydis-hits-2000-members-pythondiscord-com-and-python-are-live.md
@@ -0,0 +1,11 @@
+---
+title: PyDis hits 2,000 members; pythondiscord.com and @Python are live
+date: Mar 4th, 2018
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+The public moderation bot we're using at the time, Rowboat, announces it will be
+shutting down. We decide that we'll write our own bot to handle moderation, so
+that we can have more control over its features. We also buy a domain and start
+making a website in Flask.
diff --git a/pydis_site/apps/timeline/entries/2018-03-23_first-code-jam-with-the-theme-snakes.md b/pydis_site/apps/timeline/entries/2018-03-23_first-code-jam-with-the-theme-snakes.md
new file mode 100644
index 00000000..48b301e3
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-03-23_first-code-jam-with-the-theme-snakes.md
@@ -0,0 +1,12 @@
+---
+title: First code jam with the theme “snakes”
+date: Mar 23rd, 2018
+icon: fa fa-dice
+icon_color: pastel-blue
+---
+
+Our very first Code Jam attracts a handful of users who work in random teams of
+2. We ask our participants to write a snake-themed Discord bot. Most of the code
+written for this jam still lives on in Sir Lancebot, and you can play with it by
+using the `.snakes` command. For more information on this event, see [the event
+page](https://pythondiscord.com/pages/code-jams/code-jam-1-snakes-bot/)
diff --git a/pydis_site/apps/timeline/entries/2018-05-21_privacy-policy-created.md b/pydis_site/apps/timeline/entries/2018-05-21_privacy-policy-created.md
new file mode 100644
index 00000000..2202a5a8
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-05-21_privacy-policy-created.md
@@ -0,0 +1,12 @@
+---
+title: The privacy policy is created
+date: May 21st, 2018
+icon: fa fa-scroll
+icon_color: pastel-lime
+---
+
+Since data privacy is quite important to us, we create a privacy page pretty
+much as soon as our new bot and site starts collecting some data. To this day,
+we keep [our privacy policy](https://pythondiscord.com/pages/privacy/) up to
+date with all changes, and since April 2020 we've started doing [monthly data
+reviews](https://pythondiscord.notion.site/6784e3a9752444e89d19e65fd4510d8d).
diff --git a/pydis_site/apps/timeline/entries/2018-06-09_do-you-even-python-and-pydis-merger.md b/pydis_site/apps/timeline/entries/2018-06-09_do-you-even-python-and-pydis-merger.md
new file mode 100644
index 00000000..4390708e
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-06-09_do-you-even-python-and-pydis-merger.md
@@ -0,0 +1,13 @@
+---
+title: Do You Even Python and PyDis merger
+date: Jun 9th, 2018
+icon: fa fa-handshake
+icon_color: pastel-pink
+---
+
+At this point in time, there are only two serious Python communities on Discord
+- Ours, and one called Do You Even Python. We approach the owners of DYEP with a
+bold proposal - let's shut down their community, replace it with links to ours,
+and in return we will let their staff join our staff. This gives us a big boost
+in members, and eventually leads to @eivl and @Mr. Hemlock joining our Admin
+team
diff --git a/pydis_site/apps/timeline/entries/2018-06-20_pydis-hits-5000-members-and-partners-with-r-python.md b/pydis_site/apps/timeline/entries/2018-06-20_pydis-hits-5000-members-and-partners-with-r-python.md
new file mode 100644
index 00000000..c0a1d391
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-06-20_pydis-hits-5000-members-and-partners-with-r-python.md
@@ -0,0 +1,10 @@
+---
+title: PyDis hits 5,000 members and partners with r/Python
+date: Jun 20th, 2018
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+As we continue to grow, we approach the r/Python subreddit and ask to become
+their official Discord community. They agree, and we become listed in their
+sidebar, giving us yet another source of new members.
diff --git a/pydis_site/apps/timeline/entries/2018-07-10_pydis-is-now-partnered-with-discord.md b/pydis_site/apps/timeline/entries/2018-07-10_pydis-is-now-partnered-with-discord.md
new file mode 100644
index 00000000..f8bf226f
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-07-10_pydis-is-now-partnered-with-discord.md
@@ -0,0 +1,10 @@
+---
+title: PyDis is now partnered with Discord; the vanity URL discord.gg/python is created
+date: Jul 10th, 2018
+icon: fa fa-handshake
+icon_color: pastel-pink
+---
+
+After being rejected for their Partner program several times, we finally get
+approved. The recent partnership with the r/Python subreddit plays a significant
+role in qualifying us for this partnership.
diff --git a/pydis_site/apps/timeline/entries/2018-10-01_first-hacktoberfest-pydis-event.md b/pydis_site/apps/timeline/entries/2018-10-01_first-hacktoberfest-pydis-event.md
new file mode 100644
index 00000000..305bc8df
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-10-01_first-hacktoberfest-pydis-event.md
@@ -0,0 +1,12 @@
+---
+title: First Hacktoberfest PyDis event; @Sir Lancebot is created
+date: Oct 1st, 2018
+icon: fa fa-dice
+icon_color: pastel-blue
+---
+
+We create a second bot for our community and fill it up with simple, fun and
+relatively easy issues. The idea is to create an approachable arena for our
+members to cut their open-source teeth on, and to provide lots of help and hand-
+holding for those who get stuck. We're training our members to be productive
+contributors in the open-source ecosystem.
diff --git a/pydis_site/apps/timeline/entries/2018-11-24_10000-members.md b/pydis_site/apps/timeline/entries/2018-11-24_10000-members.md
new file mode 100644
index 00000000..4eca7453
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-11-24_10000-members.md
@@ -0,0 +1,9 @@
+---
+title: PyDis hits 10,000 members
+date: Nov 24th, 2018
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+We partner with RLBot, move from GitLab to GitHub, and start putting together
+the first Advent of Code event.
diff --git a/pydis_site/apps/timeline/entries/2018-12-19_django-simple-bulma-is-released-on-pypi.md b/pydis_site/apps/timeline/entries/2018-12-19_django-simple-bulma-is-released-on-pypi.md
new file mode 100644
index 00000000..a262b000
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2018-12-19_django-simple-bulma-is-released-on-pypi.md
@@ -0,0 +1,11 @@
+---
+title: django-simple-bulma is released on PyPi
+date: Dec 19th, 2018
+icon: fa fa-code
+icon_color: pastel-orange
+---
+
+Our very first package on PyPI, [django-simple-
+bulma](https://pypi.org/project/django-simple-bulma/) is a package that sets up
+the Bulma CSS framework for your Django application and lets you configure
+everything in settings.py.
diff --git a/pydis_site/apps/timeline/entries/2019-04-08_15000-members.md b/pydis_site/apps/timeline/entries/2019-04-08_15000-members.md
new file mode 100644
index 00000000..330bbd15
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2019-04-08_15000-members.md
@@ -0,0 +1,10 @@
+---
+title: PyDis hits 15,000 members; the “hot ones special” video is released
+date: Apr 8th, 2019
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" class="force-aspect-content" frameborder="0" src="https://www.youtube.com/embed/DIBXg8Qh7bA"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2019-09-15_the-django-rewrite-of-pythondiscord-com.md b/pydis_site/apps/timeline/entries/2019-09-15_the-django-rewrite-of-pythondiscord-com.md
new file mode 100644
index 00000000..b18975a8
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2019-09-15_the-django-rewrite-of-pythondiscord-com.md
@@ -0,0 +1,10 @@
+---
+title: The Django rewrite of pythondiscord.com is now live!
+date: Sep 15, 2019
+icon: fa fa-code
+icon_color: pastel-orange
+---
+
+The site is getting more and more complex, and it's time for a rewrite. We
+decide to go for a different stack, and build a website based on Django, DRF,
+Bulma and PostgreSQL.
diff --git a/pydis_site/apps/timeline/entries/2019-09-22_sebastiaan-zeef-becomes-an-owner.md b/pydis_site/apps/timeline/entries/2019-09-22_sebastiaan-zeef-becomes-an-owner.md
new file mode 100644
index 00000000..504c06e1
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2019-09-22_sebastiaan-zeef-becomes-an-owner.md
@@ -0,0 +1,9 @@
+---
+title: Sebastiaan Zeef becomes an owner
+date: Sept 22nd, 2019
+icon: pydis
+---
+
+After being a long time active contributor to our projects and the driving force
+behind many of our events, Sebastiaan Zeef joins the Owners Team alongside Joe &
+Leon.
diff --git a/pydis_site/apps/timeline/entries/2019-10-26_code-of-conduct-created.md b/pydis_site/apps/timeline/entries/2019-10-26_code-of-conduct-created.md
new file mode 100644
index 00000000..a4559c31
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2019-10-26_code-of-conduct-created.md
@@ -0,0 +1,10 @@
+---
+title: The code of conduct is created
+date: Oct 26th, 2019
+icon: fa fa-scroll
+icon_color: pastel-lime
+---
+
+Inspired by the Adafruit, Rust and Django communities, an essential community
+pillar is created; Our [Code of Conduct.](https://pythondiscord.com/pages/code-
+of-conduct/)
diff --git a/pydis_site/apps/timeline/entries/2019-12-22_30000-members.md b/pydis_site/apps/timeline/entries/2019-12-22_30000-members.md
new file mode 100644
index 00000000..273f46ad
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2019-12-22_30000-members.md
@@ -0,0 +1,10 @@
+---
+title: PyDis hits 30,000 members
+date: Dec 22nd, 2019
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+More than tripling in size since the year before, the community hits 30000
+users. At this point, we're probably the largest Python chat community on the
+planet.
diff --git a/pydis_site/apps/timeline/entries/2020-01-17_pydis-sixth-code-jam.md b/pydis_site/apps/timeline/entries/2020-01-17_pydis-sixth-code-jam.md
new file mode 100644
index 00000000..45048a8f
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-01-17_pydis-sixth-code-jam.md
@@ -0,0 +1,16 @@
+---
+title: PyDis sixth code jam with the theme “Ancient technology” and the technology Kivy
+date: Jan 17, 2020
+icon: fa fa-dice
+icon_color: pastel-blue
+---
+
+Our Code Jams are becoming an increasingly big deal, and the Kivy core
+developers join us to judge the event and help out our members during the event.
+One of them, @tshirtman, even joins our staff!
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
+allowfullscreen="" class="force-aspect-content" frameborder="0"
+src="https://www.youtube.com/embed/8fbZsGrqBzo"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2020-04-05_new-help-channel-system.md b/pydis_site/apps/timeline/entries/2020-04-05_new-help-channel-system.md
new file mode 100644
index 00000000..62db5434
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-04-05_new-help-channel-system.md
@@ -0,0 +1,11 @@
+---
+title: The new help channel system is live
+date: Apr 5th, 2020
+icon: fa fa-comments
+icon_color: pastel-green
+---
+
+We release our dynamic help-channel system, which allows you to claim your very
+own help channel instead of fighting over the static help channels. We release a
+[Help Channel Guide](https://pythondiscord.com/pages/resources/guides/help-
+channels/) to help our members fully understand how the system works.
diff --git a/pydis_site/apps/timeline/entries/2020-04-14_40000-members.md b/pydis_site/apps/timeline/entries/2020-04-14_40000-members.md
new file mode 100644
index 00000000..db9e40fe
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-04-14_40000-members.md
@@ -0,0 +1,8 @@
+---
+title: Python Discord hits 40,000 members, and is now bigger than Liechtenstein.
+date: Apr 14, 2020
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+![](https://raw.githubusercontent.com/python-discord/branding/main/wallpapers/bigger%20than%20liechtenstein/pydis%20postcard.png)
diff --git a/pydis_site/apps/timeline/entries/2020-04-17_pydis-game-jam-2020.md b/pydis_site/apps/timeline/entries/2020-04-17_pydis-game-jam-2020.md
new file mode 100644
index 00000000..b3b215ac
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-04-17_pydis-game-jam-2020.md
@@ -0,0 +1,15 @@
+---
+title: PyDis Game Jam 2020 with the “Three of a Kind” theme and Arcade as the technology
+date: Apr 17th, 2020
+icon: fa fa-gamepad
+icon_color: pastel-purple
+---
+
+The creator of Arcade, Paul Vincent Craven, joins us as a judge. Several of the
+Code Jam participants also end up getting involved contributing to the Arcade
+repository.
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" class="force-aspect-content" frameborder="0"
+src="https://www.youtube.com/embed/KkLXMvKfEgs"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2020-05-25_modmail-is-now-live.md b/pydis_site/apps/timeline/entries/2020-05-25_modmail-is-now-live.md
new file mode 100644
index 00000000..28a75d8b
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-05-25_modmail-is-now-live.md
@@ -0,0 +1,11 @@
+---
+title: ModMail is now live
+date: May 25th, 2020
+icon: fa fa-comments
+icon_color: pastel-green
+---
+
+Having originally planned to write our own ModMail bot from scratch, we come
+across an exceptionally good [ModMail bot by
+kyb3r](https://github.com/kyb3r/modmail) and decide to just self-host that one
+instead.
diff --git a/pydis_site/apps/timeline/entries/2020-05-28_python-discord-is-now-listed-on-python-org.md b/pydis_site/apps/timeline/entries/2020-05-28_python-discord-is-now-listed-on-python-org.md
new file mode 100644
index 00000000..e5b8f65f
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-05-28_python-discord-is-now-listed-on-python-org.md
@@ -0,0 +1,11 @@
+---
+title: Python Discord is now listed on python.org/community
+date: May 28th, 2020
+icon: fa fa-handshake
+icon_color: pastel-pink
+---
+
+After working towards this goal for months, we finally work out an arrangement
+with the PSF that allows us to be listed on that most holiest of websites:
+https://python.org/. [There was much
+rejoicing.](https://youtu.be/yciX2meIkXI?t=3)
diff --git a/pydis_site/apps/timeline/entries/2020-06-04_python-discord-public-statistics-are-now-live.md b/pydis_site/apps/timeline/entries/2020-06-04_python-discord-public-statistics-are-now-live.md
new file mode 100644
index 00000000..f92628d1
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-06-04_python-discord-public-statistics-are-now-live.md
@@ -0,0 +1,10 @@
+---
+title: Python Discord Public Statistics are now live
+date: Jun 4th, 2020
+icon: fa fa-chart-bar
+icon_color: pastel-red
+---
+
+After getting numerous requests to publish beautiful data on member count and
+channel use, we create
+[stats.pythondiscord.com](https://stats.pythondiscord.com/) for all to enjoy.
diff --git a/pydis_site/apps/timeline/entries/2020-07-31_pydis-summer-code-jam-2020.md b/pydis_site/apps/timeline/entries/2020-07-31_pydis-summer-code-jam-2020.md
new file mode 100644
index 00000000..0fe8df6b
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-07-31_pydis-summer-code-jam-2020.md
@@ -0,0 +1,14 @@
+---
+title: PyDis summer code jam 2020 with the theme “Early Internet” and Django as the technology
+date: Jul 31st, 2020
+icon: fa fa-dice
+icon_color: pastel-blue
+---
+
+Sponsored by the Django Software Foundation and JetBrains, the Summer Code Jam
+for 2020 attracts hundreds of participants, and sees the creation of some
+fantastic projects. Check them out in our judge stream below:
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" class="force-aspect-content" frameborder="0" src="https://www.youtube.com/embed/OFtm8f2iu6c"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2020-08-16_python-discord-is-now-the-new-home-of-the-pyweek-event.md b/pydis_site/apps/timeline/entries/2020-08-16_python-discord-is-now-the-new-home-of-the-pyweek-event.md
new file mode 100644
index 00000000..2fcd7ec5
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-08-16_python-discord-is-now-the-new-home-of-the-pyweek-event.md
@@ -0,0 +1,10 @@
+---
+title: Python Discord is now the new home of the PyWeek event!
+date: Aug 16th, 2020
+icon: fa fa-handshake
+icon_color: pastel-pink
+---
+
+PyWeek, a game jam that has been running since 2005, joins Python Discord as one
+of our official events. Find more information about PyWeek on [their official
+website](https://pyweek.org/).
diff --git a/pydis_site/apps/timeline/entries/2020-10-21_2020-cpython-core-developer-q-a.md b/pydis_site/apps/timeline/entries/2020-10-21_2020-cpython-core-developer-q-a.md
new file mode 100644
index 00000000..a7ddef89
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-10-21_2020-cpython-core-developer-q-a.md
@@ -0,0 +1,9 @@
+---
+title: Python Discord hosts the 2020 CPython Core Developer Q&A
+date: Oct 21st, 2020
+icon: pydis
+---
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" class="force-aspect-content" frameborder="0" src="https://www.youtube.com/embed/gXMdfBTcOfQ"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2020-10-22_100000-members.md b/pydis_site/apps/timeline/entries/2020-10-22_100000-members.md
new file mode 100644
index 00000000..3f196f2c
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-10-22_100000-members.md
@@ -0,0 +1,10 @@
+---
+title: Python Discord hits 100,000 members!
+date: Oct 22nd, 2020
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+Only six months after hitting 40,000 users, we hit 100,000 users. A monumental
+milestone, and one we're very proud of. To commemorate it, we create this
+timeline.
diff --git a/pydis_site/apps/timeline/entries/2020-11-29_we-migrate-all-our-infrastructure-to-kubernetes.md b/pydis_site/apps/timeline/entries/2020-11-29_we-migrate-all-our-infrastructure-to-kubernetes.md
new file mode 100644
index 00000000..00916c2a
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-11-29_we-migrate-all-our-infrastructure-to-kubernetes.md
@@ -0,0 +1,10 @@
+---
+title: We migrate all our infrastructure to Kubernetes
+date: Nov 29th, 2020
+icon: fa fa-wrench
+icon_color: pastel-orange
+---
+
+As our tech stack grows, we decide to migrate all our services over to a
+container orchestration paradigm via Kubernetes. This gives us better control
+and scalability. **Joe Banks** takes on the role as DevOps Lead.
diff --git a/pydis_site/apps/timeline/entries/2020-12-01_advent-of-code.md b/pydis_site/apps/timeline/entries/2020-12-01_advent-of-code.md
new file mode 100644
index 00000000..d24e02a1
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2020-12-01_advent-of-code.md
@@ -0,0 +1,11 @@
+---
+title: Advent of Code attracts hundreds of participants
+date: December 1st - 25th, 2020
+icon: fa fa-snowflake
+icon_color: pastel-red
+---
+
+A total of 443 Python Discord members sign up to be part of [Eric Wastl's
+excellent Advent of Code event](https://adventofcode.com/). As always, we
+provide dedicated announcements, scoreboards, bot commands and channels for our
+members to enjoy the event in.
diff --git a/pydis_site/apps/timeline/entries/2021-02-08_we-release-the-pep-8-song.md b/pydis_site/apps/timeline/entries/2021-02-08_we-release-the-pep-8-song.md
new file mode 100644
index 00000000..de97b1f4
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-02-08_we-release-the-pep-8-song.md
@@ -0,0 +1,14 @@
+---
+title: We release The PEP 8 song
+date: February 8th, 2021
+icon: fa fa-music
+icon_color: pastel-blue
+---
+
+We release the PEP 8 song on our YouTube channel, which finds tens of thousands
+of listeners!
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" class="force-aspect-content" frameborder="0"
+src="https://www.youtube.com/embed/hgI0p1zf31k"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2021-02-18_150000-members.md b/pydis_site/apps/timeline/entries/2021-02-18_150000-members.md
new file mode 100644
index 00000000..9a252255
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-02-18_150000-members.md
@@ -0,0 +1,8 @@
+---
+title: We now have 150,000 members!
+date: Feb 18th, 2021
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+Our growth continues to accelerate.
diff --git a/pydis_site/apps/timeline/entries/2021-03-01_leon-sandoy-appears-on-talk-python-to-me.md b/pydis_site/apps/timeline/entries/2021-03-01_leon-sandoy-appears-on-talk-python-to-me.md
new file mode 100644
index 00000000..0ea1eeaa
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-03-01_leon-sandoy-appears-on-talk-python-to-me.md
@@ -0,0 +1,16 @@
+---
+title: Leon Sandøy appears on Talk Python To Me
+date: Mar 1st, 2021
+icon: fa fa-microphone
+icon_color: pastel-green
+---
+
+Leon goes on the Talk Python to Me podcast with Michael Kennedy to discuss the
+history of Python Discord, the critical importance of culture, and how to run a
+massive community. You can find the episode [at
+talkpython.fm](https://talkpython.fm/episodes/show/305/python-community-at-
+python-discord).
+
+<iframe width="100%" height="166" scrolling="no" frameborder="no"
+src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/996083146&color=ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false">
+</iframe>
diff --git a/pydis_site/apps/timeline/entries/2021-03-13_new-feature-weekly-discussion-channel.md b/pydis_site/apps/timeline/entries/2021-03-13_new-feature-weekly-discussion-channel.md
new file mode 100644
index 00000000..f037aeba
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-03-13_new-feature-weekly-discussion-channel.md
@@ -0,0 +1,16 @@
+---
+title: "New feature: Weekly discussion channel"
+date: Mar 13th, 2021
+icon: fa fa-comment
+icon_color: pastel-purple
+---
+
+Every week (or two weeks), we'll be posting a new topic to discuss in a channel
+called **#weekly-topic-discussion**. Our inaugural topic is a PyCon talk by
+Anthony Shaw called **Wily Python: Writing simpler and more maintainable
+Python.**.
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" class="force-aspect-content" frameborder="0"
+src="https://www.youtube.com/embed/dqdsNoApJ80"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2021-03-13_teaching-python-podcast.md b/pydis_site/apps/timeline/entries/2021-03-13_teaching-python-podcast.md
new file mode 100644
index 00000000..ac2997d1
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-03-13_teaching-python-podcast.md
@@ -0,0 +1,14 @@
+---
+title: We're on the Teaching Python podcast!
+date: Mar 13th, 2021
+icon: fa fa-microphone
+icon_color: pastel-pink
+---
+
+Leon joins Sean and Kelly on the Teaching Python podcast to discuss how the
+pandemic has changed the way we learn, and what role communities like Python
+Discord can play in this new world. You can find the episode [at
+teachingpython.fm](https://www.teachingpython.fm/63).
+
+<iframe width="100%" height="166" frameborder="0" scrolling="no"
+src="https://player.fireside.fm/v2/UIYXtbeL+qOjGAsKi?theme=dark"></iframe>
diff --git a/pydis_site/apps/timeline/entries/2021-03-21_summer-code-jam-2020-highlights.md b/pydis_site/apps/timeline/entries/2021-03-21_summer-code-jam-2020-highlights.md
new file mode 100644
index 00000000..eebb69ff
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-03-21_summer-code-jam-2020-highlights.md
@@ -0,0 +1,15 @@
+---
+title: Summer Code Jam 2020 Highlights
+date: Mar 21st, 2021
+icon: fab fa-youtube
+icon_color: pastel-red
+---
+
+We release a new video to our YouTube showing the best projects from the Summer
+Code Jam 2020. Better late than never!
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
+allowfullscreen="" class="force-aspect-content" frameborder="0"
+src="https://www.youtube.com/embed/g9cnp4W0P54"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2021-04-23_owners-become-psf-fellows.md b/pydis_site/apps/timeline/entries/2021-04-23_owners-become-psf-fellows.md
new file mode 100644
index 00000000..9db51ac7
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-04-23_owners-become-psf-fellows.md
@@ -0,0 +1,10 @@
+---
+title: Owners become PSF Fellows
+date: April 23, 2021
+icon: pydis
+---
+
+Joe, Leon, and Sebastiaan [are recognized as Python Software Foundation
+Fellows](https://pyfound.blogspot.com/2021/04/python-software-foundation-
+fellow.html) for their substantial contributions to the Python ecosystem by
+fostering Python Discord.
diff --git a/pydis_site/apps/timeline/entries/2021-05-24_inaugural-run-of-pixels.md b/pydis_site/apps/timeline/entries/2021-05-24_inaugural-run-of-pixels.md
new file mode 100644
index 00000000..66ecf82e
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-05-24_inaugural-run-of-pixels.md
@@ -0,0 +1,14 @@
+---
+title: Inaugural run of Pixels
+date: May 24, 2021
+icon: fa fa-palette
+icon_color: pastel-purple
+---
+
+Inspired by the subreddit, r/place, Pixels was our collaborative canvas event
+held between May 25 to June 14, providing a beginner-friendly API to paint
+pixels on a virtual canvas.
+
+Later, we released [a blog
+post](https://blog.pythondiscord.com/pixels-summer-2021/) summarizing what
+happened, our motives, and some stories from during development.
diff --git a/pydis_site/apps/timeline/entries/2021-05-24_partnership-with-black.md b/pydis_site/apps/timeline/entries/2021-05-24_partnership-with-black.md
new file mode 100644
index 00000000..e2240b65
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-05-24_partnership-with-black.md
@@ -0,0 +1,10 @@
+---
+title: Partnership with Black
+date: May 24th, 2021
+icon: fa fa-handshake
+
+---
+
+We partner with the uncompromising code formatter project, Black, who were
+looking for a new home for their real-time chat. Python Discord ended up being
+that home, resulting in the creation of the `#black-formatter` channel.
diff --git a/pydis_site/apps/timeline/entries/2021-07-09_summer-code-jam-2021-cj8.md b/pydis_site/apps/timeline/entries/2021-07-09_summer-code-jam-2021-cj8.md
new file mode 100644
index 00000000..a86f7da5
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-07-09_summer-code-jam-2021-cj8.md
@@ -0,0 +1,11 @@
+---
+title: Summer Code Jam 2021 (CJ8)
+date: July 9, 2021
+icon: fa fa-dice
+icon_color: pastel-orange
+---
+
+We host the 8th now-annual Code Jam. Teams had to create a program with an
+text-based user interface (TUI), all designed around the theme of “think inside
+the box.” Ultimately, 51 teams submitted projects. [The winning submissions are
+listed on our website.](https://www.pythondiscord.com/events/code-jams/8/)
diff --git a/pydis_site/apps/timeline/entries/2021-10-04_python-310-release-stream.md b/pydis_site/apps/timeline/entries/2021-10-04_python-310-release-stream.md
new file mode 100644
index 00000000..3e7d3025
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2021-10-04_python-310-release-stream.md
@@ -0,0 +1,16 @@
+---
+title: We host the Python 3.10 Release Stream
+date: Oct 4th, 2021
+icon: pydis
+---
+
+Leon and Pablo Galindo, CPython Core Developer and Release Manager, host the
+Python 3.10 Release Stream, joined by other core devs Carol Willing, Irit
+Katriel, Łukasz Langa, and Brandt Bucher. They talked in-depth about the new
+features introduced in 3.10, the development of those features, and more!
+
+<div class="force-aspect-container">
+<iframe allowfullscreen="" class="force-aspect-content"
+allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
+frameborder="0" src="https://www.youtube.com/embed/AHT2l3hcIJg"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2022-01-19_300000-members.md b/pydis_site/apps/timeline/entries/2022-01-19_300000-members.md
new file mode 100644
index 00000000..9090a920
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-01-19_300000-members.md
@@ -0,0 +1,9 @@
+---
+title: We hit 300 000 members!
+date: Jan 19, 2022
+icon: fa fa-users
+icon_color: pastel-dark-blue
+---
+
+Thanks to an increasing growth rate, Python Discord's membership count doubled
+from 150,000 to 300,000 in less than a year!
diff --git a/pydis_site/apps/timeline/entries/2022-02-02_smarter-resources.md b/pydis_site/apps/timeline/entries/2022-02-02_smarter-resources.md
new file mode 100644
index 00000000..137c0dab
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-02-02_smarter-resources.md
@@ -0,0 +1,11 @@
+---
+title: Deployment of Smarter Resources
+date: Feb 2nd, 2022
+icon: fa fa-code
+icon_color: pastel-red
+---
+
+We gave our resources pages some much needed love and [reorganised them into a
+single page](https://www.pythondiscord.com/resources/), complete with a shiny
+new resource filter that allows you to more quickly find ones that relate to
+your interests, experience, learning style, and ability to pay!
diff --git a/pydis_site/apps/timeline/entries/2022-02-09_events-team.md b/pydis_site/apps/timeline/entries/2022-02-09_events-team.md
new file mode 100644
index 00000000..51036918
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-02-09_events-team.md
@@ -0,0 +1,9 @@
+---
+title: Creation of Events Team
+date: Feb 9th, 2022
+icon: pydis
+---
+
+We form the Events Team to organise and run future events. Led by Kat and
+comprised by staff members, the goal of the team is to ultimately host more
+events in a more sustainable way.
diff --git a/pydis_site/apps/timeline/entries/2022-02-12_trivia-night.md b/pydis_site/apps/timeline/entries/2022-02-12_trivia-night.md
new file mode 100644
index 00000000..7a4a1b8c
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-02-12_trivia-night.md
@@ -0,0 +1,11 @@
+---
+title: Trivia Night
+date: Feb 12th, 2022
+icon: fa fa-question
+icon_color: pastel-green
+---
+
+How well do you know Python inside out? Members got to find out in a Trivia
+Night event. Contestants were given questions about Python's internals, its
+development, and more. To win, contestants had to get the most questions right
+while being fast to answer.
diff --git a/pydis_site/apps/timeline/entries/2022-02-21_sir-robin.md b/pydis_site/apps/timeline/entries/2022-02-21_sir-robin.md
new file mode 100644
index 00000000..ac421acb
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-02-21_sir-robin.md
@@ -0,0 +1,9 @@
+---
+title: Addition of @Sir Robin
+date: Feb 21st, 2022
+icon: fa fa-robot
+icon_color: pastel-blue
+---
+
+Our arsenal of bots grows! We add @Sir Robin to power and manage all of our
+future events and to support the Events Team.
diff --git a/pydis_site/apps/timeline/entries/2022-05-19_partnership-with-pyqtgraph.md b/pydis_site/apps/timeline/entries/2022-05-19_partnership-with-pyqtgraph.md
new file mode 100644
index 00000000..7d738f4e
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-05-19_partnership-with-pyqtgraph.md
@@ -0,0 +1,9 @@
+---
+title: Partnership with pyqtgraph
+date: May 19th, 2022
+icon: fa fa-handshake
+
+---
+
+The `#pyqtgraph` channel is created for the Scientific Graphics and GUI library
+pyqtgraph, joining `#black-formatter`.
diff --git a/pydis_site/apps/timeline/entries/2022-07-21_summer-code-jam-2022-cj9.md b/pydis_site/apps/timeline/entries/2022-07-21_summer-code-jam-2022-cj9.md
new file mode 100644
index 00000000..a444338c
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-07-21_summer-code-jam-2022-cj9.md
@@ -0,0 +1,17 @@
+---
+title: Summer Code Jam 2022 (CJ9)
+date: July 21st, 2022
+icon: fa fa-dice
+icon_color: pastel-lime
+---
+
+We host the 9th Code Jam. This year, teams had to use **websockets** to create a
+project based on the theme, **It's not a bug, it's a feature**. In all, 24 teams
+submitted their projects. At the end, we held a livestream demoing the top 10
+projects and announcing the winner!
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
+allowfullscreen="" class="force-aspect-content" frameborder="0"
+src="https://www.youtube.com/embed/YZcVjFED6Hg"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2022-10-24_python-311-release-stream.md b/pydis_site/apps/timeline/entries/2022-10-24_python-311-release-stream.md
new file mode 100644
index 00000000..21f6ab03
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-10-24_python-311-release-stream.md
@@ -0,0 +1,17 @@
+---
+title: Python 3.11 Release Stream
+date: Oct 24th, 2022
+icon: pydis
+---
+
+With the Python 3.10 Release Stream being such a success, we brought it back for
+the release of Python 3.11. Hosted by Leon, and CPython 3.11 Release Manager,
+Pablo Galindo, they were joined by other CPython Core Developers. Together, they
+discuss the specific features and the overall development process of the
+release.
+
+<div class="force-aspect-container">
+<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
+allowfullscreen="" class="force-aspect-content" frameborder="0"
+src="https://www.youtube.com/embed/PGZPSWZSkJI"></iframe>
+</div>
diff --git a/pydis_site/apps/timeline/entries/2022-11-25_switch-to-forum-based-help-system.md b/pydis_site/apps/timeline/entries/2022-11-25_switch-to-forum-based-help-system.md
new file mode 100644
index 00000000..cfb920d2
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2022-11-25_switch-to-forum-based-help-system.md
@@ -0,0 +1,11 @@
+---
+title: Switch to forum-based help system
+date: Nov 25th, 2022
+icon: fa fa-comments
+icon_color: pastel-pink
+---
+
+We migrate our help system to use a forum channel, retiring our home-grown
+rotating help system after 3 years of service and nearly 500,000 help sessions.
+Forum channels offer a better experience as members can create their own
+dedicated thread in a discoverable place.
diff --git a/pydis_site/apps/timeline/entries/2023-01-30_retirement-of-joe-and-sebastiaan.md b/pydis_site/apps/timeline/entries/2023-01-30_retirement-of-joe-and-sebastiaan.md
new file mode 100644
index 00000000..e1d699ed
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2023-01-30_retirement-of-joe-and-sebastiaan.md
@@ -0,0 +1,12 @@
+---
+title: Retirement of Joe and Sebastiaan
+date: Jan 30th, 2023
+icon: pydis
+---
+
+Having been at the helm of Python Discord for over 5 and 3 years respectively,
+Joe and Sebastiaan retire and step down. They gain the @Founders role and
+continue as advisors to the @Directors, the new name of the original @Owners
+role.
+
+At the same time, Mina and Zig join Leon as co-directors.
diff --git a/pydis_site/apps/timeline/entries/2023-07-11_new-paste-service.md b/pydis_site/apps/timeline/entries/2023-07-11_new-paste-service.md
new file mode 100644
index 00000000..4cc7e7ce
--- /dev/null
+++ b/pydis_site/apps/timeline/entries/2023-07-11_new-paste-service.md
@@ -0,0 +1,13 @@
+---
+title: Switch to new paste service
+date: Jul 11th, 2023
+icon: fa-solid fa-clipboard
+icon_color: pastel-pink
+---
+
+We migrate over to [pinnwand](https://github.com/supakeen/pinnwand) as the
+service that powers our paste bin over at
+[https://paste.pythondiscord.com/](https://paste.pythondiscord.com). We made the
+switch as it comes with native light/dark modes, support for multi-file pastes,
+additional support for text highlighting languages, and plus, it's written in
+Python!
diff --git a/pydis_site/apps/timeline/tests/__init__.py b/pydis_site/apps/timeline/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/pydis_site/apps/timeline/tests/__init__.py
diff --git a/pydis_site/apps/timeline/tests/test_views.py b/pydis_site/apps/timeline/tests/test_views.py
new file mode 100644
index 00000000..a3e2e805
--- /dev/null
+++ b/pydis_site/apps/timeline/tests/test_views.py
@@ -0,0 +1,10 @@
+from django.test import TestCase
+from django.urls import reverse
+
+
+class TestIndexReturns200(TestCase):
+ def test_index_returns_200(self):
+ """Check that the index page returns a HTTP 200 response."""
+ url = reverse('timeline:index')
+ resp = self.client.get(url)
+ self.assertEqual(resp.status_code, 200)
diff --git a/pydis_site/apps/timeline/urls.py b/pydis_site/apps/timeline/urls.py
new file mode 100644
index 00000000..e4f1d6c6
--- /dev/null
+++ b/pydis_site/apps/timeline/urls.py
@@ -0,0 +1,9 @@
+from django_distill import distill_path
+
+from .views import TimelineView
+
+app_name = "timeline"
+
+urlpatterns = [
+ distill_path("", TimelineView.as_view(), name="index"),
+]
diff --git a/pydis_site/apps/timeline/views.py b/pydis_site/apps/timeline/views.py
new file mode 100644
index 00000000..380dfe53
--- /dev/null
+++ b/pydis_site/apps/timeline/views.py
@@ -0,0 +1,20 @@
+from django.apps import apps
+from django.core.handlers.wsgi import WSGIRequest
+from django.http import HttpResponse
+from django.shortcuts import render
+from django.views import View
+
+APP_NAME = "timeline"
+
+class TimelineView(View):
+ """A vertical timeline showcasing milestones in the history of Python Discord."""
+
+ def get(self, request: WSGIRequest) -> HttpResponse:
+ """Render the timeline."""
+ app = apps.get_app_config(APP_NAME)
+
+ return render(
+ request,
+ template_name="timeline/timeline.html",
+ context={ "entries": app.entries },
+ )
diff --git a/pydis_site/settings.py b/pydis_site/settings.py
index f59b179a..dcb37b54 100644
--- a/pydis_site/settings.py
+++ b/pydis_site/settings.py
@@ -115,6 +115,7 @@ NON_STATIC_APPS = [
INSTALLED_APPS = [
*NON_STATIC_APPS,
'pydis_site.apps.home',
+ 'pydis_site.apps.timeline',
'pydis_site.apps.resources',
'pydis_site.apps.content',
'pydis_site.apps.events',
diff --git a/pydis_site/static/css/home/timeline.css b/pydis_site/static/css/timeline/timeline.css
index 7f6c4160..1970383f 100644
--- a/pydis_site/static/css/home/timeline.css
+++ b/pydis_site/static/css/timeline/timeline.css
@@ -145,6 +145,15 @@
flex-grow: 1;
}
+/* Don't make the titles show up as link colors before hover. */
+.timeline-content h3 a {
+ color: inherit;
+}
+
+.timeline-content h3 a:hover {
+ color: #7289DA;
+}
+
@media (min-width: 1023px) {
.timeline-item:nth-child(odd) {
flex-direction: row-reverse;
diff --git a/pydis_site/templates/base/navbar.html b/pydis_site/templates/base/navbar.html
index 2fcd8ad8..41f5fa10 100644
--- a/pydis_site/templates/base/navbar.html
+++ b/pydis_site/templates/base/navbar.html
@@ -88,7 +88,7 @@
<a class="navbar-item" href="{% url "content:page_category" location="guides" %}">
Guides
</a>
- <a class="navbar-item" href="{% url 'home:timeline' %}">
+ <a class="navbar-item" href="{% url 'timeline:index' %}">
Timeline
</a>
<a class="navbar-item" href="{% url "content:page_category" location="rules" %}">
diff --git a/pydis_site/templates/home/index.html b/pydis_site/templates/home/index.html
index 9ff6b393..c7d14fd6 100644
--- a/pydis_site/templates/home/index.html
+++ b/pydis_site/templates/home/index.html
@@ -110,7 +110,7 @@
</p>
<div class="buttons are-large is-centered">
- <a href="{% url 'home:timeline' %}" class="button is-primary">
+ <a href="{% url 'timeline:index' %}" class="button is-primary">
<span>Check it out!</span>
<span class="icon">
<i class="fas fa-arrow-right"></i>
diff --git a/pydis_site/templates/home/timeline.html b/pydis_site/templates/home/timeline.html
deleted file mode 100644
index 6a7df522..00000000
--- a/pydis_site/templates/home/timeline.html
+++ /dev/null
@@ -1,983 +0,0 @@
-{% extends 'base/base.html' %}
-{% load static %}
-
-{% block title %}Timeline{% endblock %}
-{% block head %}
- <link rel="stylesheet" href="{% static "css/home/timeline.css" %}">
-{% endblock %}
-
-{% block content %}
- {% include "base/navbar.html" %}
-
- <section class="timeline">
- <div class="container">
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-pink">
- <span class="icon"><i class="fa fa-comments"></i></span>
- </div>
- <span class="timeline-date">Jul 11th, 2023</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Switch to new paste service</h3>
- <p>
- We migrate over to <a href="https://github.com/supakeen/pinnwand">pinnwand</a>
- as the service that powers our paste bin over at
- <a href="https://paste.pythondiscord.com">https://paste.pythondiscord.com/</a>.
- We made the switch as it comes with native light/dark modes, support for multi-file
- pastes, additional support for text highlighting languages, and plus, it's written in
- Python!
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
- </div>
- <span class="timeline-date">Jan 30th, 2023</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Retirement of Joe and Sebastiaan</h3>
- <p>
- Having been at the helm of Python Discord for over 5 and 3 years respectively, Joe and
- Sebastiaan retire and step down. They gain the @Founders role and continue as advisors
- to the @Directors, the new name of the original @Owners role.
-
- At the same time, Mina and Zig join Leon as co-directors.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-pink">
- <span class="icon"><i class="fa fa-comments"></i></span>
- </div>
- <span class="timeline-date">Nov 25th, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Switch to forum-based help system</h3>
- <p>
- We migrate our help system to use a forum channel, retiring our home-grown rotating help
- system after 3 years of service and nearly 500,000 help sessions. Forum channels offer
- a better experience as members can create their own dedicated thread in a discoverable place.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
- </div>
- <span class="timeline-date">Oct 24th, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python 3.11 Release Stream</h3>
- <p>
- With the Python 3.10 Release Stream being such a success, we brought it back for the
- release of Python 3.11. Hosted by Leon, and CPython 3.11 Release Manager, Pablo Galindo,
- they were joined by other CPython Core Developers. Together, they discuss the specific
- features and the overall development process of the release.
- </p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/PGZPSWZSkJI" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-lime">
- <span class="icon"><i class="fa fa-dice"></i></span>
- </div>
- <span class="timeline-date">July 21st, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Summer Code Jam 2022 (CJ9)</h3>
- <p>
- We host the 9th Code Jam. This year, teams had to use <b>websockets</b> to create a
- project based on the theme, <b>It's not a bug, it's a feature</b>. In all, 24 teams
- submitted their projects. At the end, we held a livestream demoing the top 10 projects
- and announcing the winner!
- </p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/YZcVjFED6Hg" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div style="background-color: grey;" class="timeline-icon has-background-primary">
- <i class="fa fa-handshake"></i>
- </div>
- <span class="timeline-date">May 19th, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Partnership with pyqtgraph</h3>
- <p>
- The <code>#pyqtgraph</code> channel is created for the Scientific Graphics and GUI
- library pyqtgraph, joining <code>#black-formatter</code>.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-blue">
- <span class="icon"><i class="fa fa-robot"></i></span>
- </div>
- <span class="timeline-date">Feb 21st, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Addition of @Sir Robin</h3>
- <p>
- Our arsenal of bots grows! We add @Sir Robin to power and manage all of our future
- events and to support the Events Team.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-green">
- <span class="icon"><i class="fa fa-question"></i></span>
- </div>
- <span class="timeline-date">Feb 12th, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Trivia Night</h3>
- <p>
- How well do you know Python inside out? Members got to find out in a Trivia Night event.
- Contestants were given questions about Python's internals, its development, and more.
- To win, contestants had to get the most questions right while being fast to answer.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
- </div>
- <span class="timeline-date">Feb 9th, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Creation of Events Team</h3>
- <p>
- We form the Events Team to organise and run future events. Led by Kat and comprised by
- staff members, the goal of the team is to ultimately host more events in a more
- sustainable way.
- </p>
- </div>
- </div>
-
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-red">
- <span class="icon"><i class="fa fa-code"></i></span>
- </div>
- <span class="timeline-date">Feb 2nd, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Deployment of Smarter Resources</h3>
- <p>
- We gave our resources pages some much needed love and
- <a href="https://www.pythondiscord.com/resources/">
- reorganised them into a single page</a>,
- complete with a shiny new resource filter that allows you to more quickly find
- ones that relate to your interests, experience, learning style, and ability to pay!
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Jan 19, 2022</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>We hit 300 000 members!</h3>
- <p>
- Thanks to an increasing growth rate, Python Discord's membership count doubled from
- 150,000 to 300,000 in less than a year!
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
- </div>
- <span class="timeline-date">Oct 4th, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>We host the Python 3.10 Release Stream</h3>
- <p>
- Leon and Pablo Galindo, CPython Core Developer and Release Manager, host the Python 3.10
- Release Stream, joined by other core devs Carol Willing, Irit Katriel, Łukasz Langa, and
- Brandt Bucher. They talked in-depth about the new features introduced in 3.10, the
- development of those features, and more!
- </p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/AHT2l3hcIJg" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div style="background-color: grey;" class="timeline-icon has-background-primary">
- <i class="fa fa-handshake"></i>
- </div>
- <span class="timeline-date">May 24th, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Partnership with Black</h3>
- <p>
- We partner with the uncompromising code formatter project, Black, who were looking for a
- new home for their real-time chat. Python Discord ended up being that home, resulting in
- the creation of the <code>#black-formatter</code> channel.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-orange">
- <span class="icon"><i class="fa fa-dice"></i></span>
- </div>
- <span class="timeline-date">July 9, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Summer Code Jam 2021 (CJ8)</h3>
- <p>
- We host the 8th now-annual Code Jam. Teams had to create a program with an text-based user
- interface (TUI), all designed around the theme of “think inside the box.” Ultimately, 51
- teams submitted projects.
- <a href="https://www.pythondiscord.com/events/code-jams/8/">
- The winning submissions are listed on our website.
- </a>
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-purple">
- <span class="icon"><i class="fa fa-palette"></i></span>
- </div>
- <span class="timeline-date">May 24, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Inaugural run of Pixels</h3>
- <p>
- Inspired by the subreddit, r/place, Pixels was our collaborative canvas event held
- between May 25 to June 14, providing a beginner-friendly API to paint pixels on a
- virtual canvas.
- </p>
- <p>
- Later, we released <a href="https://blog.pythondiscord.com/pixels-summer-2021/">a blog post</a>
- summarizing what happened, our motives, and some stories from during development.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
- </div>
- <span class="timeline-date">April 23, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Owners become PSF Fellows</h3>
- <p>Joe, Leon, and Sebastiaan
- <a href="https://pyfound.blogspot.com/2021/04/python-software-foundation-fellow.html">
- are recognized as Python Software Foundation Fellows
- </a>
- for their substantial contributions to the Python ecosystem by fostering
- Python Discord.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-red">
- <span class="icon"><i class="fab fa-youtube"></i></span>
- </div>
- <span class="timeline-date">Mar 21st, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Summer Code Jam 2020 Highlights</h3>
- <p>
- We release a new video to our YouTube showing the best projects from the Summer Code Jam 2020.
- Better late than never!
- </p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/g9cnp4W0P54" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-purple">
- <span class="icon"><i class="fa fa-comment"></i></span>
- </div>
- <span class="timeline-date">Mar 13th, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>New feature: Weekly discussion channel</h3>
- <p>Every week (or two weeks), we'll be posting a new topic to discuss in a
- channel called <b>#weekly-topic-discussion</b>. Our inaugural topic is a PyCon talk by Anthony Shaw called
- <b>Wily Python: Writing simpler and more maintainable Python.</b></a>.
- </p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/dqdsNoApJ80" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-pink">
- <span class="icon"><i class="fa fa-microphone"></i></span>
- </div>
- <span class="timeline-date">Mar 13th, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>We're on the Teaching Python podcast!</h3>
- <p>Leon joins Sean and Kelly on the Teaching Python podcast to discuss how the pandemic has
- changed the way we learn, and what role communities like Python Discord can play in this new world.
- You can find the episode <a href="https://www.teachingpython.fm/63">at teachingpython.fm</a>.
- </p>
-
- <iframe width="100%" height="166" frameborder="0" scrolling="no"
- src="https://player.fireside.fm/v2/UIYXtbeL+qOjGAsKi?theme=dark"></iframe>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-green">
- <span class="icon"><i class="fa fa-microphone"></i></span>
- </div>
- <span class="timeline-date">Mar 1st, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Leon Sandøy appears on Talk Python To Me</h3>
- <p>Leon goes on the Talk Python to Me podcast with Michael Kennedy
- to discuss the history of Python Discord, the critical importance of culture, and how to run a massive
- community. You can find the episode <a href="https://talkpython.fm/episodes/show/305/python-community-at-python-discord"> at talkpython.fm</a>.
- </p>
-
- <iframe width="100%" height="166" scrolling="no" frameborder="no"
- src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/996083146&color=ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false">
- </iframe>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Feb 18th, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>We now have 150,000 members!</h3>
- <p>Our growth continues to accelerate.</p>
-
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-blue">
- <span class="icon"><i class="fa fa-music"></i></span>
- </div>
- <span class="timeline-date">February 8th, 2021</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>We release The PEP 8 song</h3>
- <p>We release the PEP 8 song on our YouTube channel, which finds tens of
- thousands of listeners!</p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/hgI0p1zf31k" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-red">
- <span class="icon"><i class="fa fa-snowflake"></i></span>
- </div>
- <span class="timeline-date">December 1st - 25th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Advent of Code attracts hundreds of participants</h3>
- <p>
- A total of 443 Python Discord members sign up to be part of
- <a href="https://adventofcode.com/">Eric Wastl's excellent Advent of Code event</a>.
- As always, we provide dedicated announcements, scoreboards, bot commands and channels for our members
- to enjoy the event in.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-orange">
- <span class="icon"><i class="fa fa-wrench"></i></span>
- </div>
- <span class="timeline-date">Nov 29th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>We migrate all our infrastructure to Kubernetes</h3>
- <p>As our tech stack grows, we decide to migrate all our services over to a
- container orchestration paradigm via Kubernetes. This gives us better control and scalability.
- <b>Joe Banks</b> takes on the role as DevOps Lead.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Oct 22nd, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord hits 100,000 members!</h3>
- <p>Only six months after hitting 40,000 users, we hit 100,000 users. A
- monumental milestone, and one we're very proud of. To commemorate
- it, we create this timeline.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
- </div>
- <span class="timeline-date">Oct 21st, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord hosts the 2020 CPython Core Developer Q&A</h3>
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/gXMdfBTcOfQ" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
-
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-pink">
- <span class="icon"><i class="fa fa-handshake"></i></span>
- </div>
- <span class="timeline-date">Aug 16th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord is now the new home of the PyWeek event!</h3>
- <p>PyWeek, a game jam that has been running since 2005, joins Python
- Discord as one of our official events. Find more information about PyWeek on
- <a href="https://pyweek.org/">their official website</a>.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-blue">
- <span class="icon"><i class="fa fa-dice"></i></span>
- </div>
- <span class="timeline-date">Jul 31st, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis summer code jam 2020 with the theme “Early Internet” and Django as the technology</h3>
- <p>Sponsored by the Django Software Foundation and JetBrains, the Summer
- Code Jam for 2020 attracts hundreds of participants, and sees the creation of some fantastic
- projects. Check them out in our judge stream below:</p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/OFtm8f2iu6c" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-red">
- <span class="icon"><i class="fa fa-chart-bar"></i></span>
- </div>
- <span class="timeline-date">Jun 4th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord Public Statistics are now live</h3>
- <p>After getting numerous requests to publish beautiful data on member
- count and channel use, we create <a href="https://stats.pythondiscord.com/">stats.pythondiscord.com</a> for
- all to enjoy.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-pink">
- <span class="icon"><i class="fa fa-handshake"></i></span>
- </div>
- <span class="timeline-date">May 28th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord is now listed on python.org/community</h3>
- <p>After working towards this goal for months, we finally work out an
- arrangement with the PSF that allows us to be listed on that most holiest of websites:
- https://python.org/. <a href="https://youtu.be/yciX2meIkXI?t=3">There was much rejoicing.</a>
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-green">
- <span class="icon"><i class="fa fa-comments"></i></span>
- </div>
- <span class="timeline-date">May 25th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>ModMail is now live</h3>
- <p>
- Having originally planned to write our own ModMail bot from scratch, we
- come across an exceptionally good <a href="https://github.com/kyb3r/modmail">ModMail bot by
- kyb3r</a> and decide to just self-host that one instead.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-purple">
- <span class="icon"><i class="fa fa-gamepad"></i></span>
- </div>
- <span class="timeline-date">Apr 17th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis Game Jam 2020 with the “Three of a Kind” theme and Arcade as the technology</h3>
- <p>The creator of Arcade, Paul Vincent Craven, joins us as a judge.
- Several of the Code Jam participants also end up getting involved contributing to the Arcade
- repository.</p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/KkLXMvKfEgs" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Apr 14, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord hits 40,000 members, and is now bigger than Liechtenstein.</h3>
- <p>
- <img src="https://raw.githubusercontent.com/python-discord/branding/main/wallpapers/bigger%20than%20liechtenstein/pydis%20postcard.png">
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-green">
- <span class="icon"><i class="fa fa-comments"></i></span>
- </div>
- <span class="timeline-date">Apr 5th, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>The new help channel system is live</h3>
- <p>We release our dynamic help-channel system, which allows you to claim
- your very own help channel instead of fighting over the static help channels. We release a <a
- href="https://pythondiscord.com/pages/resources/guides/help-channels/">Help Channel Guide</a> to
- help our members fully understand how the system works.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-blue">
- <span class="icon"><i class="fa fa-dice"></i></span>
- </div>
- <span class="timeline-date">Jan 17, 2020</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis sixth code jam with the theme “Ancient technology” and the technology Kivy</h3>
- <p>Our Code Jams are becoming an increasingly big deal, and the Kivy core
- developers join us to judge the event and help out our members during the event. One of them,
- @tshirtman, even joins our staff!</p>
-
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/8fbZsGrqBzo" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Dec 22nd, 2019</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis hits 30,000 members</h3>
- <p>More than tripling in size since the year before, the community hits
- 30000 users. At this point, we're probably the largest Python chat community on the planet.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src={% static "images/timeline/cd-icon-pydis.svg" %} alt="Logo">
- </div>
- <span class="timeline-date">Sept 22nd, 2019</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Sebastiaan Zeef becomes an owner</h3>
- <p>After being a long time active contributor to our projects and the driving
- force behind many of our events, Sebastiaan Zeef joins the Owners Team alongside Joe & Leon.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-lime">
- <span class="icon"><i class="fa fa-scroll"></i></span>
- </div>
- <span class="timeline-date">Oct 26th, 2019</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>The code of conduct is created</h3>
- <p>Inspired by the Adafruit, Rust and Django communities, an essential
- community pillar is created; Our <a href="https://pythondiscord.com/pages/code-of-conduct/">Code of
- Conduct.</a></p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-orange">
- <span class="icon"><i class="fa fa-code"></i></span>
- </div>
- <span class="timeline-date">Sep 15, 2019</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>The Django rewrite of pythondiscord.com is now live!</h3>
- <p>The site is getting more and more complex, and it's time for a rewrite.
- We decide to go for a different stack, and build a website based on Django, DRF, Bulma and
- PostgreSQL.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Apr 8th, 2019</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis hits 15,000 members; the “hot ones special” video is released</h3>
- <div class="force-aspect-container">
- <iframe class="force-aspect-content" src="https://www.youtube.com/embed/DIBXg8Qh7bA" frameborder="0"
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
- allowfullscreen></iframe>
- </div>
-
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-orange">
- <span class="icon"><i class="fa fa-code"></i></span>
- </div>
- <span class="timeline-date">Dec 19th, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>django-simple-bulma is released on PyPi</h3>
- <p>Our very first package on PyPI, <a
- href="https://pypi.org/project/django-simple-bulma/">django-simple-bulma</a> is a package that
- sets up the Bulma CSS framework for your Django application and lets you configure everything in
- settings.py.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Nov 24th, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis hits 10,000 members</h3>
- <p>We partner with RLBot, move from GitLab to GitHub, and start putting
- together the first Advent of Code event.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-blue">
- <span class="icon"><i class="fa fa-dice"></i></span>
- </div>
- <span class="timeline-date">Oct 1st, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>First Hacktoberfest PyDis event; @Sir Lancebot is created</h3>
- <p>We create a second bot for our community and fill it up with simple,
- fun and relatively easy issues. The idea is to create an approachable arena for our members to cut
- their open-source teeth on, and to provide lots of help and hand-holding for those who get stuck.
- We're training our members to be productive contributors in the open-source ecosystem.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-pink">
- <span class="icon"><i class="fa fa-handshake"></i></span>
- </div>
- <span class="timeline-date">Jul 10th, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis is now partnered with Discord; the vanity URL discord.gg/python is created</h3>
- <p>After being rejected for their Partner program several times, we
- finally get approved. The recent partnership with the r/Python subreddit plays a significant role in
- qualifying us for this partnership.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Jun 20th, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis hits 5,000 members and partners with r/Python</h3>
- <p>As we continue to grow, we approach the r/Python subreddit and ask to
- become their official Discord community. They agree, and we become listed in their sidebar, giving
- us yet another source of new members.</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-pink">
- <span class="icon"><i class="fa fa-handshake"></i></span>
- </div>
- <span class="timeline-date">Jun 9th, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Do You Even Python and PyDis merger</h3>
- <p>At this point in time, there are only two serious Python communities on
- Discord - Ours, and one called Do You Even Python. We approach the owners of DYEP with a bold
- proposal - let's shut down their community, replace it with links to ours, and in return we will let
- their staff join our staff. This gives us a big boost in members, and eventually leads to @eivl and
- @Mr. Hemlock joining our Admin team</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-lime">
- <span class="icon"><i class="fa fa-scroll"></i></span>
- </div>
- <span class="timeline-date">May 21st, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>The privacy policy is created</h3>
- <p>Since data privacy is quite important to us, we create a privacy page
- pretty much as soon as our new bot and site starts collecting some data. To this day, we keep <a
- href="https://pythondiscord.com/pages/privacy/">our privacy policy</a> up to date with all
- changes, and since April 2020 we've started doing <a
- href="https://pythondiscord.notion.site/6784e3a9752444e89d19e65fd4510d8d">monthly data reviews</a>.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-blue">
- <span class="icon"><i class="fa fa-dice"></i></span>
- </div>
- <span class="timeline-date">Mar 23rd, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>First code jam with the theme “snakes”</h3>
- <p>Our very first Code Jam attracts a handful of users who work in random
- teams of 2. We ask our participants to write a snake-themed Discord bot. Most of the code written
- for this jam still lives on in Sir Lancebot, and you can play with it by using the
- <code>.snakes</code> command. For more information on this event, see <a
- href="https://pythondiscord.com/pages/code-jams/code-jam-1-snakes-bot/">the event page</a></p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Mar 4th, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>PyDis hits 2,000 members; pythondiscord.com and @Python are live</h3>
- <p>The public moderation bot we're using at the time, Rowboat, announces
- it will be shutting down. We decide that we'll write our own bot to handle moderation, so that we
- can have more control over its features. We also buy a domain and start making a website in Flask.
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src={% static "images/timeline/cd-icon-pydis.svg" %} alt="Logo">
- </div>
- <span class="timeline-date">Feb 3rd, 2018</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Our logo is born. Thanks @Aperture!</h3>
- <p style="background-color: #7289DA; border-radius: 10px;">
- <img style="padding-right: 20px;" src="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_banner/logo_site_banner.svg">
- </p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon pastel-dark-blue">
- <span class="icon"><i class="fa fa-users"></i></span>
- </div>
- <span class="timeline-date">Nov 10th, 2017</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord hits 1,000 members</h3>
- <p>Our main source of new users at this point is a post on Reddit that
- happens to get very good SEO. We are one of the top 10 search engine hits for the search term
- "python discord".</p>
- </div>
- </div>
-
- <div class="timeline-item">
- <div class="timeline-icon-date">
- <div class="timeline-icon has-background-primary">
- <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
- </div>
- <span class="timeline-date">Jan 8th, 2017</span>
- </div>
-
- <div class="timeline-content content box">
- <h3>Python Discord is created</h3>
- <p><strong>Joe Banks</strong> becomes one of the owners around 3 days after it
- is created, and <strong>Leon Sandøy</strong> (lemon) joins the owner team later in the year,
- when the community has around 300 members.</p>
- </div>
- </div>
-
- </div>
- </section>
-
- <script src="{% static "js/timeline/main.js" %}"></script>
-{% endblock %}
diff --git a/pydis_site/templates/timeline/timeline.html b/pydis_site/templates/timeline/timeline.html
new file mode 100644
index 00000000..6bd85f31
--- /dev/null
+++ b/pydis_site/templates/timeline/timeline.html
@@ -0,0 +1,39 @@
+{% extends 'base/base.html' %}
+{% load static %}
+
+{% block title %}Timeline{% endblock %}
+{% block head %}
+ <link rel="stylesheet" href="{% static "css/timeline/timeline.css" %}">
+{% endblock %}
+
+{% block content %}
+ {% include "base/navbar.html" %}
+
+ <section class="timeline">
+ <div class="container">
+
+ {% for entry in entries %}
+ <div class="timeline-item" id="{{ entry.slug }}">
+ <div class="timeline-icon-date">
+ <div class="timeline-icon {{ entry.icon_color }}">
+ {% if entry.icon == "pydis" %}
+ <img class="pydis" src="{% static "images/timeline/cd-icon-pydis.svg" %}" alt="Logo">
+ {% else %}
+ <span class="icon"><i class="{{ entry.icon }}"></i></span>
+ {% endif %}
+ </div>
+ <span class="timeline-date">{{ entry.date }}</span>
+ </div>
+
+ <div class="timeline-content content box">
+ <h3><a href="#{{ entry.slug }}">{{ entry.title }}</a></h3>
+ {{ entry.content|safe }}
+ </div>
+ </div>
+ {% endfor %}
+
+ </div>
+ </section>
+
+ <script src="{% static "js/timeline/main.js" %}"></script>
+{% endblock %}
diff --git a/pydis_site/urls.py b/pydis_site/urls.py
index 0f2f6aeb..799e8600 100644
--- a/pydis_site/urls.py
+++ b/pydis_site/urls.py
@@ -25,6 +25,7 @@ urlpatterns = (
path('pages/', include('pydis_site.apps.content.urls', namespace='content')),
path('resources/', include('pydis_site.apps.resources.urls')),
path('events/', include('pydis_site.apps.events.urls', namespace='events')),
+ path('timeline/', include('pydis_site.apps.timeline.urls', namespace='timeline')),
path('', include('pydis_site.apps.home.urls', namespace='home')),
)