chelleboyer commited on
Commit
71692e5
·
1 Parent(s): 8efb17d

Update app

Browse files
Files changed (3) hide show
  1. index.html +68 -36
  2. reachy_mini_remix/app.py +1 -1
  3. style.css +214 -76
index.html CHANGED
@@ -3,66 +3,98 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Reachy Remix - Motion Builder for Reachy Mini</title>
 
7
  <link rel="stylesheet" href="style.css">
8
  </head>
9
  <body>
10
  <div class="container">
11
  <header>
12
- <h1>Reachy Mini Remix</h1>
13
- <p class="tagline">Motion Builder for Reachy Mini</p>
 
14
  </header>
15
 
16
  <section class="hero">
17
  <p class="description">
18
- Build dance sequences with tap-to-add blocks! A kid-friendly Gradio interface
19
- for creating choreographies using 18 pre-recorded moves from the Reachy Mini SDK.
 
20
  </p>
21
  </section>
22
 
23
- <section class="installation">
24
- <h2>📦 Installation</h2>
25
- <div class="steps">
26
- <div class="step">
27
- <h3>1. Access Dashboard</h3>
28
- <p>On your Reachy Mini robot, open the dashboard:</p>
29
- <code>http://&lt;your-robot-ip&gt;:8000</code>
30
  </div>
31
- <div class="step">
32
- <h3>2. Install from Hugging Face</h3>
33
- <p>Click "[Install]"</p>
 
34
  </div>
35
- <div class="step">
36
- <h3>3. Launch & Create</h3>
37
- <p>Click "Run" on the app card, then click ⚙️ to open the interface</p>
 
38
  </div>
39
  </div>
40
  </section>
41
 
42
  <section class="features">
43
- <h2> Features</h2>
44
- <ul>
45
- <li><strong>Easy Block Building:</strong> Tap move buttons to add them to your sequence</li>
46
- <li><strong>20+ Dance Moves:</strong> Full access to the Reachy Mini SDK dance library</li>
47
- <li><strong>Instant Playback:</strong> Watch Reachy perform with smooth transitions</li>
48
- <li><strong>Beautiful Themes:</strong> 26 TTKBootstrap-inspired themes to choose from</li>
49
- <li><strong>Save & Load:</strong> Store your favorite choreographies</li>
50
- </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  </section>
52
 
53
- <section class="moves">
54
- <h2>💃 Available Moves</h2>
55
- <p>Including: yeah_nod, no_head, spin, happy_ears, sad_head, wave, bow, look_around, and many more!</p>
 
 
 
 
 
56
  </section>
57
 
58
  <footer>
59
- <p>
60
- <a href="https://github.com/chelleboyer/reachy-remix-deploy" target="_blank">View on GitHub</a> |
61
- <a href="https://huggingface.co/spaces/chelleboyer/reachy_mini_remix" target="_blank">Hugging Face Space</a>
62
- </p>
63
- <p class="note">
64
- <strong>Note:</strong> This is a Reachy Mini app. Install it through your robot's dashboard
65
- at <code>http://&lt;robot-ip&gt;:8000</code>
66
  </p>
67
  </footer>
68
  </div>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Reachy Remix - Build Dance Routines for Your Reachy Mini Robot</title>
7
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
8
  <link rel="stylesheet" href="style.css">
9
  </head>
10
  <body>
11
  <div class="container">
12
  <header>
13
+ <div class="logo"><i class="fas fa-robot"></i></div>
14
+ <h1>Reachy Remix</h1>
15
+ <p class="tagline">Create Amazing Dance Routines for Your Robot</p>
16
  </header>
17
 
18
  <section class="hero">
19
  <p class="description">
20
+ Turn your Reachy Mini into a dancing star! Build custom choreographies by combining
21
+ fun moves like head nods, waves, spins, and ear wiggles. Perfect for kids and
22
+ beginners—no coding required!
23
  </p>
24
  </section>
25
 
26
+ <section class="how-it-works">
27
+ <h2>How It Works</h2>
28
+ <div class="steps-grid">
29
+ <div class="step-card">
30
+ <div class="icon"><i class="fas fa-hand-pointer"></i></div>
31
+ <h3>Tap & Add</h3>
32
+ <p>Click colorful move buttons to build your sequence—it's as easy as stacking blocks!</p>
33
  </div>
