|
1 | 1 | # 未完成成果物研究所 Landing Page |
2 | 2 |
|
3 | | -Dark, broadcast-tech landing page for Incomplete-Outputs-Lab with subtle scanline accents and SVG animations powered by anime.js. |
| 3 | +未完成成果物研究所のランディングページです。 |
4 | 4 |
|
5 | | -## Overview |
| 5 | +公開 URL: [https://incomplete-outputs-lab.github.io/](https://incomplete-outputs-lab.github.io/) |
6 | 6 |
|
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 | +## 技術スタック |
8 | 8 |
|
9 | | -### Key Features |
| 9 | +- [Vite](https://vitejs.dev/) 6 |
| 10 | +- [TypeScript](https://www.typescriptlang.org/) |
| 11 | +- [Tailwind CSS](https://tailwindcss.com/) 4(`@tailwindcss/vite`) |
10 | 12 |
|
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 | +## 開発 |
16 | 14 |
|
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: |
82 | 15 | ```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 |
156 | 18 | ``` |
157 | 19 |
|
158 | | -## Deployment |
| 20 | +ブラウザで表示されるローカル URL(通常は `http://localhost:5173`)を開きます。 |
159 | 21 |
|
160 | | -### GitHub Pages |
| 22 | +## 本番ビルド |
161 | 23 |
|
162 | | -1. Push your changes to the `main` branch: |
163 | 24 | ```bash |
164 | | -git add . |
165 | | -git commit -m "Update landing page" |
166 | | -git push origin main |
| 25 | +npm run build |
167 | 26 | ``` |
168 | 27 |
|
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/` に出力されます。 |
176 | 29 |
|
177 | | -### Custom Domain (Optional) |
178 | | - |
179 | | -1. Add a `CNAME` file with your domain: |
180 | 30 | ```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 |
185 | 32 | ``` |
186 | 33 |
|
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/` の内容をローカルで確認できます。 |
266 | 35 |
|
267 | | ---- |
| 36 | +## GitHub Pages へのデプロイ |
268 | 37 |
|
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` がデプロイされます。 |
271 | 40 |
|
272 | | -未完成成果物研究所は会社組織ではありません。 |
273 | | -全メンバーが本業を持つ兼業技術者集団です。 |
| 41 | +`user.github.io` / `org.github.io` 形式のリポジトリでは、サイトはドメインルート(`base: '/'`)で公開されます。 |
0 commit comments