Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
c279051
gulpfile.js: Fix build process
wei2912 May 14, 2022
84e3087
Footer: Replace with footer from current website
partysnax Apr 17, 2022
dbc152e
Home: Add sliders for Featured By and Partners
Hackin7 Apr 22, 2022
b9e973b
Shift Partners and Featured By into Home
wei2912 May 14, 2022
848f20e
main.js: Fix bug where GlideJS crashes due to missing root
wei2912 May 14, 2022
7517642
Allow for custom title in pages
wei2912 May 14, 2022
00b8619
#79: Make industries shown on index and tags page consistent. (#113)
soloplxya May 16, 2022
599a642
Index: Add hover effects for post cards (#116)
soloplxya May 24, 2022
d6f67e2
Quotes slider (#120)
Hackin7 Jun 1, 2022
8e01307
Bump autoprefixer from 10.4.4 to 10.4.7
dependabot[bot] May 2, 2022
2a4f168
Bump postcss from 8.4.12 to 8.4.14
dependabot[bot] May 23, 2022
75f9933
Bump gscan from 4.26.1 to 4.31.0
dependabot[bot] May 30, 2022
39eb2fd
package.json: Remove deprecated engine
wei2912 Jun 4, 2022
aa5047d
Index: Constrain widths for post cards (#70)
Hackin7 Jun 10, 2022
d83555a
Search: Replace Elasticlunr with Elasticsearch-based solution (#121)
Hackin7 Jun 11, 2022
37b36c8
content-cta: Fix broken `products` (#136)
Parzivalxx Jun 28, 2022
d2cc2aa
Bump gscan from 4.26.1 to 4.31.2
dependabot[bot] Jun 4, 2022
eee8711
Bump @tailwindcss/line-clamp from 0.3.1 to 0.4.0
dependabot[bot] Jun 11, 2022
36ef2ae
Bump cssnano from 5.1.7 to 5.1.12
dependabot[bot] Jun 20, 2022
11a9c21
Index: Fix URL positioning on post slider (#125)
partysnax Jul 2, 2022
e9a24b8
Home: Add base content
Hackin7 Jun 11, 2022
cadd024
Events: Initial commit
wei2912 Jul 2, 2022
325b6cb
README: Remove outdated section on Search
wei2912 Jul 2, 2022
20cc708
Routes: Add year/month/day to stories taxonomy
wei2912 Jul 16, 2022
ea340b9
fix inconsistent fonts and spacing for tagless post (#143)
ChenSirui-016 Jul 23, 2022
187f0b3
Bump gscan from 4.31.2 to 4.32.0
dependabot[bot] Jul 25, 2022
269dcc3
Bump husky from 7.0.4 to 8.0.1
dependabot[bot] Jul 27, 2022
bf4cea1
GH Actions: Skip duplicate PR workflows
wei2912 Jul 27, 2022
c104db4
GH Actions: Skip duplicate workflow for Lint too
wei2912 Jul 27, 2022
10558bb
Bump gscan from 4.32.0 to 4.33.0
dependabot[bot] Aug 1, 2022
02d09a8
Post: Hotfix for #144 (#158)
Hackin7 Aug 6, 2022
358e7b0
Stories: Hotfix for #155 (#160)
Hars-Raj Aug 6, 2022
475967e
partials/content: Fix empty 'More Tags' due to internal tags logic (#…
wei2912 Aug 12, 2022
0c2be19
error.hbs: Initial commit
wei2912 Jul 24, 2022
f7e1b7c
deploy: Always run build if script is pushed to master
wei2912 Sep 22, 2022
4712267
Search Keyboard Navigation (#159)
Hackin7 Oct 7, 2022
2320499
Bump gscan from 4.33.0 to 4.34.0
dependabot[bot] Aug 8, 2022
a8ce870
Bump postcss from 8.4.14 to 8.4.17
dependabot[bot] Oct 3, 2022
7d99a01
Bump autoprefixer from 10.4.7 to 10.4.12
dependabot[bot] Oct 3, 2022
d4306cf
main.js: Fix ESLint error
wei2912 Oct 15, 2022
a4bf18d
lint.yml: Always run lint
wei2912 Oct 15, 2022
4ef78e0
Impact: Initial commit (#163)
soloplxya Oct 24, 2022
9fc5043
Bump cssnano from 5.1.12 to 5.1.14
dependabot[bot] Oct 29, 2022
724e492
Search: Display excerpt with bolded query and tooltip (#174)
Hackin7 Nov 4, 2022
ddf99d4
Stories: Fix `[NO TAG]` misalignment (#191)
ChenSirui-016 Nov 19, 2022
901b6f4
Stories: Increase articles loaded to 12 (#192)
ChenSirui-016 Nov 19, 2022
e7cf54e
Bump autoprefixer from 10.4.12 to 10.4.13 (#188)
dependabot[bot] Nov 30, 2022
2f5964e
Bump postcss from 8.4.17 to 8.4.19
dependabot[bot] Nov 14, 2022
98ae03c
Post: Reduce related posts to 3 (#195)
ChenSirui-016 Dec 2, 2022
d9b42f0
Add djLint for .hbs linting (#196)
wei2912 Dec 12, 2022
24ff7e1
Bump postcss from 8.4.19 to 8.4.21
dependabot[bot] Jan 9, 2023
390943e
Bump cssnano from 5.1.14 to 5.1.15
dependabot[bot] Feb 20, 2023
8fe5e46
Bump gscan from 4.34.0 to 4.36.0
dependabot[bot] Jan 9, 2023
43e1a4e
Bigger Progress Bar (#216)
gajinkee Mar 7, 2023
a2c52fc
fixed the issue by setting nowrap parameter (#220)
ChenSirui-016 Mar 7, 2023
9e2a0dd
fixed the issue (#210)
ChenSirui-016 Mar 7, 2023
f7a2b2c
stories: show url on post card hover (#217)
gajinkee Mar 8, 2023
4fc2991
fix issue 170 on disappearing search bar (#193)
ongyongen Mar 9, 2023
61a1816
main.js: highlight search query in title & description (#211)
Hackin7 Apr 1, 2023
aad1e0b
post: remove extra right padding of Facebook icon (#227)
gajinkee Apr 8, 2023
423e05f
Bump autoprefixer from 10.4.13 to 10.4.14
dependabot[bot] Mar 13, 2023
bf966d7
Bump gscan from 4.36.0 to 4.36.2
dependabot[bot] Apr 10, 2023
6f1dcf6
post: enlarge navigation arrows (#225)
gajinkee Apr 11, 2023
ea87379
post: vertically align share buttons (#221)
gajinkee Apr 11, 2023
e18e3fb
Bump cssnano from 5.1.15 to 6.0.0
dependabot[bot] Apr 11, 2023
db08d76
remove PhotoSwipe (#198)
Hackin7 May 10, 2023
d895e49
minor formatting changes
wei2912 May 10, 2023
abe3517
Bump postcss from 8.4.21 to 8.4.23
dependabot[bot] Apr 24, 2023
62ee34c
Bump cssnano from 6.0.0 to 6.0.1
dependabot[bot] May 1, 2023
b2cd755
Bump gscan from 4.36.2 to 4.36.3
dependabot[bot] May 15, 2023
c5d6054
[GPT-10] Stories: implement tag pills (#213)
Hackin7 May 22, 2023
93a9118
main.js: fix eslint error
wei2912 May 22, 2023
91b38d0
[GPT-15] Search: add pagination (#228)
gajinkee May 22, 2023
5ebd4ba
add umami (#243)
wei2912 May 22, 2023
e52b75f
events: use loxi widget (#253)
Hackin7 Jun 17, 2023
6fbc916
post: style metadata
wei2912 Jun 17, 2023
04a36c8
Bump postcss from 8.4.23 to 8.4.24
dependabot[bot] May 29, 2023
5f21abd
[GPT-16] Single featured post (#252)
gajinkee Jul 11, 2023
26219b6
[GPT-22] Home: Images in Carousell to link to relevant page (#256)
bryanseah234 Jul 11, 2023
a4b9995
lint: switch djlint to python impl.
wei2912 Jul 15, 2023
e4346b2
Bump postcss from 8.4.24 to 8.4.25
dependabot[bot] Jul 10, 2023
e5a4d99
Bump gscan from 4.36.3 to 4.37.1
dependabot[bot] Jul 3, 2023
b7c3792
Bump prettier from 2.8.8 to 3.0.0
dependabot[bot] Jul 10, 2023
6d1fda6
Revert "Bump prettier from 2.8.8 to 3.0.0"
wei2912 Jul 15, 2023
1853584
[GPT-36] Add footer links (#273)
geeseanonymous Aug 17, 2023
8790f02
Bump postcss from 8.4.25 to 8.4.28
dependabot[bot] Aug 21, 2023
ced107d
feat: tag search results by post/page type
Hackin7 Sep 20, 2023
ae5adc3
Bump gscan from 4.37.1 to 4.38.0
dependabot[bot] Sep 4, 2023
c7e0b2a
build(deps-dev): bump postcss from 8.4.28 to 8.4.30
dependabot[bot] Sep 23, 2023
17f8747
feature: team page (#200)
ChenSirui-016 Oct 18, 2023
940b0ab
build: use Node v18
wei2912 Oct 18, 2023
380a6e5
fix: remove obsolete line-clamp
wei2912 Oct 18, 2023
710c7a6
[GPT-37] Fix mobile homepage (#286)
geeseanonymous Nov 8, 2023
4d25e3e
add padding to featured article cards (#307)
jeffzy15 Nov 20, 2023
f42da7d
fix featured-posts autoscroll issue (#304)
jeffzy15 Nov 20, 2023
7cc1549
build(deps-dev): bump autoprefixer from 10.4.14 to 10.4.16
dependabot[bot] Sep 25, 2023
7ad484d
build(deps-dev): bump postcss from 8.4.30 to 8.4.31
dependabot[bot] Oct 2, 2023
b748382
redesigned banners (#308)
jeffzy15 Dec 5, 2023
b2e47e9
made search feature responsive (#310)
jeffzy15 Dec 5, 2023
ba8348d
[GPT-42] Removed the featured by (#321)
gajinkee Dec 27, 2023
b2b758b
[GPT-35] 267 footer image cannot be seen (#290)
bryanseah234 Dec 30, 2023
4e305b5
[GPT-60] Increase size of Featured Article Image in Mobile View (#312)
jeffzy15 Dec 30, 2023
d240642
[GPT-44] Stories: Blue Border on cards (#305)
jeffzy15 Dec 30, 2023
9eed565
build(deps-dev): bump postcss from 8.4.31 to 8.4.35
dependabot[bot] Feb 12, 2024
7c812b1
build(deps-dev): bump gscan from 4.38.0 to 4.42.0
dependabot[bot] Nov 21, 2023
04d53c9
fix(featured): adjust padding of featured post slide text (#316)
wei2912 Feb 18, 2024
edcb4f6
build(deps-dev): bump autoprefixer from 10.4.16 to 10.4.18
dependabot[bot] Mar 4, 2024
eb681c4
fix(featured-by): increase padding between sections (#346)
feliciahmq Apr 30, 2024
6ec9ad9
Update featured.css (#345)
geeseanonymous May 20, 2024
5be82a4
[GPT-75] Home page revamp (#356)
Hackin7 Jun 25, 2024
786a435
misc(team): update Chief Networks Officer
wei2912 Jun 26, 2024
e4f9974
feat(post): rm progress bar (#363)
feliciahmq Jul 3, 2024
ff23a2e
fix(post): rm black bg behind arrows (#359)
feliciahmq Jul 3, 2024
2f2c5df
[GPT-90] Post: Retain toggle dropdown for H2 headings (#362)
gajinkee Jul 8, 2024
471aebd
[GPT-96] Home page revamp 2 (#361)
Hackin7 Jul 10, 2024
d535279
Post: Remove borders on headings Design (#368)
gajinkee Jul 10, 2024
9adceba
build(deps-dev): bump husky from 8.0.3 to 9.0.11
dependabot[bot] Feb 19, 2024
189648a
build(deps-dev): bump gulp-postcss from 9.0.1 to 10.0.0
dependabot[bot] Mar 11, 2024
4d84fc6
build: use ^ version for deps
wei2912 Jul 16, 2024
7f17de8
chore: format code
wei2912 Jul 16, 2024
d7d91e7
feat(team): simplify to boards
wei2912 Jul 16, 2024
cb9aab6
feat: update homepage (#372)
wei2912 Jul 26, 2024
711d988
feat: standardise Events & Interviews pages (#379)
wei2912 Jul 26, 2024
9542816
fix(page-team): use normal body font
wei2912 Jul 26, 2024
48fa36e
fix(footer): update links
wei2912 Jul 26, 2024
d79eb90
fix: rm obsolete Events page
wei2912 Jul 26, 2024
fe14baa
feat(team): standardise heading w/ home
wei2912 Jul 26, 2024
9c419f2
fix(post): adjust margin of dropdown
wei2912 Jul 26, 2024
e683d41
fix: dropdown only for posts
Hackin7 Jul 26, 2024
406aeb0
fix(team): typo
wei2912 Jul 27, 2024
c17984c
Footer Email and Telegram icons (#391)
feliciahmq Aug 1, 2024
265a52d
Replaced twitter with X share button (#390)
feliciahmq Aug 1, 2024
bdc5a33
build(deps-dev): bump cssnano from 6.1.2 to 7.0.5
dependabot[bot] Aug 12, 2024
ef1e8bf
fix(team): rm offboarded BOAs
wei2912 Sep 24, 2024
e368d6c
feat(deploy): update actions
wei2912 Sep 24, 2024
911bdc6
fix(workflows): upgrade to Node v18
wei2912 Sep 24, 2024
79acba7
feat(events,interviews): filter tagged articles of same taxonomy (#393)
gajinkee Oct 13, 2024
da3a236
build(dependabot): reduce open PRs to 3
wei2912 Nov 5, 2024
d590260
build: bump to Node v20
wei2912 Nov 6, 2024
d94f864
build(dependabot): update GH Actions workflows
wei2912 Nov 6, 2024
d1fbd59
[GPT-132] dev: impl devcontainer (#411)
wei2912 Dec 8, 2024
8f95a6a
[GPT-125] [GPT-131] feat(home): revamp w/ impact section (#406)
Hackin7 Dec 8, 2024
0eaf288
fix(devcontainer): only run Ghost on start
wei2912 Dec 8, 2024
7074eb9
feat(home): update featured by (#422)
Hackin7 Dec 10, 2024
e57cf21
Launch bug fixes (#425)
Hackin7 Dec 20, 2024
ad327a8
fix(js): dropdown omits non-p elements (#423)
gajinkee Dec 20, 2024
6bc5927
Launch bug fixes (#427)
Hackin7 Dec 21, 2024
4d98aac
Impact Section Spacing (#428)
Hackin7 Dec 21, 2024
c34ed14
[GPT-88] fix: footnotes styling (#429)
feliciahmq Dec 25, 2024
f3bdbde
feat: hide deputy president external (#435)
Hackin7 Dec 28, 2024
38b3c91
fix(home): broken 'Read More' links
wei2912 Jan 1, 2025
3686d78
fix(team): missing BOA links
wei2912 Jan 4, 2025
62de1e0
fix(team): rearrange in asc. order
wei2912 Jan 4, 2025
67b1bad
feat(config): add redirects.yaml
wei2912 Jan 4, 2025
dec088c
fix(home): add fullstop
wei2912 Jan 4, 2025
8510786
fix(footer): update year
wei2912 Jan 4, 2025
f79e1b4
Post migration warning (#448)
Hackin7 Jan 4, 2025
cbdcf6f
fix(team): correct typo
wei2912 Jan 5, 2025
7b43f45
fix(team): add Keith's photo
wei2912 Jan 28, 2025
81e2bac
fix(home): update ProNet logo
wei2912 Feb 1, 2025
51131fc
fix(team): update headings and rm Nakul
wei2912 Feb 1, 2025
02b3d78
fix(home): correct img padding and alt
wei2912 Feb 1, 2025
c4a464c
fix(footer): rm partners
wei2912 Feb 1, 2025
215ea56
fix(team): update Junhao's role
wei2912 Feb 3, 2025
f3732fa
fix(team): update role
wei2912 Apr 7, 2025
4f5766a
fix(team): reorder directors
wei2912 May 17, 2025
157599b
fix(team): reorder BOD
wei2912 May 19, 2025
aed79c5
[GPT-151] Update post.hbs (#457)
Famoushealer May 19, 2025
861bf97
fix(team): add link to Keith
wei2912 Jul 9, 2025
ca77fa7
Update README.md
Hackin7 Sep 2, 2025
2c14e5d
feat: added duplicate tags (#461)
Hackin7 Sep 24, 2025
50179b2
build(dependabot): rm reviewers
wei2912 Nov 1, 2025
f3a528c
Update footer.hbs (#471)
AA2409 Nov 19, 2025
f0884a7
Remove warning message #462 (#472)
AA2409 Jan 20, 2026
0ec35c3
Update footer.hbs (#473)
AA2409 Feb 5, 2026
99299de
FIx Image resizing (#474)
AA2409 Feb 26, 2026
f375899
fix: update routes to include duplicate tags (#476)
Hackin7 Feb 26, 2026
90b0f31
build: upgrade to Ghost v6.5 w/ Node v22
wei2912 Nov 1, 2025
aef9fd0
build(dependabot): group dependencies by ecosystem/type
wei2912 Mar 9, 2026
a632af5
[GPT-146] update logo (#482)
teyyyyy Jun 7, 2026
ed3a39e
[GPT-161] docs(specs): add sort/filter design for events and intervie…
Hackin7 Jun 8, 2026
52dd228
[GPT-163] Suggested articles improvements (#484)
Hackin7 Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FROM mcr.microsoft.com/devcontainers/base:ubuntu

# Node v22 setup - refer to below URL for details
# https://github.com/nodesource/distributions?tab=readme-ov-file#using-ubuntu-nodejs-20
RUN apt-get install -y curl \
&& curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh \
&& bash nodesource_setup.sh \
&& apt-get install -y nodejs python3-setuptools \
&& node -v # verify Node installation

# Ghost setup
RUN npm install ghost-cli@latest -g
USER vscode
RUN mkdir ~/ghost \
&& cd ~/ghost \
&& ghost install local
28 changes: 28 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "Ubuntu 24.04 w/ Ghost",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"build": { "dockerfile": "Dockerfile" },

// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [2368],

"containerEnv": {
"REPO": "/workspaces/dawn-advisory-theme"
},

// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "$REPO/.devcontainer/ghost_setup.sh",
"postStartCommand": "npm run prepare && cd ~/ghost && ghost start",
"postAttachCommand": "npm run dev"

// Configure tool-specific properties.
// "customizations": {},

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}
14 changes: 14 additions & 0 deletions .devcontainer/ghost_setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

export REPO="/workspaces/dawn-advisory-theme"

# Step 1: Create symbolic link to theme
ln -s $REPO ~/ghost/content/themes

# Step 2: Start Ghost
cd ~/ghost
ghost start

# Step 3: Install dependencies + run setup script
cd $REPO/.devcontainer/ghost_setup
npm install && npm start
52 changes: 52 additions & 0 deletions .devcontainer/ghost_setup/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
const readline = require("readline");
const GhostAdminAPI = require("@tryghost/admin-api");

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
prompt: "> ",
});

console.log("---");
console.log("Please do the following steps:");
console.log("Step 1: Complete the setup at http://localhost:2368/ghost/.");
console.log(
"The actual details don't matter, but make sure to save your username and password.",
);
console.log(
"Step 2: Follow https://ghost.org/docs/admin-api/#token-authentication to create an integration.",
);
console.log("Step 3: Copy the Admin API key into the following prompt.");
console.log("---");

(async () => {
const apiKey = await new Promise((callback) => {
rl.question("Admin API Key: ", callback);
});

const api = new GhostAdminAPI({
url: "http://localhost:2368",
version: "v5.0",
key: apiKey,
});

console.log("Activating repository theme...");
await api.themes.activate("dawn-advisory-theme").then((res) => {
console.log(JSON.stringify(res));
});
console.log("Finished setup!");

console.log("---");
console.log("The remaining steps need to be done manually:");
console.log(
"1. Under Settings > Advanced > Import/Export, import an export of the main Ghost website.",
);
console.log("2. Under Settings > Labs, import redirects and routes.");
console.log("For more details, please reach out to the maintainers! :)");
console.log("---");

await new Promise((callback) => {
rl.question("Press enter to continue...", callback);
});
rl.close();
})();
14 changes: 14 additions & 0 deletions .devcontainer/ghost_setup/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "ghost_setup",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "MIT",
"description": "",
"dependencies": {
"@tryghost/admin-api": "^1.14.0"
}
}
5 changes: 5 additions & 0 deletions .djlintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"profile": "handlebars",
"extension": "hbs",
"ignore": "H006,H013,H017,H021,H030,H031"
}
28 changes: 23 additions & 5 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
version: 2
updates:
- package-ecosystem: npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: weekly
reviewers:
- "AdvisorySG/ghost-reviewers"
open-pull-requests-limit: 4
interval: "weekly"
groups:
production-dependencies:
dependency-type: "production"
development-dependencies:
dependency-type: "development"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
groups:
all-dependencies:
patterns: ["*"]

- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: "weekly"
groups:
all-dependencies:
patterns: ["*"]
34 changes: 24 additions & 10 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,37 @@ on:
pull_request:
push:
jobs:
pre_build:
continue-on-error: true
runs-on: ubuntu-24.04
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v4
with:
concurrent_skipping: "same_content_newer"
paths_ignore: '["CONTRIBUTING.md", "LICENSE", "**/README.md"]'

build:
needs: pre_build
if: ${{ (github.event_name == 'push' && github.ref == 'refs/heads/main') || needs.pre_build.outputs.should_skip != 'true' }}
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
node-version: [22.x]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Cache Node modules
uses: actions/cache@v1
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Setup Node
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

Expand All @@ -30,7 +44,7 @@ jobs:
- run: unzip dist/dawn-advisory-theme.zip -d dist/
- run: rm dist/dawn-advisory-theme.zip
- name: Upload build
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
name: dawn-advisory-theme-${{ github.sha }}
path: dist/
Expand All @@ -41,27 +55,27 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
node-version: [22.x]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Cache Node modules
uses: actions/cache@v1
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Setup Node
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- run: npm install
- run: npm run zip

- name: Deploy Ghost theme
uses: TryGhost/action-deploy-theme@v1.4.1
uses: TryGhost/action-deploy-theme@v1.6.6
with:
api-url: ${{ secrets.GHOST_API_URL }}
api-key: ${{ secrets.GHOST_DEPLOY_THEME_ADMIN_API_KEY }}
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ on:
push:
jobs:
lint:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
strategy:
matrix:
node-version: [16.x]
node-version: [22.x]
steps:
- uses: actions/checkout@v2

Expand All @@ -22,7 +22,14 @@ jobs:
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.11

- run: npm install
- run: pip install djlint

- run: npx eslint .
- run: npx prettier -c .
- run: djlint . --lint
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@ dist/
config.json
changelog.md
changelog.md.bk

replit.nix
.replit
43 changes: 22 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,12 @@ npm run zip

4. Upload the zipfile at `dist/dawn-advisory-theme.zip` onto your local Ghost instance at `Settings > Theme > Change theme > Upload theme`.

Optionally, if you have access to the [Admin panel of Advisory](https://beta.advisory.sg/ghost/), you can go to `Settings > Labs > Migration Options > Export your content` in order to export the posts and settings used for the actual website as a JSON file. This file can be imported into your local instance of Ghost, at `Settings > Labs > Migration Options > Import content`. Take note that this will not remove existing posts/pages.
For new developers, please ask Tech Management for the posts and settings to be exported, and to pass you the output JSON file.
This file can be imported into your local instance of Ghost, at `Settings > Labs > Migration Options > Import content`. Take note that this will not remove existing posts/pages.

# Search
Optionally, if you have access to the [Admin panel of Advisory](https://beta.advisory.sg/ghost/), you can go to `Settings > Labs > Migration Options > Export your content` in order to export the posts and settings used for the actual website as a JSON file.

1. Navigate to the `Integrations` and click on `Add custom integration`.
2. Copy the content API key; this will be used to fetch posts from your site.
3. Insert the generated key in `Settings > Design > Site-wide > Content API key for search".

The theme generates an index of posts for highly performant search. The index is updated automatically when posts are added or updated. However, it isn't updated when posts are unpublished or deleted.

To force update the index, increment the search index migration version like `'v2'`.

## Disable Content Search

When your site has lots of posts, including the post content in the index cache ends up with exceeding the browser local storage quota. In that case, disabling content search is recommended. Also make sure increase the migration version to force update the old index.

```html
<script>
var gh_search_key = "API_KEY";
var gh_search_migration = "v2"; // Increased from v1
var gh_search_content = false; // Disables content search
</script>
```
Furthermore, also make sure to setup `routes.yaml` as explained further down below

# Dropdown Menu

Expand Down Expand Up @@ -88,6 +71,24 @@ For the homepage and separate [Stories](https://beta.advisory.sg/stories) page t

**Note**: The `routes.yaml` file supplied in the repository is not automatically deployed onto the main website.

# Typesense Search

The `/events/` and `/interviews/` pages have a typo-tolerant search box backed by [Typesense](https://typesense.org/), and the bottom-of-article "you might also like" widget uses Typesense for content-relevance ranking. Three settings live under `config.custom` in `package.json` and are admin-overridable in **Ghost Admin -> Settings -> Design -> Customize**:

| Setting | Default | What it is |
| ---------------------- | ------------------------------- | ------------------------------------------------------------------ |
| `typesense_host` | `https://typesense.advisory.sg` | Typesense host URL (no trailing slash). HTTPS recommended. |
| `typesense_api_key` | (Advisory SG search-only key) | Typesense **search-only** API key. Embedded client-side by design. |
| `typesense_collection` | `ghost` | Name of the indexed Ghost-posts collection on the Typesense host. |

The flow is: `package.json` defaults → `default.hbs` injects them as `window.__TYPESENSE_CONFIG__` → `assets/js/typesense-search.js` reads from that global at search time, falling back to the same defaults if the global is missing.

**About the API key in source.** Typesense splits keys into _admin_ (read/write, secret) and _search-only_ (read-only, scoped to a collection). The search-only key is the analogue of Ghost's Content API key — it's designed to ship in client-side JavaScript and only grants read access to data that's already public. Don't paste an admin key here.

**Deploying to a different Ghost instance.** If your instance points at a different Typesense backend, override the three settings in **Design → Customize** rather than editing the theme. The defaults in `package.json` are only the fallback for installs that don't override.

**About the indexer.** This theme expects an existing Typesense collection populated with Ghost posts (`title`, `slug`, `excerpt`, `plaintext`, `feature_image`, `url`, `tags.name`, `tags.slug`, `published_at`, etc.). The sync mechanism (e.g. [MagicPages' Ghost-Typesense integration](https://github.com/magicpages/ghost-typesense)) is **not** part of this theme.

# PostCSS Features Used

- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
Expand Down
Loading