34
+ <div class="step-card">
35
+ <div class="icon"><i class="fas fa-palette"></i></div>
36
+ <h3>Mix & Match</h3>
37
+ <p>Combine over 20 different moves to create unique dance routines your way.</p>
38
  </div>
39
+ <div class="step-card">
40
+ <div class="icon"><i class="fas fa-play-circle"></i></div>
41
+ <h3>Watch & Share</h3>
42
+ <p>Hit play and watch Reachy perform your choreography with smooth, lifelike movements!</p>
43
  </div>
44
  </div>
45
  </section>
46
 
47
  <section class="features">
48
+ <h2>What You Can Do</h2>
49
+ <div class="features-grid">
50
+ <div class="feature">
51
+ <div class="feature-icon"><i class="fas fa-puzzle-piece"></i></div>
52
+ <h3>Easy Building</h3>
53
+ <p>Drag-and-drop style interface anyone can use</p>
54
+ </div>
55
+ <div class="feature">
56
+ <div class="feature-icon"><i class="fas fa-theater-masks"></i></div>
57
+ <h3>Express Yourself</h3>
58
+ <p>Create happy dances, silly moves, or dramatic performances</p>
59
+ </div>
60
+ <div class="feature">
61
+ <div class="feature-icon"><i class="fas fa-swatchbook"></i></div>
62
+ <h3>Choose Themes</h3>
63
+ <p>Pick from colorful themes to match your style</p>
64
+ </div>
65
+ </div>
66
+ </section>
67
+
68
+ <section class="moves-showcase">
69
+ <h2>Popular Moves</h2>
70
+ <div class="moves-list">
71
+ <span class="move-tag"><i class="fas fa-hand-paper"></i> Wave</span>
72
+ <span class="move-tag"><i class="fas fa-person-praying"></i> Bow</span>
73
+ <span class="move-tag"><i class="fas fa-smile"></i> Happy Nod</span>
74
+ <span class="move-tag"><i class="fas fa-spinner"></i> Spin</span>
75
+ <span class="move-tag"><i class="fas fa-volume-high"></i> Wiggle Ears</span>
76
+ <span class="move-tag"><i class="fas fa-face-sad-tear"></i> Sad Head</span>
77
+ <span class="move-tag"><i class="fas fa-binoculars"></i> Look Around</span>
78
+ <span class="move-tag"><i class="fas fa-star"></i> And 13+ More!</span>
79
+ </div>
80
  </section>
81
 
82
+ <section class="get-started">
83
+ <h2>Get Started</h2>
84
+ <p class="install-note">
85
+ Install this app from your Reachy Mini dashboard and start creating right away!
86
+ </p>
87
+ <div class="cta-button">
88
+ <i class="fas fa-rocket"></i> Open Your Robot Dashboard
89
+ </div>
90
  </section>
91
 
92
  <footer>
93
+ <p class="made-with">Made with <i class="fas fa-heart"></i> for Reachy Mini robots</p>
94
+ <p class="links">
95
+ <a href="https://github.com/chelleboyer/reachy-remix-deploy" target="_blank">
96
+ <i class="fab fa-github"></i> GitHub
97
+ </a>
 
 
98
  </p>
99
  </footer>
100
  </div>
reachy_mini_remix/app.py CHANGED
@@ -11,7 +11,7 @@ Architecture:
11
  - Engine Layer: Motion execution via Reachy SDK
12
  - Hardware Layer: ReachyWrapper + SafeMotionController
13
 
14
- Author: Reachy Dev Team
15
  Date: December 6, 2025
16
  Sprint: Story 1 - UI Shell + Theme
17
  """
 
11
  - Engine Layer: Motion execution via Reachy SDK
12
  - Hardware Layer: ReachyWrapper + SafeMotionController
13
 
14
+ Author: Dev Team
15
  Date: December 6, 2025
16
  Sprint: Story 1 - UI Shell + Theme
17
  """
