Skip to content

Commit ed90796

Browse files
committed
Publish reviewed Fall 2026 officer profiles
1 parent 95b4445 commit ed90796

67 files changed

Lines changed: 1418 additions & 407 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.agents/skills/pre-production-checklist/SKILL.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ Run this gate whenever public routes, the canonical domain, page purpose, contac
3535

3636
This gate passes only when the file accurately describes the current public site, all listed destinations are intentional, and the deployed copy is reachable without authentication.
3737

38+
## Gate 3 — Officer profile publication
39+
40+
Run this gate whenever the officer roster, a form-response snapshot, profile links, bios, or officer-data build logic changes.
41+
42+
1. Run `npm test` and `npm run validate:officers`.
43+
2. Confirm `src/data/officersFa26Roster.json` is the only authority for cohort membership, roles, order, stable IDs, and fallback portraits.
44+
3. Confirm `src/data/officerProfilesFa26.json` contains the real Notion response page ID for provenance and only public profile fields copied from reviewed form responses. Never add email addresses, phone numbers, birthdays, or other private form answers.
45+
4. Review every unmatched submission, invalid profile link, and officer without a current response reported by the validator. An officer without a response may retain only the roster fallback; do not invent a bio or personal link.
46+
5. On the rendered page, open at least one complete profile and confirm its full bio and Website, LinkedIn, GitHub, and ORCID destinations are labeled, keyboard accessible, and correct.
47+
6. Confirm every added or replaced headshot path resolves in a clean build, and complete Gate 1 for its framing.
48+
7. Confirm the Fall 2025 and Spring 2026 archive tabs load from the tracked files under `public/officers/archive/`; a build must not require Notion, Google Sheets, or a prior production deployment.
49+
50+
This gate passes only when the published roster matches the approved cohort, current public submissions enrich the correct people, invalid or private form values cannot leak through, and all officer tabs work from a clean checkout.
51+
3852
## Release discipline
3953

4054
- Run checks against the public staging URL after pushing `dev`.

‎.github/workflows/deploy.yml‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,10 @@ jobs:
3737
cache: 'npm'
3838
- name: Install dependencies
3939
run: npm ci
40+
- name: Test
41+
run: npm test
4042
- name: Build
4143
run: npm run build
42-
env:
43-
NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }}
44-
NOTION_OFFICERS_DB_ID: ${{ secrets.NOTION_OFFICERS_DB_ID }}
4544
- name: Setup Pages
4645
uses: actions/configure-pages@v5
4746
- name: Upload artifact

‎.github/workflows/staging-pages.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ jobs:
3434
- name: Install dependencies
3535
run: npm ci
3636

37-
- name: Mirror public officer data
38-
run: node scripts/sync-preview-data.js
37+
- name: Test
38+
run: npm test
3939

4040
- name: Build staging site
4141
run: npm run build:preview

