Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
24 changes: 0 additions & 24 deletions .eslintrc.js

This file was deleted.

5 changes: 3 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/prettier_check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
37 changes: 37 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,9 @@ yarn prettier
│ ├── gallery.js # 個別活動相簿頁面
│ └── member_page.js # 個別屆期幹部頁面
├── data/ # JSON 資料檔案
│ ├── activities/ # 社團活動資料
│ ├── announcement/ # 公告資料
│ ├── contest/ # 競賽得獎資料
│ ├── gallery/ # 活動相簿資料
│ └── member/ # 幹部資料
├── images/ # 圖片資源
Expand Down Expand Up @@ -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`
Expand Down
39 changes: 39 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 檔案會被產生到相簿中。
Expand All @@ -86,6 +108,23 @@ yarn prettier

目前大部分的照片都放在 GitHub 的 FCU-iOSClub/Website2022ImageBed 上。

## 競賽得獎

在 `/src/data/contest` 中新增檔案,檔案名稱以年份命名。

範例:

```json
{
"year": 2026, // 年份
"title": "2026 社團成員競賽得獎名單", // 該年度的標題
"contents": [
["比賽名稱", "獎項名稱", "參賽者(多人時以、分隔)", "《作品名稱》"],
["WWDC 全球學生挑戰賽", "獲獎", "魯敬元", "《MusicLearning》"]
]
}
```

## 歷屆幹部

在 `src/data/member` 中新增檔案
Expand Down
34 changes: 34 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -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,
},
Comment thread
Pencil126 marked this conversation as resolved.
languageOptions: {
ecmaVersion: "latest",
sourceType: "module",
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
globals: {
...globals.browser,
...globals.node,
},
},
rules: {
...pluginReact.configs.flat.recommended.rules,
"react/prop-types": "off",
},
},
]);
22 changes: 15 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion src/components/image-with-placeholder.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ const ImageWithPlaceholder = ({
style={{ objectFit }}
loading="lazy"
decoding="async"
fetchpriority="low"
fetchPriority="low"
onLoad={(e) => {
setLoaded(true);
onLoad?.(e);
Expand Down
5 changes: 2 additions & 3 deletions src/components/navbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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 }} */}
Expand Down
3 changes: 3 additions & 0 deletions src/constants/navigation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const EXTERNAL_LINKS = {
joinUs: "https://iosappcompetition-2026.onrender.com",
};
77 changes: 77 additions & 0 deletions src/data/activities/111.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
Loading
Loading