diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 0138825..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - env: { - browser: true, - es2021: true, - node: true, - }, - extends: ["eslint:recommended", "plugin:react/recommended"], - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - ecmaVersion: "latest", - sourceType: "module", - }, - plugins: ["react"], - rules: { - "react/prop-types": "off", - }, - settings: { - react: { - version: "detect", - }, - }, -}; diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cdc396e..32cf94e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,8 +12,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Code - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + uses: actions/checkout@v6 + - name: Setup Node + uses: actions/setup-node@v6 with: node-version: "22" - name: Setup Project diff --git a/.github/workflows/prettier_check.yml b/.github/workflows/prettier_check.yml index f094f88..99d744c 100644 --- a/.github/workflows/prettier_check.yml +++ b/.github/workflows/prettier_check.yml @@ -12,8 +12,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Code - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + uses: actions/checkout@v6 + - name: Setup Node + uses: actions/setup-node@v6 with: node-version: "22" - name: Prettier Check diff --git a/AGENTS.md b/AGENTS.md index d0d9276..354c18f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -101,7 +101,9 @@ yarn prettier │ ├── gallery.js # 個別活動相簿頁面 │ └── member_page.js # 個別屆期幹部頁面 ├── data/ # JSON 資料檔案 + │ ├── activities/ # 社團活動資料 │ ├── announcement/ # 公告資料 + │ ├── contest/ # 競賽得獎資料 │ ├── gallery/ # 活動相簿資料 │ └── member/ # 幹部資料 ├── images/ # 圖片資源 @@ -132,6 +134,41 @@ yarn prettier } ``` +### 社團活動 + +在 `src/data/activities/` 新增檔案,以學年度命名(如:111.json): + +```json +{ + "academicYear": 111, + "contents": [ + { + "title": "活動名稱", + "date": "2023-05-16、2023-05-23" + }, + { + "title": "社團旅遊(臺南)", + "date": "2025-08-13 ~ 2025-08-15" + } + ] +} +``` + +### 競賽得獎 + +在 `src/data/contest/` 新增檔案,以年份命名(如:2026.json): + +```json +{ + "year": 2026, + "title": "2026 社團成員競賽得獎名單", + "contents": [ + ["比賽名稱", "獎項名稱", "參賽者(多人時以、分隔)", "《作品名稱》"], + ["WWDC 全球學生挑戰賽", "獲獎", "魯敬元", "《MusicLearning》"] + ] +} +``` + ### 活動相簿 在 `src/data/gallery/` 新增檔案,命名格式:`YYYY-MM-DD 活動名稱.json` diff --git a/README.md b/README.md index 3566d33..3b4d560 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,28 @@ yarn prettier } ``` +## 社團活動 + +在 `/src/data/activities` 中新增檔案,檔案名稱以學年度數字命名。 + +範例: + +```json +{ + "academicYear": 111, // 學年度 + "contents": [ + { + "title": "活動名稱", + "date": "2023-05-16、2023-05-23" // 活動日期 月、日務必補零到兩位數 依照活動日期範圍使用、或 ~ 分隔 + }, + { + "title": "社團旅遊(臺南)", + "date": "2025-08-13 ~ 2025-08-15" + } + ] +} +``` + ## 活動相簿 在 `/src/data/gallery` 下的 Json 檔案會被產生到相簿中。 @@ -86,6 +108,23 @@ yarn prettier 目前大部分的照片都放在 GitHub 的 FCU-iOSClub/Website2022ImageBed 上。 +## 競賽得獎 + +在 `/src/data/contest` 中新增檔案,檔案名稱以年份命名。 + +範例: + +```json +{ + "year": 2026, // 年份 + "title": "2026 社團成員競賽得獎名單", // 該年度的標題 + "contents": [ + ["比賽名稱", "獎項名稱", "參賽者(多人時以、分隔)", "《作品名稱》"], + ["WWDC 全球學生挑戰賽", "獲獎", "魯敬元", "《MusicLearning》"] + ] +} +``` + ## 歷屆幹部 在 `src/data/member` 中新增檔案 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..14abae7 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,34 @@ +import js from "@eslint/js"; +import globals from "globals"; +import pluginReact from "eslint-plugin-react"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + { + ignores: ["node_modules/**", "public/**", ".cache/**", "eslint.config.*"], + }, + js.configs.recommended, + { + files: ["**/*.{js,mjs,cjs,jsx}"], + plugins: { + react: pluginReact, + }, + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + globals: { + ...globals.browser, + ...globals.node, + }, + }, + rules: { + ...pluginReact.configs.flat.recommended.rules, + "react/prop-types": "off", + }, + }, +]); diff --git a/package.json b/package.json index 41904b8..1e26382 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,10 @@ "build": "gatsby build", "prettier": "prettier --write ." }, + "engines": { + "node": ">=22", + "yarn": ">=1.22.0" + }, "dependencies": { "@iconify/icons-akar-icons": "^1.2.19", "@iconify/icons-fluent-emoji-high-contrast": "^1.2.7", @@ -22,6 +26,8 @@ "@splidejs/splide": "^4.1.4", "@splidejs/splide-extension-auto-scroll": "^0.5.3", "@svgr/webpack": "^8.1.0", + "cssnano": "^7.0.0", + "cssnano-preset-default": "^7.0.0", "gatsby": "^5.16.1", "gatsby-plugin-react-helmet": "^6.16.0", "gatsby-plugin-svgr": "^3.0.0-beta.0", @@ -34,18 +40,20 @@ "react-helmet": "^6.1.0", "react-responsive": "^10.0.1", "react-vertical-timeline-component": "^4.0.0", - "sweetalert2": "^11.26.20", - "sweetalert2-react-content": "^5.1.1" + "sweetalert2": "^11.26.24", + "sweetalert2-react-content": "^5.1.2" }, "devDependencies": { + "@eslint/js": "^10.0.1", "@iconify/react": "^6.0.2", - "@tailwindcss/postcss": "^4.2.1", - "eslint": "^10.0.2", + "@tailwindcss/postcss": "^4.2.2", + "eslint": "^10.1.0", "eslint-plugin-react": "^7.37.5", "gatsby-plugin-postcss": "^6.16.0", - "postcss": "^8.5.6", - "prettier": "3.5.0", - "tailwindcss": "^4.2.1" + "globals": "^17.4.0", + "postcss": "^8.5.8", + "prettier": "3.8.1", + "tailwindcss": "^4.2.2" }, "resolutions": { "cssnano": "^7.0.0", diff --git a/src/components/image-with-placeholder.js b/src/components/image-with-placeholder.js index 0732e7e..53a796c 100644 --- a/src/components/image-with-placeholder.js +++ b/src/components/image-with-placeholder.js @@ -98,7 +98,7 @@ const ImageWithPlaceholder = ({ style={{ objectFit }} loading="lazy" decoding="async" - fetchpriority="low" + fetchPriority="low" onLoad={(e) => { setLoaded(true); onLoad?.(e); diff --git a/src/components/navbar.js b/src/components/navbar.js index c6ab93f..a525aee 100644 --- a/src/components/navbar.js +++ b/src/components/navbar.js @@ -3,6 +3,7 @@ import { useState, useEffect, useRef } from "react"; import { Icon } from "@iconify/react"; import ImageWithPlaceholder from "../components/image-with-placeholder"; import IosClubLogoSvg from "../../static/iOSClub_logo.svg"; +import { EXTERNAL_LINKS } from "../constants/navigation"; const Navbar = () => { const [isOpen, setIsOpen] = useState(false); @@ -146,9 +147,7 @@ const JoinUsButton = ({ fullWidth = false }) => ( hover:shadow-[inset_0_1px_0_rgba(255,255,255,0.38),0_6px_20px_rgba(68,84,132,0.60)] hover:from-[#6a80b4] hover:to-[#5264a0]`} onClick={() => { - // 修改JoinUs的入社連結,需同時修改index.js - // window.open("https://forms.gle/QWK8jUoNz6sNeYtn7", "_blank"); - window.open("https://iosappcompetition-2026.onrender.com", "_blank"); + window.open(EXTERNAL_LINKS.joinUs, "_blank"); }} > {/* {{ Join Us }} */} diff --git a/src/constants/navigation.js b/src/constants/navigation.js new file mode 100644 index 0000000..ca34607 --- /dev/null +++ b/src/constants/navigation.js @@ -0,0 +1,3 @@ +export const EXTERNAL_LINKS = { + joinUs: "https://iosappcompetition-2026.onrender.com", +}; diff --git a/src/data/activities/111.json b/src/data/activities/111.json new file mode 100644 index 0000000..5066f39 --- /dev/null +++ b/src/data/activities/111.json @@ -0,0 +1,77 @@ +{ + "academicYear": 111, + "contents": [ + { + "title": "移動應用創新賽 Workshop", + "date": "2023-05-16、2023-05-23" + }, + { + "title": "幹部交接典禮", + "date": "2023-05-09" + }, + { + "title": "第7屆社長選舉大會", + "date": "2023-04-25" + }, + { + "title": "永安國小 mbot 機器人一日進階體驗營", + "date": "2023-04-22" + }, + { + "title": "葳格國小參訪", + "date": "2023-04-20" + }, + { + "title": "111-2社員大會", + "date": "2023-03-01" + }, + { + "title": "寒假幹部訓練", + "date": "2023-02-11 ~ 2023-02-12" + }, + { + "title": "永安國小 mbot 機器人一日體驗營", + "date": "2022-12-24" + }, + { + "title": "iOS Club 聖誕期末聚", + "date": "2022-12-17" + }, + { + "title": "商業 App x 系統開發•經驗分享講座", + "date": "2022-12-15" + }, + { + "title": "111-1 社員大會", + "date": "2022-11-15" + }, + { + "title": "iOS Club X 黑客社 聯合夜烤", + "date": "2022-10-19" + }, + { + "title": "葳格 Swift Mini-Camp (西屯)", + "date": "2022-10-15" + }, + { + "title": "iOS Club 社團迎新", + "date": "2022-10-12" + }, + { + "title": "iOS Club 迎新茶會暨 Apple WWDC 獎學金參賽說明會", + "date": "2022-09-20" + }, + { + "title": "暑期幹部訓練", + "date": "2022-09-01" + }, + { + "title": "社團旅遊(墾丁)", + "date": "2022-08-20" + }, + { + "title": "葳格 Swift Mini-Camp (北屯)", + "date": "2022-08-06" + } + ] +} diff --git a/src/data/activities/112.json b/src/data/activities/112.json new file mode 100644 index 0000000..f9621d9 --- /dev/null +++ b/src/data/activities/112.json @@ -0,0 +1,61 @@ +{ + "academicYear": 112, + "contents": [ + { + "title": "行動應用創新賽 Workshop", + "date": "2024-05-08、2024-05-15" + }, + { + "title": "幹部交接典禮", + "date": "2024-05-03" + }, + { + "title": "企業參訪", + "date": "2024-05-03" + }, + { + "title": "社員大會暨社長選舉", + "date": "2024-04-24" + }, + { + "title": "寒假幹部訓練", + "date": "2024-02-18" + }, + { + "title": "逢甲大學 iOS Club x 葳格中學 用程式玩轉校園-機器人體驗營", + "date": "2024-01-14" + }, + { + "title": "社團期末聚", + "date": "2023-12-26" + }, + { + "title": "112-1 社員大會", + "date": "2023-11-14" + }, + { + "title": "iOS Club x 夢種子聯合夜烤", + "date": "2023-10-12" + }, + { + "title": "試上課", + "date": "2023-09-26" + }, + { + "title": "iOS Club 第7屆新生茶會", + "date": "2023-09-21" + }, + { + "title": "社團博覽會", + "date": "2023-09-13" + }, + { + "title": "暑期幹部訓練", + "date": "2023-09-08 ~ 2023-09-10" + }, + { + "title": "社團旅遊(澎湖)", + "date": "2023-08-11 ~ 2023-08-13" + } + ] +} diff --git a/src/data/activities/113.json b/src/data/activities/113.json new file mode 100644 index 0000000..22042bd --- /dev/null +++ b/src/data/activities/113.json @@ -0,0 +1,69 @@ +{ + "academicYear": 113, + "contents": [ + { + "title": "Workshop", + "date": "2025-05-06、13" + }, + { + "title": "幹部交接典禮", + "date": "2025-04-29" + }, + { + "title": "社員大會暨社長選舉", + "date": "2025-04-23" + }, + { + "title": "FCU 2025 行動應用創新賽", + "date": "2025-04-15" + }, + { + "title": "企業參訪(國泰金控)", + "date": "2025-03-28" + }, + { + "title": "葳格營隊", + "date": "2025-01-11" + }, + { + "title": "社團期末聚", + "date": "2024-12-23" + }, + { + "title": "學長回娘家經驗分享講座", + "date": "2024-12-04" + }, + { + "title": "社團野餐", + "date": "2024-11-11" + }, + { + "title": "113-1 社員大會", + "date": "2024-10-30" + }, + { + "title": "iOS Club 社團迎新", + "date": "2024-10-17" + }, + { + "title": "試上課", + "date": "2024-09-23" + }, + { + "title": "iOS Club 第8屆新生茶會", + "date": "2024-09-19" + }, + { + "title": "暑期幹部訓練", + "date": "2024-09-07 ~ 2024-09-08" + }, + { + "title": "社團博覽會", + "date": "2024-09-02" + }, + { + "title": "社團旅遊(宜蘭)", + "date": "2024-08-30 ~ 2024-09-01" + } + ] +} diff --git a/src/data/activities/114.json b/src/data/activities/114.json new file mode 100644 index 0000000..3dcf990 --- /dev/null +++ b/src/data/activities/114.json @@ -0,0 +1,77 @@ +{ + "academicYear": 114, + "contents": [ + { + "title": "Workshop", + "date": "2026-05-18、20、25、27" + }, + { + "title": "幹部交接典禮", + "date": "2026-05-11" + }, + { + "title": "第9屆社員大會暨第10屆社長選舉", + "date": "2026-05-04" + }, + { + "title": "企業參訪(微程式資訊)", + "date": "2026-04-30" + }, + { + "title": "iOS App 登場時刻", + "date": "2026-04-29" + }, + { + "title": "小學營隊", + "date": "2026-04-25" + }, + { + "title": "聯合聖誕期末聚", + "date": "2025-12-25" + }, + { + "title": "Christmas Pre Party 早安派對", + "date": "2025-12-25" + }, + { + "title": "iOS App 登場時刻", + "date": "2025-12-16" + }, + { + "title": "重新看世界:從找到問題,到為所有人設計 社團講座", + "date": "2025-12-09" + }, + { + "title": "World Taichung Developer Workshop", + "date": "2025-11-23" + }, + { + "title": "114-1 社員大會", + "date": "2025-10-27" + }, + { + "title": "聯合迎新野餐", + "date": "2025-10-06" + }, + { + "title": "新生村 Welcome Talk | Apple × Google 校園社群日", + "date": "2025-09-22" + }, + { + "title": "第9屆新生茶會", + "date": "2025-09-16" + }, + { + "title": "暑期幹部訓練", + "date": "2025-09-04 ~ 2025-09-05" + }, + { + "title": "社團博覽會", + "date": "2025-09-01" + }, + { + "title": "社團旅遊(臺南)", + "date": "2025-08-13 ~ 2025-08-15" + } + ] +} diff --git a/src/data/contest/2017.json b/src/data/contest/2017.json new file mode 100644 index 0000000..f6ff5be --- /dev/null +++ b/src/data/contest/2017.json @@ -0,0 +1,18 @@ +{ + "year": 2017, + "title": "2017 社團成員競賽得獎名單", + "contents": [ + [ + "App 移動應用創新賽", + "大中華區特獎", + "阮揚州、陳薇涵、荊輔翔", + "《天氣即時預報》" + ], + [ + "App 移動應用創新賽", + "台灣區三等獎", + "阮揚州、陳薇涵、荊輔翔", + "《天氣即時預報》" + ] + ] +} diff --git a/src/data/contest/2018.json b/src/data/contest/2018.json new file mode 100644 index 0000000..b7cbb94 --- /dev/null +++ b/src/data/contest/2018.json @@ -0,0 +1,18 @@ +{ + "year": 2018, + "title": "2018 社團成員競賽得獎名單", + "contents": [ + [ + "App 移動應用創新賽", + "大中華區三等獎", + "蔡昌銘、賴亨學、劉祐炘", + "《守護燈塔》" + ], + [ + "App 移動應用創新賽", + "台灣區三等獎", + "蔡昌銘、賴亨學、劉祐炘", + "《守護燈塔》" + ] + ] +} diff --git a/src/data/contest/2019.json b/src/data/contest/2019.json new file mode 100644 index 0000000..9f461de --- /dev/null +++ b/src/data/contest/2019.json @@ -0,0 +1,18 @@ +{ + "year": 2019, + "title": "2019 社團成員競賽得獎名單", + "contents": [ + [ + "App 移動應用創新賽", + "大中華區一等獎", + "黃郁洺、霍湛軒、曾昱翔", + "《Help.Heal.Healthy》" + ], + [ + "App 移動應用創新賽", + "台灣區二等獎", + "黃郁洺、霍湛軒、曾昱翔", + "《Help.Heal.Healthy》" + ] + ] +} diff --git a/src/data/contest/2020.json b/src/data/contest/2020.json new file mode 100644 index 0000000..05ce976 --- /dev/null +++ b/src/data/contest/2020.json @@ -0,0 +1,20 @@ +{ + "year": 2020, + "title": "2020 社團成員競賽得獎名單", + "contents": [ + ["WWDC 全球學生挑戰賽", "獲獎", "薛竣祐", "《Camel Playground》"], + ["WWDC 全球學生挑戰賽", "獲獎", "劉祐炘", "《Gi的故事》"], + [ + "App 移動應用創新賽", + "大中華區三等獎", + "薛竣祐、黃傳霖、魯敬元", + "《MC 逆滲透》" + ], + [ + "App 移動應用創新賽", + "台灣區二等獎", + "薛竣祐、黃傳霖、魯敬元", + "《MC 逆滲透》" + ] + ] +} diff --git a/src/data/contest/2021.json b/src/data/contest/2021.json new file mode 100644 index 0000000..a3a67ff --- /dev/null +++ b/src/data/contest/2021.json @@ -0,0 +1,25 @@ +{ + "year": 2021, + "title": "2021 社團成員競賽得獎名單", + "contents": [ + ["WWDC 全球學生挑戰賽", "獲獎", "薛竣祐", "《Hello World》"], + [ + "App 移動應用創新賽", + "大中華區三等獎", + "黃子騰、温子瑩、余睿霖", + "《觸幕可見》" + ], + [ + "App 移動應用創新賽", + "台灣區二等獎", + "黃子騰、温子瑩、余睿霖", + "《觸幕可見》" + ], + [ + "App 移動應用創新賽", + "台灣區佳作", + "林祺鈞、張宸、許友齊", + "《Magic Drums》" + ] + ] +} diff --git a/src/data/contest/2022.json b/src/data/contest/2022.json new file mode 100644 index 0000000..25cb4b9 --- /dev/null +++ b/src/data/contest/2022.json @@ -0,0 +1,14 @@ +{ + "year": 2022, + "title": "2022 社團成員競賽得獎名單", + "contents": [ + ["WWDC 全球學生挑戰賽", "獲獎", "魯敬元", "《MusicLearning》"], + [ + "App 移動應用創新賽", + "台灣區佳作", + "余睿霖、李柏霖、潘柏嘉", + "《無痕地球》" + ], + ["App 移動應用創新賽", "台灣區佳作", "黃子騰、廖虹琦、林祺鈞", "《美賣》"] + ] +} diff --git a/src/data/contest/2023.json b/src/data/contest/2023.json new file mode 100644 index 0000000..ea2945b --- /dev/null +++ b/src/data/contest/2023.json @@ -0,0 +1,37 @@ +{ + "year": 2023, + "title": "2023 社團成員競賽得獎名單", + "contents": [ + [ + "海峽兩岸青少年創客大賽", + "二等獎", + "鄭慕岑、林昱銓、潘柏嘉、邱思語、王文廷", + "《享愛家園》" + ], + [ + "海峽兩岸青少年創客大賽", + "三等獎", + "王竣翔、王世堯、柯艾妤、陳怡晶", + "《HealthPal》" + ], + [ + "App 移動應用創新賽", + "大中華區二等獎", + "潘柏嘉、王世堯、廖清筆", + "《健康寶寶》" + ], + [ + "App 移動應用創新賽", + "台灣區二等獎", + "潘柏嘉、王世堯、廖清筆", + "《健康寶寶》" + ], + ["App 移動應用創新賽", "台灣區三等獎", "林楷祐、張仁維", "《Healtheat》"], + [ + "人文科技跨領域創新實踐競賽", + "最佳人氣獎", + "李柏霖、張宸、陳威仁", + "《不是吃塑的》" + ] + ] +} diff --git a/src/data/contest/2024.json b/src/data/contest/2024.json new file mode 100644 index 0000000..b22dc2b --- /dev/null +++ b/src/data/contest/2024.json @@ -0,0 +1,49 @@ +{ + "year": 2024, + "title": "2024 社團成員競賽得獎名單", + "contents": [ + [ + "海峽兩岸青少年創客大賽", + "三等獎", + "王竣翔、蔡承曄、葉韋坪、黃云葶、許真菱", + "《健身管家》" + ], + [ + "海峽兩岸青少年創客大賽", + "三等獎", + "潘柏嘉、蕭廷育、梁芷瑄、李岳哲", + "《專注時刻》" + ], + [ + "App 行動應用創新賽", + "大中華區二等獎", + "林楷祐、張仁維、邱怡萱", + "《小博識》" + ], + [ + "App 行動應用創新賽", + "台灣區一等獎", + "林楷祐、張仁維、邱怡萱", + "《小博識》" + ], + [ + "App 行動應用創新賽", + "台灣區三等獎", + "李柏霖、鄭慕岑、許友齊", + "《CareSync 照護同步》" + ], + [ + "App 行動應用創新賽", + "台灣區三等獎", + "廖清筆、蔡承曄、黃云葶", + "《PetScan 獸醫隨行》" + ], + ["WWDC 全球學生挑戰賽", "獲獎", "林楷祐", "《Mind Guard》"], + [ + "第二十屆全國電子設計創意競賽", + "冠軍", + "林楷祐、張仁維、蔡承曄、林瑞城、葉韋坪", + "《基於影像辨識與互動回饋輔助輪椅族群運動之應用程式》" + ] + ] +} diff --git a/src/data/contest/2025.json b/src/data/contest/2025.json new file mode 100644 index 0000000..faef997 --- /dev/null +++ b/src/data/contest/2025.json @@ -0,0 +1,121 @@ +{ + "year": 2025, + "title": "2025 社團成員競賽得獎名單", + "contents": [ + [ + "金融科技校園創新創意競賽", + "第一名", + "陳冠羽、葉韋坪、張瀧予、陳韻如、廖軒毅", + "《Fin Maze》" + ], + [ + "FinTech 金融服務-校際創意競賽", + "佳作", + "陳冠羽、葉韋坪、張瀧予、陳韻如、廖軒毅", + "《Fin Maze》" + ], + [ + "海峽兩岸青少年創客大賽", + "開源創新二等獎", + "蔡承曄、李天宇、陳芷琳、黃軍博", + "《三診隨行》" + ], + [ + "海峽兩岸青少年創客大賽", + "福州大學賽區優秀展覽獎", + "蔡承曄、李天宇、陳芷琳、黃軍博", + "《三診隨行》" + ], + [ + "海峽兩岸青少年創客大賽", + "開源創新二等獎", + "凃荃誠、張鈞皓、葉韋坪、謝孟勳", + "《SpendiX》" + ], + [ + "海峽兩岸青少年創客大賽", + "福州大學賽區優秀展覽獎", + "凃荃誠、張鈞皓、葉韋坪、謝孟勳", + "《SpendiX》" + ], + [ + "海峽兩岸青少年創客大賽", + "開源創新三等獎", + "廖清筆、顏玉涵、李佳津、陳昱綺", + "《PetScan 獸醫隨行》" + ], + [ + "海峽兩岸青少年創客大賽", + "福州大學賽區優秀展覽獎", + "廖清筆、顏玉涵、李佳津、陳昱綺", + "《PetScan 獸醫隨行》" + ], + [ + "海峽兩岸青少年創客大賽", + "開源創新三等獎", + "林楷祐、林瑞城、林雨杭、廖上凱、柯艾妤", + "《冒險叢聲》" + ], + [ + "海峽兩岸青少年創客大賽", + "福州大學賽區最受歡迎獎", + "林楷祐、林瑞城、林雨杭、廖上凱、柯艾妤", + "《冒險叢聲》" + ], + [ + "海峽兩岸青少年創客大賽", + "福州大學賽區優秀展覽獎", + "林楷祐、林瑞城、林雨杭、廖上凱、柯艾妤", + "《冒險叢聲》" + ], + [ + "海峽兩岸青少年創客大賽", + "智慧創新應用三等獎", + "鄭慕岑、王竣翔、林昱銓", + "《CareSync 照護同步》" + ], + [ + "海峽兩岸青少年創客大賽", + "福州大學賽區優秀展覽獎", + "鄭慕岑、王竣翔、林昱銓", + "《CareSync 照護同步》" + ], + [ + "App 行動應用創新賽", + "大中華區啟迪賽道二等獎", + "李柏霖、王奕婷、徐碩涵", + "《聽損兒童 AI 口語練習平台 - 生聲》" + ], + [ + "App 行動應用創新賽", + "台灣區二等獎", + "李柏霖、王奕婷、徐碩涵", + "《聽損兒童 AI 口語練習平台 - 生聲》" + ], + [ + "App 行動應用創新賽", + "台灣區三等獎", + "李天宇、黃云葶、林雨杭", + "《VolleyTrace 排球記》" + ], + [ + "人文與科技跨域創新實踐競賽", + "二等獎", + "林希彥、林楷祐、廖上凱", + "《Hearo》" + ], + [ + "逢甲大學科技創新應用競賽", + "永續發展類 傑出銀獎", + "葉韋坪、林永富、范秩嘉", + "《心智圖共享系統與論文智慧解析之應用程式》" + ], + ["WWDC 全球學生挑戰賽", "獲獎", "余睿霖", "《Forest Guardian》"], + [ + "第二十一屆全國電子設計創意競賽", + "IEEE Tainan Section 特別獎", + "蔡承曄、陳芷琳、黃軍博、李天宇", + "《基於動態追蹤與互動回饋輔助輕偏癱族群之遊戲化手部訓練應用程式》" + ] + ] +} diff --git a/src/data/contest/2026.json b/src/data/contest/2026.json new file mode 100644 index 0000000..7f31283 --- /dev/null +++ b/src/data/contest/2026.json @@ -0,0 +1,38 @@ +{ + "year": 2026, + "title": "2026 社團成員競賽得獎名單", + "contents": [ + ["WWDC 全球學生挑戰賽", "獲獎", "李柏霖", "《ChipCraft》"], + ["WWDC 全球學生挑戰賽", "獲獎", "周竑宇", "《Way_Finder_AI》"], + [ + "第二十二屆全國電子設計創意競賽", + "智慧大數據及行動App類 亞軍", + "蔡承曄、李天宇、陳俊宇", + "《混合實境技術應用於中風患者視覺空間忽略注意力訓練系統之研究》" + ], + [ + "第二十二屆全國電子設計創意競賽", + "資通類 季軍", + "林楷祐、陳仁凱、彭子謙", + "《基於語音辨識與人機交互輔助以改善演講者報告之簡報系統》" + ], + [ + "第二十二屆全國電子設計創意競賽", + "智慧大數據及行動App類 佳作", + "廖上凱、林楷祐、柯艾妤、李天宇、盧品伃、廖為、洪湐程、陳宥蓁", + "《基於寫字及視覺動作整合訓練提升發展協調障礙學童書寫學習成效之應用程式》" + ], + [ + "第二十二屆全國電子設計創意競賽", + "資通類 佳作", + "陳冠羽、蔡承曄、葉韋坪、廖晨勛、黃彥閔、廖為", + "《整合多因子模型之社區智慧包裹收受管理系統》" + ], + [ + "第二十二屆全國電子設計創意競賽", + "資通類 佳作", + "鄭宇宸、林楷祐、李維璇、洪庠宇、劉家亨、陳祺潤", + "《整合式環境感知模型與專用輔助應用程式之視障安全系統》" + ] + ] +} diff --git a/src/pages/club_activities.js b/src/pages/club_activities.js index cf1105e..d2e990e 100644 --- a/src/pages/club_activities.js +++ b/src/pages/club_activities.js @@ -1,5 +1,6 @@ import * as React from "react"; import { useState } from "react"; +import { graphql } from "gatsby"; import Footer from "../components/footer"; import AppHeader from "../components/header"; import Navbar from "../components/navbar"; @@ -14,7 +15,11 @@ import SliderButton from "../components/buttons/slider_button"; import ReverseColorsButton from "../components/buttons/reverse_colors_button"; import useGoogleAdsConversion from "../hooks/useGoogleAdsConversion"; -const ClubActivities = () => { +const ClubActivities = (props) => { + const iOSClubActivities = props.data.allActivitiesJson.nodes.flatMap( + (node) => node.contents, + ); + // Google Ads 轉換追蹤 useGoogleAdsConversion(); @@ -46,33 +51,33 @@ const ClubActivities = () => {
社團活動
平時社團活動也不僅僅有社課,我們還會舉辦 - + 講座 - + 、 - + 野餐 - + 、 - + Workshop - + 、 - + 社遊 - + 、 - + 期末聚 - + …等超多活動給社員參加!當然,我們不只和 - + 葳格高中 - + 建立了長期的任教合作,身為志工性社團,我們還會和相關機構及國小一同舉辦各式各樣的 - + 志工營隊 - + ,落實將在社內所學回饋社會。
@@ -84,7 +89,7 @@ const ClubActivities = () => { hoverText="立即報名" className="font-bold" onClick={() => { - window.open("https://lu.ma/user/fcu_iosclub", "_blank"); + window.open("https://luma.com/user/fcu_iosclub", "_blank"); }} /> @@ -161,267 +166,18 @@ const ClubActivities = () => { ); }; -const iOSClubActivities = [ - { - title: "Workshop", - date: "2026-05-18、20、25、27", - }, - { - title: "幹部交接典禮", - date: "2026-05-11", - }, - { - title: "第9屆社員大會暨第10屆社長選舉", - date: "2026-05-04", - }, - { - title: "企業參訪(微程式資訊)", - date: "2026-04-30", - }, - { - title: "iOS App 登場時刻", - date: "2026-04-29", - }, - { - title: "小學營隊", - date: "2026-04-25", - }, - { - title: "聯合聖誕期末聚", - date: "2026-12-25", - }, - { - title: "Christmas Pre Party 早安派對", - date: "2025-12-25", - }, - { - title: "iOS App 登場時刻", - date: "2025-12-16", - }, - { - title: "重新看世界:從找到問題,到為所有人設計 社團講座", - date: "2025-12-09", - }, - { - title: "World Taichung Developer Workshop", - date: "2025-11-23", - }, - { - title: "114-1 社員大會", - date: "2025-10-27", - }, - { - title: "聯合迎新野餐", - date: "2025-10-06", - }, - { - title: "新生村 Welcome Talk | Apple × Google 校園社群日", - date: "2025-09-22", - }, - { - title: "第9屆新生茶會", - date: "2025-09-16", - }, - { - title: "暑期幹部訓練", - date: "2025-09-04 ~ 2025-09-05", - }, - { - title: "社團博覽會", - date: "2025-09-01", - }, - { - title: "社團旅遊(臺南)", - date: "2025-08-13 ~ 2025-08-15", - }, - { - title: "Workshop", - date: "2025-05-06、13", - }, - { - title: "社員大會暨社長選舉", - date: "2025-04-23", - }, - { - title: "FCU 2025 行動應用創新賽", - date: "2025-04-15", - }, - { - title: "企業參訪(國泰金控)", - date: "2025-03-28", - }, - { - title: "葳格營隊", - date: "2025-01-11", - }, - { - title: "社團期末聚", - date: "2024-12-23", - }, - { - title: "學長回娘家經驗分享講座", - date: "2024-12-04", - }, - { - title: "社團野餐", - date: "2024-11-11", - }, - { - title: "113-1 社員大會", - date: "2024-10-30", - }, - { - title: "iOS Club 社團迎新", - date: "2024-10-17", - }, - { - title: "試上課", - date: "2024-09-23", - }, - { - title: "iOS Club 第8屆新生茶會", - date: "2024-09-19", - }, - { - title: "暑期幹部訓練", - date: "2024-09-07 ~ 2023-09-08", - }, - { - title: "社團博覽會", - date: "2024-09-02", - }, - { - title: "社團旅遊(宜蘭)", - date: "2024-08-30 ~ 2024-09-01", - }, - { - title: "行動應用創新賽 Workshop", - date: "2024-05-08 、 2024-05-15", - }, - { - title: "幹部交接典禮", - date: "2024-05-03", - }, - { - title: "企業參訪", - date: "2024-05-03", - }, - { - title: "社員大會暨社長選舉", - date: "2024-04-24", - }, - { - title: "寒假幹部訓練", - date: "2024-02-18", - }, - { - title: "逢甲大學 iOS Club x 葳格中學 用程式玩轉校園-機器人體驗營", - date: "2024-01-14", - }, - { - title: "社團期末聚", - date: "2023-12-26", - }, - { - title: "112-1 社員大會", - date: "2023-11-14", - }, - { - title: "iOS Club x 夢種子聯合夜烤", - date: "2023-10-12", - }, - { - title: "試上課", - date: "2023-09-26", - }, - { - title: "iOS Club 第7屆新生茶會", - date: "2023-09-21", - }, - { - title: "社團博覽會", - date: "2023-09-13", - }, - { - title: "暑期幹部訓練", - date: "2023-09-08 ~ 2023-09-10", - }, - { - title: "社團旅遊(澎湖)", - date: "2023-08-11 ~ 2023-08-13", - }, - { - title: "移動應用創新賽 Workshop", - date: "2023-05-16 、 2023-05-23", - }, - { - title: "幹部交接典禮", - date: "2023-05-09", - }, - { - title: "第7屆社長選舉大會", - date: "2023-04-25", - }, - { - title: "永安國小 mbot 機器人一日進階體驗營", - date: "2023-04-22", - }, - { - title: "葳格國小參訪", - date: "2023-04-20", - }, - { - title: "111-2社員大會", - date: "2023-03-01", - }, - { - title: "寒假幹部訓練", - date: "2023-02-11 ~ 2023-2-12", - }, - { - title: "iOS Club 聖誕期末聚", - date: "2022-12-17", - }, - { - title: "永安國小 mbot 機器人一日體驗營", - date: "2022-12-24", - }, - { - title: "商業 App x 系統開發•經驗分享講座", - date: "2022-12-15", - }, - { - title: "111-1 社員大會", - date: "2022-11-15", - }, - { - title: "iOS Club X 黑客社 聯合夜烤", - date: "2022-10-19", - }, - { - title: "葳格 Swift Mini-Camp (西屯)", - date: "2022-10-15", - }, - { - title: "iOS Club 社團迎新", - date: "2022-10-12", - }, - { - title: "iOS Club 迎新茶會暨 Apple WWDC 獎學金參賽說明會", - date: "2022-09-20", - }, - { - title: "暑期幹部訓練", - date: "2022-09-01", - }, - { - title: "社團旅遊(墾丁)", - date: "2022-08-20", - }, - { - title: "葳格 Swift Mini-Camp (北屯)", - date: "2022-08-06", - }, -]; +export const qldata = graphql` + query ClubActivitiesQuery { + allActivitiesJson(sort: { academicYear: DESC }) { + nodes { + academicYear + contents { + title + date + } + } + } + } +`; export default ClubActivities; diff --git a/src/pages/companion.js b/src/pages/companion.js index 07b2acf..054607f 100644 --- a/src/pages/companion.js +++ b/src/pages/companion.js @@ -2,6 +2,7 @@ import * as React from "react"; import Footer from "../components/footer"; import Navbar from "../components/navbar"; import AppHeader from "../components/header"; +import SliderButton from "../components/buttons/slider_button"; import ImageWithPlaceholder from "../components/image-with-placeholder"; @@ -39,21 +40,13 @@ const CompanionPage = () => {
- {item[0]} -
-- {item[1]} -
-- {item[2]} -
-- {item[3]} -
-+ {row[0]} +
++ {row[1]} +
++ {row[2]} +
++ {row[3]} +
+iOS Club 社課主要內容為利用{" "} - Xcode 開發 iOS - app,讓大家能透過實作了解並熟悉{" "} - Swift{" "} + Xcode 開發 + iOS app,讓大家能透過實作了解並熟悉{" "} + Swift{" "} 語言的應用、SwiftUI 的佈局,最終達到具備獨立開發的能力,透過鼓勵社員參加各式校外競賽,以此展現社員的學習成果。
@@ -81,48 +81,49 @@ const CoursePage = () => {iOS Club 的課程主要分為 - + 程式線 - + 與 - + 創客線 - + 。程式線教授 - + Swift UI - + 的 app 設計,讓社員能成為獨立的 iOS Developer;創客線則從基礎 - + SwiftUI 到 Figma - + 設計課程,並透過 Vibe Coding 開發完整的 iOS App。除此之外,我們也提供 - Playground、 - + Playground + 、 + mBot - + 和 - + Keynote - + 的教學課程。
所有課程由教學部的 - + 技術長 - + 和 - + 教學長 - + 共同規劃,另外由行銷部的 - + 設計長 - + 協助設計課程,社課期間其餘幹部擔任助教,協助社員解決學習中遇到的問題,讓每位社員都能順利成長。