interview-widget 0.0.9 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +243 -58
  2. package/package.json +5 -4
package/README.md CHANGED
@@ -127,11 +127,6 @@ export default function App() {
127
127
  | `onInterviewEnd` | `() => void` | `undefined` | Called when the interview completes or the user exits |
128
128
  | `className` | `string` | `""` | Additional CSS classes applied to the outer widget container |
129
129
 
130
- Notes:
131
-
132
- - Internally uses an InterviewController that orchestrates the full flow using the configured API/STT/TTS/Timer.
133
- - The interview id is currently derived internally; integrate with your backend by configuring the API base and auth.
134
-
135
130
  ### <InterviewWidgetProvider />
136
131
 
137
132
  Wrap your app (or the widget) to provide configuration. See full config reference below.
@@ -148,71 +143,261 @@ Pass this object to `InterviewWidgetProvider` via the `config` prop. Tables list
148
143
 
149
144
  ### Top-level
150
145
 
151
- | Prop | Type | Default | Description |
152
- | --------- | ------ | --------- | ---------------------------------------------- |
153
- | api | object | see below | Backend/API configuration |
154
- | ui | object | see below | UI customization tokens |
155
- | interview | object | see below | Interview behavior settings (timers, STT, TTS) |
146
+ <table width="100%">
147
+ <thead>
148
+ <tr>
149
+ <th>Prop</th>
150
+ <th>Type</th>
151
+ <th>Default</th>
152
+ <th>Description</th>
153
+ </tr>
154
+ </thead>
155
+ <tbody>
156
+ <tr>
157
+ <td>api</td>
158
+ <td><code>object</code></td>
159
+ <td>see below</td>
160
+ <td>Backend/API configuration</td>
161
+ </tr>
162
+ <tr>
163
+ <td>ui</td>
164
+ <td><code>object</code></td>
165
+ <td>see below</td>
166
+ <td>UI customization tokens</td>
167
+ </tr>
168
+ <tr>
169
+ <td>interview</td>
170
+ <td><code>object</code></td>
171
+ <td>see below</td>
172
+ <td>Interview behavior settings (timers, STT, TTS)</td>
173
+ </tr>
174
+ </tbody>
175
+ </table>
156
176
 
157
177
  ### api
158
178
 
159
- | Prop | Type | Default | Description |
160
- | ----------- | ------ | --------- | ------------------------------------------------------ |
161
- | baseUrl | string | "/api" | Base URL for backend endpoints |
162
- | authToken | string | undefined | Optional bearer token appended as Authorization header |
163
- | retryConfig | object | see below | Retry policy for fetch calls |
179
+ <table width="100%">
180
+ <thead>
181
+ <tr>
182
+ <th>Prop</th>
183
+ <th>Type</th>
184
+ <th>Default</th>
185
+ <th>Description</th>
186
+ </tr>
187
+ </thead>
188
+ <tbody>
189
+ <tr>
190
+ <td>baseUrl</td>
191
+ <td><code>string</code></td>
192
+ <td>"/api"</td>
193
+ <td>Base URL for backend endpoints</td>
194
+ </tr>
195
+ <tr>
196
+ <td>authToken</td>
197
+ <td><code>string</code></td>
198
+ <td>undefined</td>
199
+ <td>Optional bearer token appended as Authorization header</td>
200
+ </tr>
201
+ <tr>
202
+ <td>retryConfig</td>
203
+ <td><code>object</code></td>
204
+ <td>see below</td>
205
+ <td>Retry policy for fetch calls</td>
206
+ </tr>
207
+ </tbody>
208
+ </table>
164
209
 
165
210
  retryConfig
166
211
 
167
- | Prop | Type | Default | Description |
168
- | --------- | ------------------------ | ------------- | ------------------------------------------ |
169
- | attempts | number | 3 | Number of retry attempts |
170
- | backoff | "fixed" \| "exponential" | "exponential" | Backoff strategy |
171
- | baseDelay | number (ms) | 1000 | Base delay between retries in milliseconds |
212
+ <table width="100%">
213
+ <thead>
214
+ <tr>
215
+ <th>Prop</th>
216
+ <th>Type</th>
217
+ <th>Default</th>
218
+ <th>Description</th>
219
+ </tr>
220
+ </thead>
221
+ <tbody>
222
+ <tr>
223
+ <td>attempts</td>
224
+ <td><code>number</code></td>
225
+ <td>3</td>
226
+ <td>Number of retry attempts</td>
227
+ </tr>
228
+ <tr>
229
+ <td>backoff</td>
230
+ <td><code>"fixed" | "exponential"</code></td>
231
+ <td>"exponential"</td>
232
+ <td>Backoff strategy</td>
233
+ </tr>
234
+ <tr>
235
+ <td>baseDelay</td>
236
+ <td><code>number (ms)</code></td>
237
+ <td>1000</td>
238
+ <td>Base delay between retries in milliseconds</td>
239
+ </tr>
240
+ </tbody>
241
+ </table>
172
242
 
173
243
  ### ui
174
244
 
175
- | Prop | Type | Default | Description |
176
- | ------------ | ------------ | --------- | -------------------------------------- |
177
- | baseColor | string (hex) | "#3B82F6" | Primary brand color used by the widget |
178
- | borderRadius | string (CSS) | "8px" | Global corner radius for components |
245
+ <table width="100%">
246
+ <thead>
247
+ <tr>
248
+ <th>Prop</th>
249
+ <th>Type</th>
250
+ <th>Default</th>
251
+ <th>Description</th>
252
+ </tr>
253
+ </thead>
254
+ <tbody>
255
+ <tr>
256
+ <td>baseColor</td>
257
+ <td><code>string (hex)</code></td>
258
+ <td>"#3B82F6"</td>
259
+ <td>Primary brand color used by the widget</td>
260
+ </tr>
261
+ <tr>
262
+ <td>borderRadius</td>
263
+ <td><code>string (CSS)</code></td>
264
+ <td>"8px"</td>
265
+ <td>Global corner radius for components</td>
266
+ </tr>
267
+ </tbody>
268
+ </table>
179
269
 
180
270
  ### interview
181
271
 
182
- | Prop | Type | Default | Description |
183
- | ------ | ------ | --------- | ----------------------------------------- |
184
- | timers | object | see below | Per-phase and global timing configuration |
185
- | stt | object | see below | Speech-to-Text provider settings |
186
- | tts | object | see below | Text-to-Speech provider settings |
187
-
188
- timers
189
-
190
- | Prop | Type | Default | Description |
191
- | -------------------------- | ---------- | ------- | --------------------------------------------------------- |
192
- | thinkingDuration | number (s) | 30 | Timebox for the Thinking phase |
193
- | answeringDuration | number (s) | 120 | Timebox for the Answering phase |
194
- | editingDuration | number (s) | 30 | Timebox for the Editing phase |
195
- | totalInterviewDuration | number (s) | 600 | Overall interview time cap |
196
- | minimumTimeForNextQuestion | number (s) | 120 | Minimum time required to allow starting the next question |
197
-
198
- stt
199
-
200
- | Prop | Type | Default | Description |
201
- | -------- | ---------------------------------- | ------------------------ | -------------------------------------- |
202
- | provider | "groq" \| "deepgram" | "groq" | STT vendor to use |
203
- | model | "whisper-large-v3-turbo" \| string | "whisper-large-v3-turbo" | STT model identifier |
204
- | language | "en" | "en" | Language code passed to the STT engine |
205
-
206
- tts
207
-
208
- | Prop | Type | Default | Description |
209
- | -------- | ------- | ------- | ----------------- |
210
- | provider | "piper" | "piper" | TTS vendor to use |
211
-
212
- Notes on defaults:
213
-
214
- - Base defaults come from `src/utils/constants.ts` (`defaultConfig`).
215
- - `totalInterviewDuration` and `minimumTimeForNextQuestion` default to 600s and 120s respectively via the TimerService if not explicitly provided.
272
+ <table width="100%">
273
+ <thead>
274
+ <tr>
275
+ <th>Prop</th>
276
+ <th>Type</th>
277
+ <th>Default</th>
278
+ <th>Description</th>
279
+ </tr>
280
+ </thead>
281
+ <tbody>
282
+ <tr>
283
+ <td>timers</td>
284
+ <td><code>object</code></td>
285
+ <td>see below</td>
286
+ <td>Per-phase and global timing configuration</td>
287
+ </tr>
288
+ <tr>
289
+ <td>stt</td>
290
+ <td><code>object</code></td>
291
+ <td>see below</td>
292
+ <td>Speech-to-Text provider settings</td>
293
+ </tr>
294
+ <tr>
295
+ <td>tts</td>
296
+ <td><code>object</code></td>
297
+ <td>see below</td>
298
+ <td>Text-to-Speech provider settings</td>
299
+ </tr>
300
+ </tbody>
301
+ </table>
302
+
303
+ #### timers
304
+
305
+ <table width="100%">
306
+ <thead>
307
+ <tr>
308
+ <th>Prop</th>
309
+ <th>Type</th>
310
+ <th>Default</th>
311
+ <th>Description</th>
312
+ </tr>
313
+ </thead>
314
+ <tbody>
315
+ <tr>
316
+ <td>thinkingDuration</td>
317
+ <td><code>number (s)</code></td>
318
+ <td>30</td>
319
+ <td>Timebox for the Thinking phase</td>
320
+ </tr>
321
+ <tr>
322
+ <td>answeringDuration</td>
323
+ <td><code>number (s)</code></td>
324
+ <td>120</td>
325
+ <td>Timebox for the Answering phase</td>
326
+ </tr>
327
+ <tr>
328
+ <td>editingDuration</td>
329
+ <td><code>number (s)</code></td>
330
+ <td>30</td>
331
+ <td>Timebox for the Editing phase</td>
332
+ </tr>
333
+ <tr>
334
+ <td>totalInterviewDuration</td>
335
+ <td><code>number (s)</code></td>
336
+ <td>600</td>
337
+ <td>Overall interview time cap</td>
338
+ </tr>
339
+ <tr>
340
+ <td>minimumTimeForNextQuestion</td>
341
+ <td><code>number (s)</code></td>
342
+ <td>120</td>
343
+ <td>Minimum time required to allow starting the next question</td>
344
+ </tr>
345
+ </tbody>
346
+ </table>
347
+
348
+ #### stt
349
+
350
+ <table width="100%">
351
+ <thead>
352
+ <tr>
353
+ <th>Prop</th>
354
+ <th>Type</th>
355
+ <th>Default</th>
356
+ <th>Description</th>
357
+ </tr>
358
+ </thead>
359
+ <tbody>
360
+ <tr>
361
+ <td>provider</td>
362
+ <td><code>"groq" | "deepgram"</code></td>
363
+ <td>"groq"</td>
364
+ <td>STT vendor to use</td>
365
+ </tr>
366
+ <tr>
367
+ <td>model</td>
368
+ <td><code>"whisper-large-v3-turbo" | string</code></td>
369
+ <td>"whisper-large-v3-turbo"</td>
370
+ <td>STT model identifier</td>
371
+ </tr>
372
+ <tr>
373
+ <td>language</td>
374
+ <td><code>string</code></td>
375
+ <td>"en"</td>
376
+ <td>Language code passed to the STT engine</td>
377
+ </tr>
378
+ </tbody>
379
+ </table>
380
+
381
+ #### tts
382
+
383
+ <table width="100%">
384
+ <thead>
385
+ <tr>
386
+ <th>Prop</th>
387
+ <th>Type</th>
388
+ <th>Default</th>
389
+ <th>Description</th>
390
+ </tr>
391
+ </thead>
392
+ <tbody>
393
+ <tr>
394
+ <td>provider</td>
395
+ <td><code>"piper"</code></td>
396
+ <td>"piper"</td>
397
+ <td>TTS vendor to use</td>
398
+ </tr>
399
+ </tbody>
400
+ </table>
216
401
 
217
402
  ## How it works
218
403
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "interview-widget",
3
3
  "type": "module",
4
- "version": "0.0.9",
4
+ "version": "0.1.1",
5
5
  "description": "Advanced React interview widget with STT, TTS, camera access, and ML-powered analysis",
6
6
  "main": "dist/widget.umd.js",
7
7
  "module": "dist/widget.es.js",
@@ -54,11 +54,12 @@
54
54
  },
55
55
  "keywords": [
56
56
  "react",
57
- "chat",
57
+ "interview",
58
58
  "widget",
59
59
  "cdn",
60
- "embed"
60
+ "embed",
61
+ "interview-widget"
61
62
  ],
62
- "author": "Your Name",
63
+ "author": "Jaber Hossain Pranto",
63
64
  "license": "MIT"
64
65
  }