|
| 1 | +# ARIA Lab Website |
| 2 | + |
| 3 | +Official website of the **ARIA (Align Robust Interactive Autonomy) Lab** |
| 4 | +A static frontend web app built using Vite. |
| 5 | +- Live Site: https://aria-lab.cs.utah.edu/ |
| 6 | + |
| 7 | +## Management Guide |
| 8 | + |
| 9 | +- **Data**: Update the Google Sheet to refresh site data (Google Sheet is configured in `.env`). |
| 10 | +- **Deploy**: On each commit, the site is automatically redeployed; alternatively, re-run all jobs for the latest deployment in the Actions tab. |
| 11 | + |
| 12 | +For more detailed information, please ask to [Seongil Heo](https://github.com/SeongilHeo). |
| 13 | + |
| 14 | +## Tech Stack |
| 15 | + |
| 16 | +- **Frontend**: [React](https://react.dev/), [Vite](https://vitejs.dev/), [TailwindCSS](https://tailwindcss.com/) |
| 17 | +- **CI/CD**: GitHub Actions (Static build & GitHub Pages deployment) |
| 18 | +- **Data Source**: Google Spreadsheet → JSON transformation script |
| 19 | + |
| 20 | +## Project Structure |
| 21 | + |
| 22 | +``` |
| 23 | +├── .github/workflows/ # GitHub Actions CI/CD workflows |
| 24 | +├── README.md # Project documentation |
| 25 | +├── index.css # TailwindCSS global styles |
| 26 | +├── index.html # HTML entry point for Vite |
| 27 | +├── package-lock.json # Auto-generated lockfile for npm dependencies |
| 28 | +├── package.json # Project metadata and dependencies |
| 29 | +├── vite.config.js # Vite build and server configuration |
| 30 | +├── public/ # Static assets served directly |
| 31 | +│ ├── 404.html # Custom 404 page for GitHub Pages |
| 32 | +│ ├── manifest.json # PWA manifest (optional) |
| 33 | +│ ├── robots.txt # Web crawler rules |
| 34 | +│ └── images # Image folders |
| 35 | +│ ├── placeholder.png # Default placeholder image |
| 36 | +│ ├── banner # Banner images |
| 37 | +│ ├── people # Member profile images |
| 38 | +│ ├── publications # Publication figures |
| 39 | +│ └── videos # Video preview thumbnails |
| 40 | +├── scripts # Utility scripts |
| 41 | +│ ├── download-images.js # Script to download images from URLs in JSON data |
| 42 | +│ └── fetch-sheet.js # Script to fetch and convert Google Sheet to JSON |
| 43 | +└── src/ # Source code |
| 44 | + ├── App.jsx # App wrapper component |
| 45 | + ├── main.jsx # App entry point for rendering |
| 46 | + ├── components/ # Reusable UI components |
| 47 | + ├── data/ # Preprocessed JSON data files |
| 48 | + ├── icons/ # Custom SVG icons |
| 49 | + ├── layout/ # Shared layout elements (Header, Footer, etc.) |
| 50 | + ├── pages/ # Route-specific page components |
| 51 | + ├── routes/ # App route definitions |
| 52 | + └── App.jsx # (Duplicate entry; can be removed if redundant) |
| 53 | +``` |
| 54 | + |
| 55 | +## Features |
| 56 | + |
| 57 | +- Responsive layout |
| 58 | +- Google Spreadsheet data integration (`npm run fetch-sheet && download-image`) |
| 59 | +- GitHub Pages auto-deployment |
| 60 | +- Environment variable configuration via `.env` |
| 61 | +- Client-side routing with React Router |
| 62 | +- Custom 404 handling on GitHub Pages (static-hosting limitation) |
| 63 | + |
| 64 | +## GitHub Actions Deployment |
| 65 | + |
| 66 | +The `.github/workflows/deploy.yaml` workflow performs: |
| 67 | + |
| 68 | +- Reads `.env` upon push to `main` |
| 69 | +- Runs `npm run fetch-sheet` to convert spreadsheet to JSON |
| 70 | +- Runs `npm run download-images` to download images from Google Drive |
| 71 | +- Builds static site via `npm run build` |
| 72 | +- Deploys to GitHub Pages |
| 73 | + |
| 74 | +> Based on [Vite’s static deployment guide](https://vite.dev/guide/static-deploy.html) |
| 75 | +
|
| 76 | +## License |
| 77 | + |
| 78 | +This project is licensed under the MIT License. |
0 commit comments