Skip to content

Commit 7b8f507

Browse files
committed
feat: multi-page landing (Vite, Tailwind), contact page, member links
- Replace static assets with Vite 6 + TypeScript + Tailwind v4 - Add products, projects, research, members, partners, technology, contact - GitHub Pages deploy workflow; README build instructions - FOUC mitigation: CSS in head + vite plugin reorder - Org repo URLs for projects; iryx-manuals; member GitHub/X; contact Discord/mail Made-with: Cursor
1 parent c5b8b63 commit 7b8f507

22 files changed

+2984
-2042
lines changed

.claude/settings.local.json

Lines changed: 0 additions & 8 deletions
This file was deleted.

.github/workflows/deploy-pages.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Deploy GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
permissions:
8+
contents: read
9+
pages: write
10+
id-token: write
11+
12+
concurrency:
13+
group: pages
14+
cancel-in-progress: true
15+
16+
jobs:
17+
build:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v4
21+
- uses: actions/setup-node@v4
22+
with:
23+
node-version: "22"
24+
cache: npm
25+
- run: npm ci
26+
- run: npm run build
27+
- uses: actions/upload-pages-artifact@v3
28+
with:
29+
path: dist
30+
31+
deploy:
32+
needs: build
33+
runs-on: ubuntu-latest
34+
environment:
35+
name: github-pages
36+
url: ${{ steps.deployment.outputs.page_url }}
37+
steps:
38+
- uses: actions/deploy-pages@v4
39+
id: deployment

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ node_modules/
2222
npm-debug.log*
2323
yarn-debug.log*
2424
yarn-error.log*
25-
package-lock.json
2625
yarn.lock
2726

2827
# Build outputs (if applicable)

README.md

Lines changed: 19 additions & 251 deletions
Original file line numberDiff line numberDiff line change
@@ -1,273 +1,41 @@
11
# 未完成成果物研究所 Landing Page
22

3-
Dark, broadcast-tech landing page for Incomplete-Outputs-Lab with subtle scanline accents and SVG animations powered by anime.js.
3+
未完成成果物研究所のランディングページです。
44

