Skip to content

Commit 68a6eb1

Browse files
committed
feat: initialize modern PSecLab academic website with GitHub Actions deployment
1 parent 5823027 commit 68a6eb1

26 files changed

Lines changed: 5088 additions & 1 deletion

.github/workflows/deploy.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Deploy Lab Website to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
workflow_dispatch:
7+
8+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
9+
permissions:
10+
contents: read
11+
pages: write
12+
id-token: write
13+
14+
# Allow one concurrent deployment
15+
concurrency:
16+
group: "pages"
17+
cancel-in-progress: false
18+
19+
jobs:
20+
build:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- name: Checkout repository
24+
uses: actions/checkout@v4
25+
26+
- name: Set up Node.js
27+
uses: actions/setup-node@v4
28+
with:
29+
node-version: 20
30+
cache: 'npm'
31+
32+
- name: Install dependencies
33+
run: npm ci
34+
35+
- name: Build static site
36+
run: npm run build
37+
38+
- name: Upload Pages artifact
39+
uses: actions/upload-pages-artifact@v3
40+
with:
41+
path: ./dist
42+
43+
deploy:
44+
environment:
45+
name: github-pages
46+
url: ${{ steps.deployment.outputs.page_url }}
47+
runs-on: ubuntu-latest
48+
needs: build
49+
steps:
50+
- name: Deploy to GitHub Pages
51+
id: deployment
52+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
node_modules
11+
dist
12+
dist-ssr
13+
*.local
14+
15+
# Editor directories and files
16+
.vscode/*
17+
!.vscode/extensions.json
18+
.idea
19+
.DS_Store
20+
*.suo
21+
*.ntvs*
22+
*.njsproj
23+
*.sln
24+
*.sw?

README.md

Lines changed: 139 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,139 @@
1-
# PSecLab.github.io
1+
# PSecLab Website | Penn Systems & Security Lab
2+
3+
Official repository and website source for **PSecLab** (Systems & Security Research Group).
4+
Hosted live at: **[https://pseclab.github.io](https://pseclab.github.io)**
5+
6+
---
7+
8+
## 🚀 Technology Stack
9+
10+
- **Base Framework**: [Vite](https://vitejs.dev/) + [React](https://react.dev/)
11+
- **Styling**: [Tailwind CSS](https://tailwindcss.com/) with cyber/dark theme & responsive typography
12+
- **Interactivity & 3D**: [Three.js](https://threejs.org/) for the dynamic interactive hero network visualization
13+
- **Icons**: [Lucide React](https://lucide.dev/)
14+
- **Hosting & CI/CD**: [GitHub Pages](https://pages.github.com/) via GitHub Actions (`.github/workflows/deploy.yml`)
15+
16+
---
17+
18+
## 📁 Project Architecture & Data Management
19+
20+
Adding new publications, lab members, research thrusts, or news updates is as simple as editing JSON files in `src/data/`:
21+
22+
```
23+
lab-website/
24+
├── .github/
25+
│ └── workflows/
26+
│ └── deploy.yml # Automated GitHub Pages CI/CD workflow
27+
├── src/
28+
│ ├── components/ # Hero3D, Navbar, Footer, PaperCard, MemberCard, ProjectCard, NewsSection, etc.
29+
│ ├── data/
30+
│ │ ├── members.json # Students, PI, postdocs, alumni, contacts & photos
31+
│ │ ├── papers.json # BibTeX citations, abstracts, PDFs, code links, awards
32+
│ │ ├── projects.json # Research thrusts, grants, open-source software tools
33+
│ │ └── news.json # Announcements, paper acceptances, awards
34+
│ ├── styles/
35+
│ │ └── index.css # Tailwind CSS directives and custom glow styling
36+
│ ├── App.jsx # Main interactive application layout
37+
│ └── main.jsx
38+
├── public/ # Static assets, PDFs, images
39+
├── package.json
40+
└── vite.config.js
41+
```
42+
43+
---
44+
45+
## 🛠️ Local Development
46+
47+
### 1. Prerequisites
48+
Ensure you have **Node.js (>= 18.x)** and **npm** installed:
49+
```bash
50+
node -v
51+
npm -v
52+
```
53+
54+
### 2. Install Dependencies
55+
```bash
56+
npm install
57+
```
58+
59+
### 3. Run Local Dev Server
60+
```bash
61+
npm run dev
62+
```
63+
Open your browser at `http://localhost:5173`.
64+
65+
### 4. Build for Production
66+
```bash
67+
npm run build
68+
```
69+
Outputs static HTML, CSS, and JS bundles into the `dist/` folder.
70+
71+
---
72+
73+
## 📝 How to Update Lab Data
74+
75+
### Adding a New Paper
76+
Add an entry to [`src/data/papers.json`](src/data/papers.json):
77+
```json
78+
{
79+
"id": "paper-slug",
80+
"title": "Your Paper Title",
81+
"authors": "Author 1, Author 2, Lab PI",
82+
"venue": "IEEE S&P 2026",
83+
"year": 2026,
84+
"award": "Best Paper Award",
85+
"highlight": true,
86+
"tags": ["Binary Analysis", "Systems Security"],
87+
"abstract": "Summary abstract here...",
88+
"pdfUrl": "https://arxiv.org/...",
89+
"codeUrl": "https://github.com/PSecLab/...",
90+
"bibtex": "@inproceedings{...}"
91+
}
92+
```
93+
94+
### Adding / Updating Members
95+
Add an entry to [`src/data/members.json`](src/data/members.json):
96+
```json
97+
{
98+
"id": "phd-john",
99+
"name": "Jane Doe",
100+
"role": "Ph.D. Student",
101+
"category": "phd", // "pi" | "phd" | "ms_bs" | "alumni"
102+
"affiliation": "Penn State University",
103+
"avatar": "https://example.com/photo.jpg",
104+
"bio": "Researching hardware enclaves and system verification.",
105+
"researchInterest": ["TEE", "Hardware Security"],
106+
"email": "jane@pseclab.org",
107+
"github": "https://github.com/...",
108+
"googleScholar": "https://scholar.google.com/..."
109+
}
110+
```
111+
112+
### Adding a News Milestone
113+
Add an entry to [`src/data/news.json`](src/data/news.json):
114+
```json
115+
{
116+
"id": "news-2025-spring",
117+
"date": "May 2025",
118+
"title": "Paper Accepted to USENIX Security '25!",
119+
"category": "Paper Award",
120+
"description": "Our paper on protocol verification was accepted.",
121+
"link": "#publications"
122+
}
123+
```
124+
125+
---
126+
127+
## ⚙️ Automated GitHub Pages Deployment
128+
129+
This repository uses **GitHub Actions** to automatically build and deploy the site upon any push to `main`.
130+
131+
### Enabling GitHub Pages in Repository Settings:
132+
1. Go to repository **Settings****Pages** (`https://github.com/PSecLab/PSecLab.github.io/settings/pages`).
133+
2. Under **Build and deployment****Source**, select **GitHub Actions**.
134+
3. Push changes to `main`. The `.github/workflows/deploy.yml` workflow will trigger and publish the website to `https://pseclab.github.io`.
135+
136+
---
137+
138+
## 📄 License
139+
PSecLab Research Group. All rights reserved.

index.html

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<!doctype html>
2+
<html lang="en" class="scroll-smooth dark">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2338a5f6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/><path d='m9 12 2 2 4-4'/></svg>" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<meta name="description" content="PSecLab (Systems & Security Lab) - Advancing Trustworthy Systems, Binary Analysis, Confidential Computing, Embedded Security, and Cyber-Physical Systems." />
8+
<meta name="keywords" content="PSecLab, Security Research, Systems Security, Binary Analysis, Fuzzing, Embedded Systems, Confidential Computing, Penn State" />
9+
<title>PSecLab | Systems & Security Research Group</title>
10+
<link rel="preconnect" href="https://fonts.googleapis.com">
11+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
13+
</head>
14+
<body class="bg-slate-950 text-slate-100 font-sans selection:bg-brand-500 selection:text-white transition-colors duration-200">
15+
<div id="root"></div>
16+
<script type="module" src="/src/main.jsx"></script>
17+
</body>
18+
</html>

0 commit comments

Comments
 (0)