‎.gitignore‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ my-vite-app/*
3838
# others
3939
dev/
4040

41-
## EXTREMELEY IMPORTANT: DO NOT COMMIT THE FOLDER BELOW.
42-
## It doesn't contain sensitive data but it's fetched at build time, and
43-
## it may be quite heavy so there is no point in keeping it committed to the repository.
41+
## Legacy importer scratch output. Builds use the reviewed, tracked snapshots
42+
## under public/officers/ instead.
4443
public/fetched
4544

4645
# Local deployment and TypeScript build state

‎README.md‎

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,39 @@
11
# Computational Biology at Berkeley
22

3-
## How to edit the code
3+
The public website for Computational Biology at Berkeley, built with Vite, React, TypeScript, shadcn/ui, and Tailwind CSS.
44

5-
**Use your preferred IDE**
6-
7-
If you want to work locally using your own IDE, you can clone this repo and push changes. Pushed changes will also be reflected in Lovable.
8-
9-
The only requirement is having Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating)
10-
11-
Follow these steps:
5+
## Local development
126

137
```sh
14-
# Step 1: Clone the repository using the project's Git URL.
15-
git clone <YOUR_GIT_URL>
16-
17-
# Step 2: Navigate to the project directory.
18-
cd <YOUR_PROJECT_NAME>
19-
20-
# Step 3: Install the necessary dependencies.
21-
npm i
22-
23-
# Step 4: Start the development server with auto-reloading and an instant preview.
8+
npm ci
9+
npm test
2410
npm run dev
2511
```
2612

27-
**Edit a file directly in GitHub**
13+
Run `npm run build` for the same credential-free production build used by GitHub Pages. The build validates officer data before compiling the site.
14+
15+
## Officer data
2816

29-
- Navigate to the desired file(s).
30-
- Click the "Edit" button (pencil icon) at the top right of the file view.
31-
- Make your changes and commit the changes.
17+
Fall 2026 deliberately separates approved roster decisions from submitted public profile content:
3218

33-
**Use GitHub Codespaces**
19+
- `src/data/officersFa26Roster.json` owns cohort membership, roles, order, stable IDs, and fallback portraits.
20+
- `src/data/officerProfilesFa26.json` is a reviewed, public-only snapshot of the latest officer form responses.
21+
- `src/data/compileOfficerDirectory.js` matches responses to the roster, keeps the newest nonblank public fields, normalizes links, and ignores unmatched people.
22+
- `public/officers/fa26/` stores stable headshot assets.
23+
- `public/officers/archive/` stores immutable Fall 2025 and Spring 2026 snapshots so historical tabs work in a clean checkout.
3424

35-
- Navigate to the main page of your repository.
36-
- Click on the "Code" button (green button) near the top right.
37-
- Select the "Codespaces" tab.
38-
- Click on "New codespace" to launch a new Codespace environment.
39-
- Edit files directly within the Codespace and commit and push your changes once you're done.
25+
Never copy private form fields such as email, phone number, or birthday into the repository. Run:
4026

41-
## What technologies are used for this project?
27+
```sh
28+
npm test
29+
npm run validate:officers
30+
```
4231

43-
This project is built with:
32+
The validator reports unmatched responses, invalid public links, missing assets, and officers still waiting for a current profile response. See `scripts/README.md` for the update workflow and `.agents/skills/pre-production-checklist/SKILL.md` before a production promotion.
4433

45-
- Vite
46-
- TypeScript
47-
- React
48-
- shadcn-ui
49-
- Tailwind CSS
34+
## Deployment
5035

51-
## How can I deploy this project?
36+
- Pushes to `dev` deploy the staging GitHub Pages site from the `Hilo-Hilo` staging repository.
37+
- Pushes to `main` deploy production from `CompbioAtBerkeley/compbioatberkeley.github.io`.
5238

53-
Everything is automatically deployed once pushed so make sure to test the project before pushing.
39+
Neither build reads Notion or Google Sheets credentials. Form intake is reviewed and versioned before publication, so the same commit produces the same site in local, staging, and production environments.

‎package.json‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
"scripts": {
77
"assets:partners": "node scripts/build-partner-logos.mjs",
88
"dev": "vite",
9-
"prebuild": "npm run fetch-data",
10-
"build": "vite build",
11-
"build:dev": "vite build --mode development",
12-
"build:preview": "vite build",
13-
"fetch-data": "node scripts/fetch-officers-fa25.js && node scripts/fetch-officers-notion.js",
9+
"test": "node --test scripts/lib/*.test.js",
10+
"validate:officers": "node scripts/validate-officer-data.js",
11+
"build": "npm run validate:officers && vite build",
12+
"build:dev": "npm run validate:officers && vite build --mode development",
13+
"build:preview": "npm run validate:officers && vite build",
1414
"lint": "eslint .",
1515
"preview": "vite preview"
1616
},

‎public/llms.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ The organization welcomes students at all experience levels. Use the pages below
1010
- [About](https://compbioatberkeley.github.io/about): Mission and work across education, research, professional networking, and community impact.
1111
- [Calendar](https://compbioatberkeley.github.io/calendar): Current workshops, meetings, and special events in Pacific time.
1212
- [Collaborations](https://compbioatberkeley.github.io/collaborations): Partnership opportunities for students, faculty, alumni, research groups, and industry.
13-
- [Officers](https://compbioatberkeley.github.io/officers): Current and previous student leadership rosters.
13+
- [Officers](https://compbioatberkeley.github.io/officers): Fall 2026 and previous student leadership rosters, including submitted public bios and profile links.
1414
- [Join](https://compbioatberkeley.github.io/signup): Interest form, newsletter signup, and community channels.
1515

1616
## Contact and community
25.8 KB
Loading
28.3 KB
Loading
19 KB
Loading

0 commit comments

Comments
 (0)