Skip to content

Commit 0847079

Browse files
committed
prep for migration
1 parent 5fdfbd0 commit 0847079

3 files changed

Lines changed: 133 additions & 81 deletions

File tree

MIGRATION.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Code Sync → Jekyll migration prompt (codesync-migration.v2)
2+
3+
## Purpose
4+
5+
Migrate codesync.global — currently served by an obsolete Sonata (PHP) CMS — to a
6+
static Jekyll site hosted on GitHub, continuing the work started in
7+
https://github.com/esl/jekyll-codesync-global-monika. The domain codesync.global
8+
is KEPT and will point at the new site. The site's single primary job is to
9+
promote upcoming Code Sync conferences; its secondary job is to be a complete,
10+
accurate index of past conferences.
11+
12+
Everything produced by this migration is a **static site**: Jekyll builds plain
13+
HTML/CSS/JS at build time, GitHub Pages serves the files. No server-side code,
14+
no database, no admin panel. Content edits happen via git. Nothing dynamic
15+
survives except optional client-side JavaScript, and even that is avoided for
16+
archival content.
17+
18+
## Repo strategy
19+
20+
- THIS repo is the hub only: upcoming conferences, the all-conferences listing,
21+
brand pages, and links out to per-brand sites. No full conference sub-sites
22+
live here.
23+
- ESL's established convention (verify on github.com/esl) is one Jekyll repo per
24+
conference brand with its own domain via CNAME and past editions under
25+
`archives/<city_year>/` (e.g. code-beam-europe/archives/berlin_2024). Existing
26+
brand repos include: code-beam-europe, code-beam-america, code-beam-stockholm,
27+
code-beam-mexico, code-beam-nyc, code-beam-london, code-beam-vancouver,
28+
elixirconf-eu-jekyll, virtual-elixirconf-eu-jekyll, elixirconf-us,
29+
elixirconf-brasil.
30+
- Conferences currently hosted inside the CMS are extracted OUT:
31+
- brand already has a repo → add the edition under that repo's `archives/`
32+
- no brand repo → create one modeled on code-beam-europe's structure
33+
- Expect the migration to produce commits/PRs across multiple ESL repos, not
34+
just this one.
35+
36+
## Inputs
37+
38+
- The hub Jekyll repo (local working copy) — analyse existing layouts, data
39+
files and conventions before adding anything; extend them, don't
40+
parallel-build.
41+
- The live site https://codesync.global/ — read-only source of truth for
42+
content that still exists; it will be decommissioned.
43+
- Conference sub-sites hosted inside the CMS (schedules, speaker pages, photos).
44+
- External schedule providers used by some conferences: Whova and/or Sessionize.
45+
- Code Sync YouTube channel + playlists — data source for the future videos
46+
section, and the only surviving record of some lost conferences (e.g.
47+
Elixir LDN).
48+
- The Wayback Machine — fallback source for lost conference pages.
49+
- The existing ESL brand repos — both as the structural template and as
50+
migration targets.
51+
52+
## Scope
53+
54+
IN:
55+
56+
1. Upcoming conferences prominently featured (the site's main goal).
57+
2. /conferences/ page listing ALL past conferences, grouped into brand sections
58+
(as on the current site), each section ordered most-recent-first. Exactly
59+
ONE canonical listing: the main-nav "all conferences" link and the banner
60+
"all past conferences" link must resolve to the same page with the same
61+
ordering.
62+
3. Extraction of CMS-hosted conference sub-sites into brand repos (see Repo
63+
strategy):
64+
- speaker sections including speaker photos (download and commit the assets)
65+
- schedule/agenda sections rebuilt as native static HTML/Liquid — extract
66+
the Whova/Sessionize/CMS data and render it, don't embed iframes
67+
4. YouTube DATA capture during the inventory pass: for every conference,
68+
record its playlist URL (and where cheap, the video list: title, speaker,
69+
video ID) in the hub's conference data. This feeds the future videos
70+
section; the section itself is NOT built yet.
71+
5. Reconstruction of lost conferences where feasible (YouTube playlists,
72+
Wayback Machine). A reconstructed page shows only what the sources support.
73+
74+
OUT (do not build):
75+
76+
- Blog posts or articles of any kind.
77+
- Hosted/iframed video archive pages.
78+
- Registration/ticketing sections of migrated conferences.
79+
- The videos-section UI — awaiting design. Only the underlying data is in
80+
scope.
81+
82+
## Tasks to VERIFY before building (do not trust this description)
83+
84+
- The reported discrepancy: on the live site, the "all conferences" nav link
85+
and the banner "all past conferences" link allegedly show different
86+
conference ORDERING. Confirm on the live site and document what each
87+
actually shows before fixing.
88+
- Which conferences are CMS-hosted vs. already in a brand repo vs. lost.
89+
Produce the inventory (see Output) before migrating anything.
90+
- For each conference with a schedule: whether it uses Whova, Sessionize, or
91+
bespoke CMS markup, and whether the data is still retrievable.
92+
- The exact structure of a brand repo's `archives/` edition before creating
93+
new ones — copy the convention, don't approximate it.
94+
95+
## Output
96+
97+
- Commits to the hub repo following its existing structure and conventions;
98+
conference content as structured data (front matter / `_data`), not
99+
hard-coded HTML sections — the CMS's hard-coded sections are what we're
100+
escaping.
101+
- Branches/PRs to brand repos for extracted archive editions.
102+
- A migration inventory (markdown file in the hub repo) listing every
103+
conference with: brand, year, status
104+
(migrated-to-\<repo\> | partial | lost | reconstructed-from-\<source\>),
105+
schedule source (whova/sessionize/cms/none), YouTube playlist URL or "none",
106+
and what's missing for partial ones.
107+
- For anything reconstructed: a note in front matter recording the source.
108+
109+
## Constraints
110+
111+
- NEVER invent conference data — no guessed dates, speaker names, talk titles,
112+
or bios. Missing fields are null/omitted and recorded in the inventory.
113+
- Don't destroy or rewrite existing work in any repo without flagging it first.
114+
- Downloaded assets (speaker photos) are committed to the target repo, not
115+
hot-linked to the CMS (it's going away).
116+
- Preserve the current site's brand grouping on /conferences/.
117+
- The domain persists, so old codesync.global URLs will otherwise 404: keep
118+
high-traffic paths stable where practical, and produce a list of old→new
119+
URL mappings for anything that moves (for redirects or an updated 404 page).
120+
- Don't push to brand-repo default branches — PRs only, they're live sites.
121+
122+
## Errors / edge cases
123+
124+
- Live page unreachable or schedule data gone → mark the conference `partial`
125+
or `lost` in the inventory with the reason; move on, don't stall.
126+
- Whova/Sessionize data behind JS or auth → report which conferences are
127+
affected and what access is needed; don't scrape around auth walls.
128+
- Speaker photo missing → ship the speaker entry without a photo, list it in
129+
the inventory; no placeholder stock images.
130+
- Ambiguous brand assignment or conference identity → ask, don't guess.
131+
- No write access to a brand repo → prepare the changes in a branch/patch and
132+
flag it, don't silently skip.

_includes/header.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<li><a href="{{site.baseurl}}/conferences/code-mesh-ldn/">Code Mesh LDN</a></li>
3838
</ul>
3939
</li> -->
40-
<li><a href="{{site.baseurl}}/past-conferences/">PAST CONFERENCES</a></li>
40+
<li><a href="{{site.baseurl}}/conferences/">PAST CONFERENCES</a></li>
4141
<li><a href="{{site.baseurl}}/opportunity-scheme/">DIVERSITY</a></li>
4242
<li><a href="{{site.baseurl}}/sponsorship/">SPONSORSHIP</a></li>
4343
<li><a href="{{site.baseurl}}/about-us/">ABOUT US</a></li>

past-conferences/index.html

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)