style.css CHANGED
@@ -7,18 +7,18 @@
7
  body {
8
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
9
  line-height: 1.6;
10
- color: #333;
11
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
12
  min-height: 100vh;
13
  padding: 2rem 1rem;
14
  }
15
 
16
  .container {
17
- max-width: 900px;
18
  margin: 0 auto;
19
  background: white;
20
- border-radius: 16px;
21
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
22
  overflow: hidden;
23
  }
24
 
@@ -29,151 +29,289 @@ header {
29
  text-align: center;
30
  }
31
 
 
 
 
 
 
 
 
 
 
 
 
32
  header h1 {
33
- font-size: 2.5rem;
34
- font-weight: 700;
35
  margin-bottom: 0.5rem;
 
36
  }
37
 
38
  .tagline {
39
- font-size: 1.25rem;
40
  opacity: 0.95;
 
41
  }
42
 
43
  .hero {
44
- padding: 2rem;
45
- background: #f8f9fa;
46
- border-bottom: 1px solid #e9ecef;
47
  }
48
 
49
  .hero .description {
50
- font-size: 1.1rem;
51
- color: #495057;
52
  line-height: 1.8;
 
 
53
  }
54
 
55
  section {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  padding: 2rem;
57
- border-bottom: 1px solid #e9ecef;
 
 
 
58
  }
59
 
60
- section:last-of-type {
61
- border-bottom: none;
 
62
  }
63
 
64
- section h2 {
 
 
65
  color: #667eea;
66
- font-size: 1.75rem;
67
- margin-bottom: 1.5rem;
68
- font-weight: 600;
69
  }
70
 
71
- .steps {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  display: grid;
73
- gap: 1.5rem;
74
- margin-top: 1rem;
75
  }
76
 
77
- .step {
78
- background: #f8f9fa;
79
  padding: 1.5rem;
80
- border-radius: 8px;
81
- border-left: 4px solid #667eea;
82
  }
83
 
84
- .step h3 {
85
- color: #495057;
 
 
 
 
 
 
 
 
 
 
86
  font-size: 1.25rem;
87
  margin-bottom: 0.5rem;
 
88
  }
89
 
90
- .step p {
91
- color: #6c757d;
92
- margin-bottom: 0.5rem;
93
  }
94
 
95
- code {
96
- background: #e9ecef;
97
- padding: 0.25rem 0.5rem;
98
- border-radius: 4px;
99
- font-family: 'Monaco', 'Courier New', monospace;
100
- font-size: 0.9rem;
101
- color: #764ba2;
102
  }
103
 
104
- .features ul {
105
- list-style: none;
106
- display: grid;
107
  gap: 1rem;
 
 
108
  }
109
 
110
- .features li {
111
- padding-left: 1.5rem;
112
- position: relative;
113
- color: #495057;
 
 
 
 
 
 
 
 
114
  }
115
 
116
- .features li:before {
117
- content: "✓";
118
- position: absolute;
119
- left: 0;
120
- color: #667eea;
121
- font-weight: bold;
122
  }
123
 
124
- .features strong {
125
- color: #333;
126
  }
127
 
128
- .moves p {
129
- color: #495057;
130
- font-size: 1.05rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  }
132
 
133
  footer {
134
- background: #f8f9fa;
135
- padding: 2rem;
 
136
  text-align: center;
137
- color: #6c757d;
138
  }
139
 
140
- footer a {
141
- color: #667eea;
142
- text-decoration: none;
143
- font-weight: 500;
144
  }
145
 
146
- footer a:hover {
147
- text-decoration: underline;
148
  }
149
 
150
- .note {
151
  margin-top: 1rem;
152
- padding: 1rem;
153
- background: #fff3cd;
154
- border-left: 4px solid #ffc107;
155
- border-radius: 4px;
156
- color: #856404;
157
  }
158
 
