diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 4d86300..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-# editorconfig.org
-
-root = true
-
-[*]
-charset = utf-8
-end_of_line = lf
-indent_size = 2
-indent_style = space
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.toml]
-max_line_length = 100
-
-[*.md]
-trim_trailing_whitespace = false
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index a805692..0000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-github: gcushen
-custom: https://wowchemy.com/sponsor/
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index 6f2608c..1588f4d 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -3,37 +3,35 @@ name: Deploy GitHub Pages
on:
push:
branches:
- - main # Set a branch name to trigger deployment
+ - main
pull_request:
jobs:
deploy:
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-latest
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
- submodules: true # Fetch any Git submodules (true OR recursive)
- fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
+ fetch-depth: 0
- - name: Setup Hugo
- uses: peaceiris/actions-hugo@v2
+ - uses: actions/setup-node@v4
with:
- hugo-version: '0.97.3'
- extended: true
+ node-version: 20
+ cache: npm
+
+ - name: Install dependencies
+ run: npm ci
- name: Build
- run: hugo --minify
+ run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
- # If you're changing the branch from main,
- # also change the `main` in `refs/heads/main`
- # below accordingly.
if: ${{ github.ref == 'refs/heads/main' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./public
+ publish_dir: ./build/client
diff --git a/.gitignore b/.gitignore
index 1ed034c..9b7c041 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,6 @@
-# IDEs
-.idea/
+.DS_Store
+/node_modules/
-# Hugo
-/resources/
-public/
-assets/jsconfig.json
-
-# Mac
-**/.DS_Store
+# React Router
+/.react-router/
+/build/
diff --git a/.hugo_build.lock b/.hugo_build.lock
deleted file mode 100644
index e69de29..0000000
diff --git a/LICENSE.md b/LICENSE.md
deleted file mode 100644
index 2b346a4..0000000
--- a/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020-present George Cushen
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
index 87fe481..0987d5e 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,45 @@
-# 苏黎世学联静态网站
-[https://acssz.github.io](https://acssz.github.io)
+# ACSSZ Website
-Based on the [Research Group Theme](https://github.com/wowchemy/starter-hugo-research-group)
+Static website for the **Association of Chinese Students and Scholars in Zurich (ACSSZ / 苏黎世中国学生学者联合会)**.
-The deployment workflow is set that
-- Editors change contents in the `main` branch either locally or directly in the remote repository, then push their commits
-- Any push to the `main` branch will trigger a new deployment in the `gh-pages` branch
-- Website is updated
+## Tech Stack
-## References
+| Layer | Technology |
+|---|---|
+| Framework | [React Router v7](https://reactrouter.com/) (SSR/SSG mode) |
+| UI Library | [MUI v7](https://mui.com/) (Material UI) + Emotion CSS-in-JS |
+| Language | TypeScript |
+| Bundler | Vite |
+| Carousel | [Embla Carousel](https://www.embla-carousel.com/) |
-- [Wowchemy research group theme](https://github.com/wowchemy/starter-hugo-research-group)
-- [Site Customization](https://wowchemy.com/docs/getting-started/customization/)
-- [Wowchemy -- Create site locally](https://wowchemy.com/docs/getting-started/install-hugo-extended/)
-- [Wowchemy -- Deploy with Github Pages](https://wowchemy.com/docs/hugo-tutorials/deployment/#github-pages)
-- [First deployment notice](https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-first-deployment-with-github_token)
-- [Github pages setup](https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site)
+## Getting Started
+
+```bash
+npm install
+npm run dev # development server
+npm run build # production build
+npm run typecheck # type check
+```
+
+## Page Structure
+
+The main page is composed of sections stacked vertically in this order:
+
+| Section | Anchor | Description |
+|---|---|---|
+| AppBar | — | Sticky nav with language & theme toggles |
+| Hero | — | Auto-scrolling carousel |
+| Events | `#events` | Event cards |
+| Our Cooperation Partners | `#sponsors` | Partner logo pills |
+| Departments | `#departments` | Department description cards |
+| Useful Information | `#information` | Freshmen handbook (external iframe) |
+| FAQ | `#faq` | Accordion Q&A |
+| About Us | `#about` | Text, team table, and photo |
+| Contact Us | `#footer` | Email, WeChat, social links |
+| Copyright | — | CC BY-NC-ND 4.0 |
+
+
+
+## License
+
+Content is licensed under [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/).
diff --git a/app/components/AboutUs.tsx b/app/components/AboutUs.tsx
new file mode 100644
index 0000000..5ecdf81
--- /dev/null
+++ b/app/components/AboutUs.tsx
@@ -0,0 +1,72 @@
+import Box from "@mui/material/Box";
+import Container from "@mui/material/Container";
+import Table from "@mui/material/Table";
+import TableBody from "@mui/material/TableBody";
+import TableCell from "@mui/material/TableCell";
+import TableContainer from "@mui/material/TableContainer";
+import TableRow from "@mui/material/TableRow";
+import Typography from "@mui/material/Typography";
+import Paper from "@mui/material/Paper";
+import { useLocale } from "../context/LocaleContext.tsx";
+import { sectionContainerSx, sectionTitleSx, sectionBodySx } from "../styles/section.ts";
+
+export default function AboutUs() {
+ const { locale } = useLocale();
+ const { title, paragraphs, team } = locale.about;
+
+ return (
+
+
+ {title}
+
+
+
+ {paragraphs.map((paragraph, index) => (
+
+ {paragraph}
+
+ ))}
+
+
+
+
+
+