Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0b86e86
chore: add .env and .env.* to .gitignore
syncopascual Mar 27, 2026
448f273
deps: add @supabase/supabase-js
syncopascual Mar 27, 2026
1395ed6
feat: use Supabase client to fetch member list instead of JSON
syncopascual Mar 28, 2026
fc2c9d6
fix: rework path handling for images and social links
syncopascual Mar 28, 2026
aa637ae
feat: sort members
syncopascual Mar 28, 2026
0db7cd6
feat: use Supabase for exec Accordion components
syncopascual Mar 28, 2026
08024c1
chore: run fmt, lint, and build
syncopascual Mar 28, 2026
ba6c28e
feat: sort officers
syncopascual Mar 28, 2026
b49e173
chore: remove redundant JSON data
ehrelevant Apr 13, 2026
ecc880e
feat(env): add validation step to parsing environment variables
ehrelevant Apr 13, 2026
6cc5cc8
refactor(people): match member schema with database query
ehrelevant Apr 13, 2026
df8b143
refactor(people): remove committee abbreviations
ehrelevant Apr 13, 2026
a2517df
refactor(people): prefer views for querying executive boards
ehrelevant Apr 13, 2026
aa4c8fb
refactor(people): match people page with respect to updated models
ehrelevant Apr 13, 2026
2f3928f
chore: run formatters and linters
ehrelevant Apr 13, 2026
2e0bb9d
feat(ci): inject env variables in actions workflow
ehrelevant Apr 13, 2026
d1acc7c
chore: run formatter
ehrelevant Apr 13, 2026
bb5d859
chore: inject env variables in linting and formatting steps
ehrelevant Apr 13, 2026
dcaa9cb
fix(ci): set workflow env variables at start
ehrelevant Apr 13, 2026
bc4d258
chore(ci): prefer repository variables over secrets for public supaba…
ehrelevant Apr 13, 2026
3020575
feat(ci): add default values for env variables
ehrelevant Apr 13, 2026
6cca4bc
feat(ci): separate ci and deploy workflows
ehrelevant Apr 13, 2026
07c54f7
chore: run formatter
ehrelevant Apr 13, 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
33 changes: 33 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Code Quality

on:
workflow_dispatch:
pull_request:
push:
branches:
- main

env:
PUBLIC_SUPABASE_URL: ${{ vars.PUBLIC_SUPABASE_URL || 'https://your-supabase-url.supabase.co' }}
PUBLIC_SUPABASE_PUBLISHABLE_KEY: ${{ vars.PUBLIC_SUPABASE_PUBLISHABLE_KEY || 'your-supabase-publishable-key' }}

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install Node.js
uses: actions/setup-node@v5
with:
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
node-version: 24
- name: Install Dependencies
run: pnpm install
- name: Check Formatters
run: pnpm fmt
- name: Run All Lints in Parallel
run: pnpm lint
12 changes: 6 additions & 6 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Deploy to GitHub Pages

on:
workflow_dispatch:
pull_request:
push:
branches: main
branches:
- main

permissions:
contents: read
Expand All @@ -15,6 +15,10 @@ concurrency:
group: pages
cancel-in-progress: false

env:
PUBLIC_SUPABASE_URL: ${{ vars.PUBLIC_SUPABASE_URL || 'https://your-supabase-url.supabase.co' }}
PUBLIC_SUPABASE_PUBLISHABLE_KEY: ${{ vars.PUBLIC_SUPABASE_PUBLISHABLE_KEY || 'your-supabase-publishable-key' }}

jobs:
build:
runs-on: ubuntu-latest
Expand All @@ -31,10 +35,6 @@ jobs:
node-version: 24
- name: Install Dependencies
run: pnpm install
- name: Check Formatters
run: pnpm fmt
- name: Run All Lints in Parallel
run: pnpm lint
- name: Build Website
run: pnpm build
- name: Setup Pages
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@
.eslintcache
node_modules
build
*.sh
*.sh
.env
.env.*
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"@iconify/icons-heroicons": "^1.2.9",
"@iconify/icons-simple-icons": "^1.2.74",
"@iconify/svelte": "^5.0.2",
"@supabase/supabase-js": "^2.100.1",
"@sveltejs/kit": "^2.47.3",
"html-minifier": "^4.0.0",
"svelte": "^5.41.4",
Expand Down
100 changes: 98 additions & 2 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 13 additions & 8 deletions src/lib/components/cards/MemberCard.svelte
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
<script lang="ts">
import { fade } from 'svelte/transition';