159
- .note strong {
160
- color: #533f03;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  }
162
 
163
  @media (max-width: 768px) {
164
  body {
165
  padding: 1rem 0.5rem;
166
  }
 
167
  header h1 {
168
  font-size: 2rem;
169
  }
 
170
  .tagline {
171
- font-size: 1rem;
172
  }
 
173
  section {
174
- padding: 1.5rem;
175
  }
 
176
  section h2 {
177
- font-size: 1.5rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  }
179
  }
 
7
  body {
8
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
9
  line-height: 1.6;
10
+ color: #2d3748;
11
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
12
  min-height: 100vh;
13
  padding: 2rem 1rem;
14
  }
15
 
16
  .container {
17
+ max-width: 1000px;
18
  margin: 0 auto;
19
  background: white;
20
+ border-radius: 20px;
21
+ box-shadow: 0 25px 70px rgba(0, 0, 0, 0.3);
22
  overflow: hidden;
23
  }
24
 
 
29
  text-align: center;
30
  }
31
 
32
+ .logo {
33
+ font-size: 4rem;
34
+ margin-bottom: 1rem;
35
+ animation: bounce 2s infinite;
36
+ }
37
+
38
+ @keyframes bounce {
39
+ 0%, 100% { transform: translateY(0); }
40
+ 50% { transform: translateY(-10px); }
41
+ }
42
+
43
  header h1 {
44
+ font-size: 3rem;
45
+ font-weight: 800;
46
  margin-bottom: 0.5rem;
47
+ text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
48
  }
49
 
50
  .tagline {
51
+ font-size: 1.3rem;
52
  opacity: 0.95;
53
+ font-weight: 300;
54
  }
55
 