5-
## Overview
5+
公開 URL: [https://incomplete-outputs-lab.github.io/](https://incomplete-outputs-lab.github.io/)
66

7-
This is the official landing page for **未完成成果物研究所 (Incomplete-Outputs-Lab)**, an independent R&D team focused on broadcast production tools and hardware development.
7+
## 技術スタック
88

9-
### Key Features
9+
- [Vite](https://vitejs.dev/) 6
10+
- [TypeScript](https://www.typescriptlang.org/)
11+
- [Tailwind CSS](https://tailwindcss.com/) 4(`@tailwindcss/vite`
1012

11-
- **Broadcast-tech aesthetic**: Dark theme, green accent, monospace typography, light scanline overlay
12-
- **Dynamic SVG Animations**: Background waveforms, oscilloscope-style monitors, and PCB circuit visualizations
13-
- **Responsive Design**: Mobile-first approach with optimized layouts for all screen sizes
14-
- **Performance Optimized**: GPU-accelerated animations, debounced resize handlers, and efficient SVG rendering
15-
- **Accessible**: Semantic HTML, WCAG AA color contrast, and `prefers-reduced-motion` support
13+
## 開発
1614

17-
## Technology Stack
18-
19-
- **HTML5**: Semantic markup with accessibility features
20-
- **CSS3**: Custom CRT effects, animations, and responsive styling
21-
- **Tailwind CSS v4**: Utility-first CSS framework via Play CDN
22-
- **anime.js**: Powerful animation library for SVG and DOM manipulation
23-
- **IBM Plex Mono**: Professional monospace typography
24-
25-
## File Structure
26-
27-
```
28-
/
29-
├── index.html # Main entry point
30-
├── assets/
31-
│ ├── css/
32-
│ │ └── custom.css # CRT effects, terminal styling
33-
│ └── js/
34-
│ ├── config.js # Project data, constants
35-
│ └── animations.js # anime.js animation logic
36-
├── README.md # This file
37-
└── .gitignore # Git ignore file
38-
```
39-
40-
## Project Showcase
41-
42-
### 1. obs-sync
43-
**Distributed OBS Synchronization System**
44-
- Type: Software
45-
- Status: Production
46-
- Visualization: Waveform monitor
47-
- Stack: Rust, React, Tauri, WebSocket, obs-websocket
48-
49-
### 2. stream-monitor
50-
**Broadcast Statistics Analyzer**
51-
- Type: Software
52-
- Status: Active Development
53-
- Visualization: Waveform monitor
54-
- Stack: Rust, React, Tauri, DuckDB, Webhooks
55-
56-
### 3. bi-kanpe
57-
**Bi-directional cue / teleprompter app**
58-
- Type: Software
59-
- Status: Active
60-
- Visualization: Project card (live badge)
61-
- Stack: Rust, Tauri, TypeScript, WebSocket, StreamDeck
62-
- Repository: [Incomplete-Outputs-Lab/bi-kanpe](https://github.com/Incomplete-Outputs-Lab/bi-kanpe)
63-
64-
### 4. Iryx
65-
**IP control panels for broadcast software**
66-
- Type: Hardware
67-
- Status: R&D
68-
- Visualization: PCB circuit board animation
69-
- Stack: Rust (Embassy), Raspberry Pi 5/Pico, KiCad, NDI SDK
70-
- Lineup: VMTALLY, VMReplay, VMSwitch, VMDeluxe
71-
72-
## Local Development
73-
74-
### Prerequisites
75-
76-
- Modern web browser (Chrome 111+, Safari 16.4+, Firefox 128+)
77-
- Local web server (optional, for testing)
78-
79-
### Setup
80-
81-
1. Clone the repository:
8215
```bash
83-
git clone https://github.com/Incomplete-Outputs-Lab/Incomplete-Outputs-Lab.github.io.git
84-
cd Incomplete-Outputs-Lab.github.io
85-
```
86-
87-
2. Open `index.html` in your browser, or serve with a local server:
88-
```bash
89-
# Python 3
90-
python -m http.server 8000
91-
92-
# Node.js (http-server)
93-
npx http-server -p 8000
94-
95-
# VS Code Live Server extension
96-
# Right-click index.html → "Open with Live Server"
97-
```
98-
99-
3. Visit `http://localhost:8000`
100-
101-
## Customization
102-
103-
### Changing Colors
104-
105-
Edit `assets/css/custom.css`:
106-
107-
```css
108-
:root {
109-
--terminal-green: #00ff00; /* Main accent color */
110-
--terminal-bg: #000000; /* Background */
111-
--terminal-text: #cccccc; /* Text color */
112-
--terminal-dim: #003300; /* Inactive traces */
113-
}
114-
```
115-
116-
### Adding/Editing Projects
117-
118-
Edit `assets/js/config.js` in the `PROJECTS` array:
119-
120-
```javascript
121-
{
122-
name: 'your-project',
123-
fullName: 'Full Project Name',
124-
status: '[ PHASE: STATUS ]',
125-
concept: 'Your tagline here',
126-
description: 'Detailed description...',
127-
techStack: ['Tech1', 'Tech2', 'Tech3'],
128-
type: 'software' // or 'hardware'
129-
}
130-
```
131-
132-
### Adjusting Animation Speed
133-
134-
Edit `assets/js/config.js` in the `ANIM_CONFIG` object:
135-
136-
```javascript
137-
const ANIM_CONFIG = {
138-
waveform_duration: 3000, // Background waveform speed (ms)
139-
pcb_trace_speed: 4000, // PCB signal flow speed (ms)
140-
glitch_probability: 0.02, // Glitch frequency (0-1)
141-
scanline_speed: 8000 // Scanline animation speed (ms)
142-
};
143-
```
144-
145-
### Modifying Organization Info
146-
147-
Edit `assets/js/config.js` in the `ORGANIZATION_IDENTITY` object:
148-
149-
```javascript
150-
const ORGANIZATION_IDENTITY = {
151-
name_ja: '未完成成果物研究所',
152-
name_en: 'Incomplete-Outputs-Lab',
153-
tagline_en: 'Independent R&D Team / Broadcast production tooling',
154-
// ... other fields
155-
};
16+
npm install
17+
npm run dev
15618
```
15719

158-
## Deployment
20+
ブラウザで表示されるローカル URL(通常は `http://localhost:5173`)を開きます。
15921

160-
### GitHub Pages
22+
## 本番ビルド
16123

162-
1. Push your changes to the `main` branch:
16324
```bash
164-
git add .
165-
git commit -m "Update landing page"
166-
git push origin main
25+
npm run build
16726
```
16827

169-
2. Enable GitHub Pages:
170-
- Go to repository Settings → Pages
171-
- Source: Deploy from branch
172-
- Branch: `main` / root directory
173-
- Save
174-
175-
3. Your site will be live at: `https://incomplete-outputs-lab.github.io/`
28+
成果物は `dist/` に出力されます。
17629

177-
### Custom Domain (Optional)
178-
179-
1. Add a `CNAME` file with your domain:
18030
```bash
181-
echo "yourdomain.com" > CNAME
182-
git add CNAME
183-
git commit -m "Add custom domain"
184-
git push origin main
31+
npm run preview
18532
```
18633

187-
2. Configure DNS records at your domain registrar:
188-
- Type: A
189-
- Host: @
190-
- Value: 185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153
191-
192-
## Performance Optimization
193-
194-
- **GPU Acceleration**: All animations use `transform` and `opacity` for hardware acceleration
195-
- **Debounced Resize**: Window resize events are debounced to 250ms
196-
- **Efficient SVG**: Path complexity limited to 50-100 points
197-
- **Animation Limits**: Maximum 5 background paths, 3 project visualizations
198-
- **Font Loading**: Uses `font-display: swap` for web fonts
199-
200-
## Browser Support
201-
202-
| Browser | Minimum Version |
203-
|---------|----------------|
204-
| Chrome | 111+ |
205-
| Safari | 16.4+ |
206-
| Firefox | 128+ |
207-
| Edge | 111+ |
208-
| Mobile Safari | iOS 16.4+ |
209-
| Chrome Mobile | Android 111+ |
210-
211-
## Accessibility
212-
213-
- **Semantic HTML**: Proper use of `<header>`, `<section>`, `<article>`, `<footer>`
214-
- **Heading Hierarchy**: Logical h1 → h2 → h3 structure
215-
- **Color Contrast**: WCAG AA compliant (15.3:1 ratio for green on black)
216-
- **Reduced Motion**: Respects `prefers-reduced-motion` system preference
217-
- **Keyboard Navigation**: All interactive elements are keyboard accessible
218-
219-
## CDN Resources
220-
221-
External dependencies loaded via CDN:
222-
223-
```html
224-
<!-- Tailwind CSS v4 Play CDN -->
225-
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
226-
227-
<!-- anime.js -->
228-
<script src="https://cdn.jsdelivr.net/npm/animejs@3.2.1/lib/anime.min.js"></script>
229-
230-
<!-- IBM Plex Mono Font -->
231-
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
232-
```
233-
234-
## Troubleshooting
235-
236-
### Animations not working
237-
- Check browser console for errors
238-
- Verify anime.js CDN is loading correctly
239-
- Ensure JavaScript is enabled in browser
240-
241-
### Layout issues on mobile
242-
- Clear browser cache
243-
- Test in multiple browsers
244-
- Check viewport meta tag is present
245-
246-
### Performance issues
247-
- Enable hardware acceleration in browser settings
248-
- Reduce `ANIM_CONFIG.background_paths` in config.js
249-
- Disable background animations by commenting out `createBackgroundWaveforms()`
250-
251-
## Contributing
252-
253-
This is a showcase landing page for Incomplete-Outputs-Lab. For project-specific contributions, please refer to individual project repositories.
254-
255-
## License
256-
257-
This landing page is maintained by 未完成成果物研究所 (Incomplete-Outputs-Lab).
258-
259-
## Organization Identity
260-
261-
**未完成成果物研究所 (Incomplete-Outputs-Lab)**
262-
- Independent R&D Team
263-
- Active Professionals' Guild
264-
- Not a company organization
265-
- All members maintain primary employment while contributing to research
34+
`dist/` の内容をローカルで確認できます。
26635

267-
---
36+
## GitHub Pages へのデプロイ
26837

269-
**System Status**: OPERATIONAL
270-
**Signal Integrity**: NOMINAL
38+
1. リポジトリの **Settings → Pages****Build and deployment****Source****GitHub Actions** に設定します。
39+
2. `main` ブランチへプッシュすると、[`.github/workflows/deploy-pages.yml`](.github/workflows/deploy-pages.yml) がビルドし、Pages に `dist` がデプロイされます。
27140

272-
未完成成果物研究所は会社組織ではありません。
273-
全メンバーが本業を持つ兼業技術者集団です。
41+
`user.github.io` / `org.github.io` 形式のリポジトリでは、サイトはドメインルート(`base: '/'`)で公開されます。

0 commit comments

Comments
 (0)