import type { BoardOfficer } from '$lib/types/board_officer';
import type { Member } from '$lib/models/member';
import type { Executive } from '$lib/models/executive';

import MemberCardTag from '$lib/components/cards/MemberCardTag.svelte';

interface Props {
member: BoardOfficer | Member;
socials?: Record<string, string>;
nickname: Member['nickname'] | Executive['nickname'];
last_name: Member['last_name'] | Executive['last_name'];
image_url: Member['image_url'] | Executive['image_url'];
socials?: Member['socials'];
titles?: Executive['titles'];
color: string;
foreground: string;
}

const { member, socials, color, foreground }: Props = $props();
const { name, src, title } = $derived(member);
const { nickname, last_name, image_url, socials, titles, color, foreground }: Props = $props();

const name = $derived(`${nickname} ${last_name}`);

let isOverlayVisible = $state(false);
</script>

Expand All @@ -26,7 +31,7 @@
onmouseleave={() => (isOverlayVisible = false)}
>
<img
src="https://assets.up-csi.org/website/images/people/{src}.webp"
src={image_url}
alt={name}
height="300px"
loading="lazy"
Expand All @@ -37,7 +42,7 @@
class="bg-csi-black/70 text-csi-white absolute z-10 col-start-1 row-start-1 hidden h-full w-full flex-col justify-end gap-2 p-4 md:flex"
transition:fade={{ duration: 75 }}
>
<MemberCardTag {name} {title} {socials} />
<MemberCardTag {name} {titles} {socials} />
</div>
{:else}
<div
Expand All @@ -51,6 +56,6 @@
{/if}

<div class="col-start-1 row-start-2 flex flex-col gap-2 md:hidden">
<MemberCardTag {name} {title} {socials} />
<MemberCardTag {name} {titles} {socials} />
</div>
</div>
10 changes: 5 additions & 5 deletions src/lib/components/cards/MemberCardTag.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@

interface Props {
name: string;
title?: Position[];
titles?: Position[];
socials?: Record<string, string>;
}

const { name, title, socials }: Props = $props();
const { name, titles, socials }: Props = $props();
</script>

<div class="*:!m-0">
<p class="text-md md:text-lg">{name}</p>
{#if title}
{#if titles}
<p class="text-xs leading-tight">
{title.join(', ')}
{titles.join(', ')}
</p>
{/if}
</div>
<div class="flex flex-row flex-wrap gap-2">
{#if socials}
{#each Object.entries(socials) as [social, link] (social)}
{@const { path, icon } = getSocialMedium(social)}
{@const href = path ? `${path}/${link}` : link}
{@const href = path === 'https://github.com' ? `${path}/${link}` : link}
<a {href} target="_blank"
><Icon
{icon}
Expand Down
12 changes: 5 additions & 7 deletions src/lib/components/panels/ExecPanel.svelte
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
<script lang="ts">
import type { Board } from '$lib/types/board';

import { getCommitteeInfo } from '$lib/types/committees';

import Card from '$lib/components/cards/MemberCard.svelte';
import type { Executive } from '$lib/models/executive';

interface Props {
board: Board;
executives: Executive[];
}

const { board }: Props = $props();
const { officers }: Board = $derived(board);
const { executives }: Props = $props();
const { color, foreground } = getCommitteeInfo('Executive');
</script>

<section
class="grid w-full grid-cols-2 gap-x-6 gap-y-12 md:grid-cols-3 md:gap-6 lg:grid-cols-4 xl:grid-cols-5"
>
{#each officers as member (member.name)}
<Card {member} {color} {foreground} />
{#each executives as { id, nickname, last_name, image_url, titles } (id)}
<Card {nickname} {last_name} {image_url} {titles} {color} {foreground} />
{/each}
</section>
4 changes: 2 additions & 2 deletions src/lib/components/panels/TeamPanel.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@
>
{#if filteredTeam}
{@const { color, foreground } = getCommitteeInfo(currentCommittee)}
{#each filteredTeam as member (member.name)}
<Card {member} socials={member.socials} {color} {foreground} />
{#each filteredTeam as { id, nickname, last_name, image_url, socials } (id)}
<Card {nickname} {last_name} {image_url} {socials} {color} {foreground} />
{/each}
{/if}
</div>
Expand Down
Loading
Loading