56
  .hero {
57
+ padding: 3rem 2rem;
58
+ background: linear-gradient(to bottom, #f7fafc, #edf2f7);
59
+ text-align: center;
60
  }
61
 
62
  .hero .description {
63
+ font-size: 1.25rem;
64
+ color: #4a5568;
65
  line-height: 1.8;
66
+ max-width: 700px;
67
+ margin: 0 auto;
68
  }
69
 
70
  section {
71
+ padding: 3rem 2rem;
72
+ }
73
+
74
+ section h2 {
75
+ color: #2d3748;
76
+ font-size: 2.25rem;
77
+ margin-bottom: 2rem;
78
+ font-weight: 700;
79
+ text-align: center;
80
+ }
81
+
82
+ .steps-grid {
83
+ display: grid;
84
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
85
+ gap: 2rem;
86
+ margin-top: 2rem;
87
+ }
88
+
89
+ .step-card {
90
+ background: linear-gradient(135deg, #667eea15, #764ba215);
91
  padding: 2rem;
92
+ border-radius: 15px;
93
+ text-align: center;
94
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
95
+ border: 2px solid #e2e8f0;
96
  }
97
 
98
+ .step-card:hover {
99
+ transform: translateY(-5px);
100
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.2);
101
  }
102
 
103
+ .step-card .icon {
104
+ font-size: 3.5rem;
105
+ margin-bottom: 1rem;
106
  color: #667eea;
 
 
 
107
  }
108
 
109
+ .step-card .icon i {
110
+ display: inline-block;
111
+ }
112
+
113
+ .step-card h3 {
114
+ color: #667eea;
115
+ font-size: 1.5rem;
116
+ margin-bottom: 0.75rem;
117
+ font-weight: 700;
118
+ }
119
+
120
+ .step-card p {
121
+ color: #4a5568;
122
+ font-size: 1.05rem;
123
+ line-height: 1.6;
124
+ }
125
+
126
+ .features {
127
+ background: #f7fafc;
128
+ }
129
+
130
+ .features-grid {
131
  display: grid;
132
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
133
+ gap: 2rem;
134
  }
135
 
136
+ .feature {
137
+ text-align: center;
138
  padding: 1.5rem;
 
 
139
  }
140
 
141
+ .feature-icon {
142
+ font-size: 3rem;
143
+ margin-bottom: 1rem;
144
+ color: #764ba2;
145
+ }
146
+
147
+ .feature-icon i {
148
+ display: inline-block;
149
+ }
150
+
151
+ .feature h3 {
152
+ color: #2d3748;
153
  font-size: 1.25rem;
154
  margin-bottom: 0.5rem;
155
+ font-weight: 600;
156
  }
157
 
158
+ .feature p {
159
+ color: #718096;
160
+ font-size: 1rem;
161
  }
162
 
163
+ .moves-showcase {
164
+ background: white;
 
 
 
 
 
165
  }
166
 
167
+ .moves-list {
168
+ display: flex;
169
+ flex-wrap: wrap;
170
  gap: 1rem;
171
+ justify-content: center;
172
+ margin-top: 2rem;
173
  }
174
 
175
+ .move-tag {
176
+ background: linear-gradient(135deg, #667eea, #764ba2);
177
+ color: white;
178
+ padding: 0.75rem 1.5rem;
179
+ border-radius: 50px;
180
+ font-size: 1.1rem;
181
+ font-weight: 600;
182
+ box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
183
+ transition: transform 0.2s ease;
184
+ display: inline-flex;
185
+ align-items: center;
186
+ gap: 0.5rem;
187
  }
188
 
189
+ .move-tag:hover {
190
+ transform: scale(1.05);
 
 
 
 
191
  }
192
 
193
+ .move-tag i {
194
+ font-size: 1rem;
195
  }
196
 
197
+ .get-started {
198
+ background: linear-gradient(135deg, #667eea15, #764ba215);
199
+ text-align: center;
200
+ }
201
+
202
+ .install-note {
203
+ font-size: 1.2rem;
204
+ color: #4a5568;
205
+ margin-bottom: 2rem;
206
+ max-width: 600px;
207
+ margin-left: auto;
208
+ margin-right: auto;
209
+ }
210
+
211
+ .cta-button {
212
+ display: inline-flex;
213
+ align-items: center;
214
+ gap: 0.75rem;
215
+ background: linear-gradient(135deg, #667eea, #764ba2);
216
+ color: white;
217
+ padding: 1.25rem 3rem;
218
+ border-radius: 50px;
219
+ font-size: 1.25rem;
220
+ font-weight: 700;
221
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);
222
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
223
+ cursor: pointer;
224
+ }
225
+
226
+ .cta-button:hover {
227
+ transform: translateY(-3px);
228
+ box-shadow: 0 15px 40px rgba(102, 126, 234, 0.5);
229
+ }
230
+
231
+ .cta-button i {
232
+ font-size: 1.3rem;
233
  }
234
 
235
  footer {
236
+ background: #2d3748;
237
+ color: white;
238
+ padding: 2.5rem 2rem;
239
  text-align: center;
 
240
  }
241
 
242
+ .made-with {
243
+ font-size: 1.1rem;
244
+ margin-bottom: 1rem;
245
+ opacity: 0.9;
246
  }
247
 
248
+ .made-with i {
249
+ color: #fc8181;
250
  }
251
 
252
+ .links {
253
  margin-top: 1rem;
 
 
 
 
 
254
  }
255
 
256
+ .links a {
257
+ color: #90cdf4;
258
+ text-decoration: none;
259
+ font-weight: 600;
260
+ transition: color 0.2s ease;
261
+ display: inline-flex;
262
+ align-items: center;
263
+ gap: 0.5rem;
264
+ }
265
+
266
+ .links a:hover {
267
+ color: #63b3ed;
268
+ text-decoration: underline;
269
+ }
270
+
271
+ .links a i {
272
+ font-size: 1.2rem;
273
  }
274
 
275
  @media (max-width: 768px) {
276
  body {
277
  padding: 1rem 0.5rem;
278
  }
279
+
280
  header h1 {
281
  font-size: 2rem;
282
  }
283
+
284
  .tagline {
285
+ font-size: 1.1rem;
286
  }
287
+
288
  section {
289
+ padding: 2rem 1.5rem;
290
  }
291
+
292
  section h2 {
293
+ font-size: 1.75rem;
294
+ }
295
+
296
+ .logo {
297
+ font-size: 3rem;
298
+ }
299
+
300
+ .steps-grid,
301
+ .features-grid {
302
+ grid-template-columns: 1fr;
303
+ }
304
+
305
+ .cta-button {
306
+ padding: 1rem 2rem;
307
+ font-size: 1.1rem;
308
+ }
309
+
310
+ .step-card .icon {
311
+ font-size: 3rem;
312
+ }
313
+
314
+ .feature-icon {
315
+ font-size: 2.5rem;
316
  }
317
  }