rapida-partner 1.9.0 → 1.10.0

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.
package/rapidaObject.json CHANGED
@@ -1,726 +1 @@
1
- {
2
- "id": "movieBackoffice",
3
- "title": "Movie Backoffice",
4
- "description": "Sistema de gerenciamento para filmes e personagens.",
5
- "flow": "permeson",
6
- "businessPlan": {
7
- "businessValue": "Gerenciar e otimizar as operações do Movie.",
8
- "targetMarket": "Empresas que utilizam o Movie para gerenciar sugestões e feedbacks.",
9
- "benchmarkings": "Análise de sistemas de gerenciamento de feedbacks.",
10
- "legalIssues": "Conformidade com leis de proteção de dados.",
11
- "ethicalIssues": "Garantir a privacidade dos usuários.",
12
- "afterSales": "Suporte contínuo e atualizações regulares.",
13
- "monetization": "Assinaturas mensais para acesso ao sistema."
14
- },
15
- "frontend": { "framework": "svelte", "uiKit": "flowbite" },
16
- "backend": {
17
- "framework": "nest",
18
- "jwtSecret": "Kunl4t3kw1llN3v3rD13",
19
- "database": {
20
- "provider": "mongodb",
21
- "connectionString": "mongodb+srv://kunlatek:Kunlatek751@cluster0.b0pfr.mongodb.net/movie-v1",
22
- "credentials": {
23
- "databaseName": "movie-v1",
24
- "username": "kunlatek",
25
- "password": "Kunlatek751",
26
- "host": "cluster0.b0pfr.mongodb.net"
27
- }
28
- },
29
- "storage": {
30
- "provider": "gcs",
31
- "credentials": {
32
- "clientEmail": "rapida-personal@rapida-personal-projects.iam.gserviceaccount.com",
33
- "privateKey": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCDEQRUfKKxYUj\nVorX+aiEHhPRrrcNHVw40qq517wP7IgIp2UlA5uf0rV2cdn1njA9RMQxp6l7Qt+0\nBZg1JZM8l9Uv1SckRlkKST4k2B3MDOEl1riAPxIE/jBCUT9l2DCbir0Nu+CqGhGD\nUXOMpF0XWYL9GIBRo8Paf//yU0b86VBDfQGgnFkMKFq3bVDkPd8hQTBgTFT5F1Rh\nDcoUpAp/n3SYxkAK1V7Je+fnChF1DQPj8Nd5CLm4DsCM1B+HtaegsaE1ulXwhi1J\nlIFFGv49g0f2qOs3hytTPt0d8UpxFd9/Oq0tmcjuzK4bYzJdVZZPf+4xflHz+6R8\n2o7grTeDAgMBAAECggEABHdsz6s/tnMCdARHcN41w0i/8wke/IXK/CHZPSrakNFE\ndlKIEPiKyfx7Ic1QE4e/G4HsNCpkS8qHxKiGTt7dCz2BcjbpTjvyS7rQ298/nFVF\nj23oVEdfXk8NhFFDcNAvmjzwyhKjgrbT5V5oFvonjGSKj9HTDk4DMZHVrdm93g9k\nZ9XJBVeLh14/rkZLMDZ9DVjUMiQ6xElMH3IQD4MwEcul9eqM8bs2APgZlzzfO76m\nAuq20l4JqOcJJl8wzC7z12eNDNJrQNh2sHsT9zV5PabfNoQhnU6fDvKr0PG0PGRR\nS5PTDeiMY47rJVPgwxthSke3abtdgA9SNie8OqZl6QKBgQD+yFT+ndFYKvHg2WNi\ns0jK0QqFQB84LQtOX2YhQ0137mtSv0z7wO90e28dfUqsjax4DxPMp+AW0cC3SBEv\n2T8/rJrgzGucPt4Jzml5HYl2NgCkNAtHIJ1vtXJdX5d3WmYhH7cUTPmV6nMS8OlF\nheSyfudCiOo89phQf0pI6lhQKwKBgQDC+aOU2cxMVA5VH0txX0G9tPQjBvzY09ev\nVLGrxlmdAcQVXYCWdoESEfTv3E4JPklAz5B2/XnALxM5ewJgjoP6buOCJrQcgJNC\nSsG9Ll3zF4c+opFmaYTzcAY9HWHa4Pc+GAxFrrcPGzVBLjSrl7FPdykkPiBNxNJa\nnOzzrL4yCQKBgQC7b/pHjycx6/YiawuY0zjcLMnGmhPdqhXFRJ3IHtFhR/+g0qf6\nFkiTszNdyI0lQNz/PmhciaxsXUegDt7GCtdjKsKOWxVXz1BeeoJR3g8A7l2ub7NU\nUoRAaIaIdwjhf5nfCIwR3UdIqUCbUKzsvsIvJvlPk5Zv3yLTJbIqzmzGHQKBgBiQ\nnUSGwE+pk3i0DaxGBSFiqBO1sKuc3SLQ9+WdgvLeIxdSBX5vhcmCC6sgxZAykcYh\noKDtRKarB7AJSH5j1kr6J53hRHYG2QbUJl6wddPH1hlVIB6YEtEc/xw6FHcgOuZO\n31T0M0oq8mW47Zfk78kESWGwlh9WOe6CsPPugrQJAoGBAP3o8DqH1Pb7vlowsz78\n8fsCuydEJgsPSwHHqBveeUHBQLGSiGIIKRXWR1a13mWXQTqQkROZCwvVCMX6FHZZ\nKv3rzgsTkaaoqM0RVLcQSSDoyu2yP/JJv+VYsvMf2S3dUkDAeYDZFizPeFF42t92\n+MSId41OkBvJ/JvqsBWlWFYK\n-----END PRIVATE KEY-----\n",
34
- "projectId": "rapida-personal-projects"
35
- },
36
- "publicBucketName": "rapida-public-files",
37
- "privateBucketName": "rapida-private-files"
38
- },
39
- "logging": {
40
- "discordWebhookUrl": "https://discord.com/api/webhooks/1370095507959054429/Ay8pIM-sinbjsLMAAWGrRDFT-oyBD3xu7yB2Ke0Bx6RxpKN882taB4_tkD2xsdk8MirZ"
41
- },
42
- "email": {
43
- "smtpUser": "noreply.rapida@gmail.com",
44
- "smtpPass": "ekgwxlazvjjllfxf",
45
- "smtpFrom": "noreply@kunlatek.com"
46
- },
47
- "baseUrl": "http://localhost:5173"
48
- },
49
- "modules": [
50
- {
51
- "id": "movieModule",
52
- "title": "Episódio",
53
- "icon": "movie",
54
- "components": [
55
- {
56
- "title": "Gerenciar filme",
57
- "userStory": "Como um usuário autorizado, eu quero usar o formulário de gerenciamento de filmes para cadastrar e editar filmes, incluindo a foto, o nome, a descrição, a data de lançamento, a pontuação no IMDb e os gêneros associados. Quero também ter a opção de adicionar e gerenciar episódios, incluindo seus títulos, descrições, datas de lançamento e personagens relacionados. Isso me permite manter um registro completo e detalhado do conteúdo audiovisual no sistema.",
58
- "componentType": "form",
59
- "contracts": [
60
- {
61
- "id": "movies",
62
- "endpoint": "/movies",
63
- "actions": ["create", "update", "getById", "get", "delete"],
64
- "request": {
65
- "entity": "Movie",
66
- "description": "Represents a movie or TV series in the system.",
67
- "fields": [
68
- {
69
- "name": "_id",
70
- "dataType": "uniqueidentifier",
71
- "isRequired": true,
72
- "isPrimaryKey": true
73
- },
74
- {
75
- "name": "pictureFile",
76
- "dataType": "nvarchar",
77
- "isRequired": false
78
- },
79
- {
80
- "name": "name",
81
- "dataType": "nvarchar",
82
- "isRequired": true
83
- },
84
- {
85
- "name": "description",
86
- "dataType": "longtext",
87
- "isRequired": true
88
- },
89
- {
90
- "name": "releaseDate",
91
- "dataType": "date",
92
- "isRequired": true
93
- },
94
- {
95
- "name": "imdbRating",
96
- "dataType": "decimal",
97
- "isRequired": true
98
- },
99
- {
100
- "name": "movieGenres",
101
- "dataType": "uniqueidentifier",
102
- "isRequired": true,
103
- "foreignKey": {
104
- "entity": "MovieGenre",
105
- "connectionAttribute": "_id",
106
- "relationship": "many-to-many"
107
- }
108
- },
109
- {
110
- "name": "link1",
111
- "dataType": "nvarchar",
112
- "isRequired": true
113
- },
114
- {
115
- "name": "link2",
116
- "dataType": "nvarchar",
117
- "isRequired": false
118
- },
119
- {
120
- "name": "link3",
121
- "dataType": "nvarchar",
122
- "isRequired": false
123
- }
124
- ]
125
- }
126
- }
127
- ],
128
- "id": "movieForm",
129
- "guards": "isAuthorized",
130
- "elements": [
131
- {
132
- "type": "tab",
133
- "id": "movieTab",
134
- "tabs": [
135
- {
136
- "id": "mainTab",
137
- "title": "Principal",
138
- "elements": [
139
- {
140
- "label": "Foto",
141
- "type": "file",
142
- "dataType": "text",
143
- "name": "pictureFile",
144
- "storageConfig": {
145
- "fileNameStrategy": "uuid",
146
- "path": "movies",
147
- "visibility": "public"
148
- }
149
- },
150
- {
151
- "type": "input",
152
- "dataType": "text",
153
- "label": "Nome",
154
- "name": "name",
155
- "isRequired": true
156
- },
157
- {
158
- "type": "input",
159
- "dataType": "wysiwyg",
160
- "label": "Descrição",
161
- "name": "description",
162
- "isRequired": true
163
- },
164
- {
165
- "type": "input",
166
- "dataType": "date",
167
- "label": "Data de lançamento",
168
- "name": "releaseDate",
169
- "isRequired": true
170
- },
171
- {
172
- "type": "input",
173
- "name": "imdbRating",
174
- "label": "Pontuação do IMDb",
175
- "dataType": "number",
176
- "isRequired": true
177
- },
178
- {
179
- "type": "autocomplete",
180
- "dataType": "text",
181
- "label": "Gêneros",
182
- "name": "movieGenres",
183
- "optionsApi": {
184
- "endpoint": "/api/movies-genres",
185
- "labelField": ["name"],
186
- "valueField": "_id",
187
- "paramsToFilter": ["name"],
188
- "paramType": "query",
189
- "relatedEntity": "MovieGenres"
190
- },
191
- "isMultiple": true,
192
- "isRequired": true
193
- },
194
- {
195
- "type": "input",
196
- "name": "link1",
197
- "label": "Link 1",
198
- "dataType": "text",
199
- "isRequired": true
200
- },
201
- {
202
- "type": "input",
203
- "name": "link2",
204
- "label": "Link 2",
205
- "dataType": "text"
206
- },
207
- {
208
- "type": "input",
209
- "name": "link3",
210
- "label": "Link 3",
211
- "dataType": "text"
212
- }
213
- ]
214
- }
215
- ]
216
- }
217
- ]
218
- },
219
- {
220
- "componentType": "list",
221
- "id": "movieList",
222
- "title": "Lista de filmes",
223
- "guards": ["isAuthorized"],
224
- "dataSource": {
225
- "endpoint": "/movies",
226
- "paramType": "query",
227
- "hasAuthentication": true
228
- },
229
- "properties": [
230
- { "property": "pictureFile", "type": "image", "label": "Cartaz" },
231
- { "property": "name", "type": "title", "label": "Nome" },
232
- {
233
- "property": "releaseDate",
234
- "type": "subtitle",
235
- "label": "Data de lançamento"
236
- },
237
- {
238
- "property": "movieGenres.name",
239
- "type": "subtitle",
240
- "label": "Gênero"
241
- },
242
- {
243
- "property": "description",
244
- "type": "description",
245
- "label": "Descrição",
246
- "isHtml": true
247
- }
248
- ],
249
- "callsToActionMenu": [
250
- {
251
- "label": "Editar",
252
- "icon": "pencil",
253
- "action": {
254
- "link": {
255
- "endpoint": "/movie-form",
256
- "propertiesAsQueryParam": ["_id"]
257
- }
258
- }
259
- },
260
- {
261
- "label": "Excluir",
262
- "icon": "delete",
263
- "action": {
264
- "link": { "endpoint": "/movie-list" },
265
- "request": {
266
- "endpoint": "/movies",
267
- "verb": "delete",
268
- "propertiesAsPathParam": ["_id"],
269
- "dialog": {
270
- "title": "Excluir conteúdo",
271
- "message": "Deseja realmente excluir esse conteúdo?"
272
- }
273
- }
274
- }
275
- }
276
- ]
277
- },
278
- {
279
- "title": "Gerenciar gênero de filme",
280
- "userStory": "Como um usuário autorizado, eu quero usar o formulário de gerenciamento de gênero de filme para criar e editar gêneros de filmes, fornecendo um nome e uma descrição para cada um. Isso me permite organizar e categorizar filmes de forma precisa no sistema.",
281
- "componentType": "form",
282
- "contracts": [
283
- {
284
- "id": "moviesGenres",
285
- "endpoint": "/movie-genres",
286
- "actions": ["create", "get", "getById", "update", "delete"],
287
- "request": {
288
- "entity": "moviesGenres",
289
- "description": "",
290
- "fields": [
291
- {
292
- "name": "name",
293
- "dataType": "text",
294
- "isRequired": true,
295
- "maxSize": 255
296
- },
297
- {
298
- "name": "description",
299
- "dataType": "text",
300
- "isRequired": true,
301
- "maxSize": 255
302
- }
303
- ]
304
- }
305
- }
306
- ],
307
- "id": "movieGenreForm",
308
- "guards": "isAuthorized",
309
- "elements": [
310
- {
311
- "type": "input",
312
- "dataType": "text",
313
- "label": "Nome",
314
- "name": "name",
315
- "isRequired": true
316
- },
317
- {
318
- "type": "input",
319
- "dataType": "wysiwyg",
320
- "label": "Descrição",
321
- "name": "description",
322
- "isRequired": true
323
- }
324
- ]
325
- },
326
- {
327
- "componentType": "list",
328
- "id": "movieGenreList",
329
- "title": "Lista de gêneros de filmes",
330
- "guards": ["isAuthorized"],
331
- "dataSource": {
332
- "endpoint": "/movies-genres",
333
- "paramType": "query",
334
- "hasAuthentication": true
335
- },
336
- "properties": [
337
- { "property": "name", "type": "title", "label": "Nome" },
338
- {
339
- "property": "description",
340
- "type": "description",
341
- "label": "Descrição"
342
- }
343
- ],
344
- "callsToActionMenu": [
345
- {
346
- "label": "Editar",
347
- "icon": "pencil",
348
- "action": {
349
- "link": {
350
- "endpoint": "/movie-genre-form",
351
- "propertiesAsQueryParam": ["_id"]
352
- }
353
- }
354
- },
355
- {
356
- "label": "Excluir",
357
- "icon": "delete",
358
- "action": {
359
- "link": { "endpoint": "/movie-genre-list" },
360
- "request": {
361
- "endpoint": "/movies-genres",
362
- "verb": "delete",
363
- "propertiesAsPathParam": ["_id"],
364
- "dialog": {
365
- "title": "Excluir conteúdo",
366
- "message": "Deseja realmente excluir esse conteúdo?"
367
- }
368
- }
369
- }
370
- }
371
- ]
372
- },
373
- {
374
- "title": "Gerenciar episódio",
375
- "componentType": "form",
376
- "id": "movieEpisodeForm",
377
- "contracts": [
378
- {
379
- "id": "moviesEpisodes",
380
- "endpoint": "/movies-episodes",
381
- "actions": ["create", "get", "getById", "update", "delete"],
382
- "request": {
383
- "entity": "MovieEpisode",
384
- "description": "Represents an episode of a TV series or show.",
385
- "fields": [
386
- {
387
- "name": "_id",
388
- "dataType": "uniqueidentifier",
389
- "isRequired": true,
390
- "isPrimaryKey": true
391
- },
392
- {
393
- "name": "movieId",
394
- "dataType": "uniqueidentifier",
395
- "isRequired": true,
396
- "foreignKey": {
397
- "entity": "Movie",
398
- "connectionAttribute": "_id",
399
- "relationship": "one-to-many"
400
- }
401
- },
402
- {
403
- "name": "title",
404
- "dataType": "nvarchar",
405
- "isRequired": true
406
- },
407
- {
408
- "name": "description",
409
- "dataType": "longtext",
410
- "isRequired": true
411
- },
412
- {
413
- "name": "releaseDate",
414
- "dataType": "datetime2",
415
- "isRequired": true
416
- },
417
- {
418
- "name": "characters",
419
- "dataType": "uniqueidentifier",
420
- "isRequired": false,
421
- "foreignKey": {
422
- "entity": "Character",
423
- "connectionAttribute": "_id",
424
- "relationship": "many-to-many"
425
- }
426
- }
427
- ]
428
- }
429
- }
430
- ],
431
- "elements": [
432
- {
433
- "type": "array",
434
- "id": "episodes",
435
- "name": "episodes",
436
- "title": "Episódio",
437
- "elements": [
438
- {
439
- "type": "input",
440
- "dataType": "text",
441
- "label": "Título do episódio",
442
- "name": "episodeTitle",
443
- "isRequired": true
444
- },
445
- {
446
- "type": "input",
447
- "dataType": "wysiwyg",
448
- "label": "Descrição do episódio",
449
- "name": "episodeDescription"
450
- },
451
- {
452
- "type": "input",
453
- "dataType": "date",
454
- "label": "Data de lançamento do episódio",
455
- "name": "episodeReleaseDate"
456
- },
457
- {
458
- "type": "autocomplete",
459
- "dataType": "text",
460
- "name": "charactersId",
461
- "label": "Personagens no episódio",
462
- "optionsApi": {
463
- "endpoint": "/characters",
464
- "labelField": ["characterName"],
465
- "valueField": "_id",
466
- "paramsToFilter": ["characterName"],
467
- "paramType": "query",
468
- "relatedEntity": "Character"
469
- }
470
- }
471
- ]
472
- }
473
- ]
474
- },
475
- {
476
- "componentType": "list",
477
- "id": "movieEpisodeList",
478
- "title": "Lista de episódios de filmes",
479
- "guards": ["isAuthorized"],
480
- "dataSource": {
481
- "endpoint": "/movies-episodes",
482
- "paramType": "query",
483
- "hasAuthentication": true
484
- },
485
- "properties": [
486
- { "property": "episodeTitle", "type": "title", "label": "Título" },
487
- {
488
- "property": "episodeDescription",
489
- "type": "description",
490
- "label": "Descrição"
491
- }
492
- ],
493
- "callsToActionMenu": [
494
- {
495
- "label": "Editar",
496
- "icon": "pencil",
497
- "action": {
498
- "link": {
499
- "endpoint": "/movie-episode-form",
500
- "propertiesAsQueryParam": ["_id"]
501
- }
502
- }
503
- },
504
- {
505
- "label": "Excluir",
506
- "icon": "delete",
507
- "action": {
508
- "link": { "endpoint": "/movie-episode-list" },
509
- "request": {
510
- "endpoint": "/movies-episodes",
511
- "verb": "delete",
512
- "propertiesAsPathParam": ["_id"],
513
- "dialog": {
514
- "title": "Excluir conteúdo",
515
- "message": "Deseja realmente excluir esse conteúdo?"
516
- }
517
- }
518
- }
519
- }
520
- ]
521
- }
522
- ]
523
- },
524
- {
525
- "id": "characterModule",
526
- "title": "Personagem",
527
- "icon": "character",
528
- "components": [
529
- {
530
- "title": "Personagem",
531
- "userStory": "Como um usuário autorizado, quero usar o formulário de personagem para criar e editar personagens, fornecendo um nome, uma descrição, um tipo (como \"protagonista\" ou \"antagonista\") e um gênero para cada um. Isso me permite manter um registro detalhado e organizado dos personagens no sistema.",
532
- "componentType": "form",
533
- "id": "characterForm",
534
- "contracts": [
535
- {
536
- "id": "characters",
537
- "endpoint": "/characters",
538
- "actions": ["create", "get", "getById", "update", "delete"],
539
- "request": {
540
- "entity": "Character",
541
- "description": "Represents a character in a story or narrative.",
542
- "fields": [
543
- {
544
- "name": "_id",
545
- "dataType": "uniqueidentifier",
546
- "isRequired": true,
547
- "isPrimaryKey": true
548
- },
549
- {
550
- "name": "characterName",
551
- "dataType": "nvarchar",
552
- "isRequired": true
553
- },
554
- {
555
- "name": "characterImage",
556
- "dataType": "nvarchar",
557
- "isRequired": false
558
- },
559
- {
560
- "name": "characterDescription",
561
- "dataType": "longtext",
562
- "isRequired": false
563
- },
564
- {
565
- "name": "characterType",
566
- "dataType": "nvarchar",
567
- "enum": [
568
- "protagonist",
569
- "antagonist",
570
- "hero",
571
- "villain",
572
- "sidekick",
573
- "supporting"
574
- ],
575
- "isRequired": false
576
- },
577
- {
578
- "name": "characterGender",
579
- "dataType": "nvarchar",
580
- "enum": ["male", "female", "other"],
581
- "isRequired": false
582
- }
583
- ]
584
- }
585
- }
586
- ],
587
- "guards": "isAuthorized",
588
- "elements": [
589
- {
590
- "type": "input",
591
- "dataType": "text",
592
- "label": "Nome do personagem",
593
- "name": "characterName",
594
- "isRequired": true
595
- },
596
- {
597
- "label": "Foto do personagem",
598
- "type": "file",
599
- "dataType": "text",
600
- "name": "characterImage",
601
- "storageConfig": {
602
- "fileNameStrategy": "uuid",
603
- "path": "characters",
604
- "visibility": "public"
605
- }
606
- },
607
- {
608
- "type": "input",
609
- "dataType": "wysiwyg",
610
- "label": "Descrição do personagem",
611
- "name": "characterDescription"
612
- },
613
- {
614
- "type": "select",
615
- "label": "Tipo de personagem",
616
- "name": "characterType",
617
- "dataType": "text",
618
- "options": [
619
- { "value": "protagonist", "label": "Protagonista" },
620
- { "value": "antagonist", "label": "Antagonista" },
621
- { "value": "hero", "label": "Herói" },
622
- { "value": "villain", "label": "Vilão" },
623
- { "value": "sidekick", "label": "Ajudante" },
624
- { "value": "supporting", "label": "Secundário" }
625
- ]
626
- },
627
- {
628
- "type": "select",
629
- "label": "Gênero do personagem",
630
- "name": "characterGender",
631
- "dataType": "text",
632
- "options": [
633
- { "value": "male", "label": "Masculino" },
634
- { "value": "female", "label": "Feminino" },
635
- { "value": "other", "label": "Outro" }
636
- ]
637
- }
638
- ]
639
- },
640
- {
641
- "title": "Lista de personagens",
642
- "componentType": "list",
643
- "id": "characterList",
644
- "guards": ["isAuthorized"],
645
- "dataSource": {
646
- "endpoint": "/characters",
647
- "paramType": "query",
648
- "hasAuthentication": true
649
- },
650
- "properties": [
651
- { "label": "Nome", "property": "characterName", "type": "title" },
652
- {
653
- "label": "Descrição",
654
- "property": "characterDescription",
655
- "type": "description",
656
- "isHtml": true
657
- }
658
- ],
659
- "callsToActionMenu": [
660
- {
661
- "label": "Editar",
662
- "icon": "pencil",
663
- "action": {
664
- "link": {
665
- "endpoint": "/character-form",
666
- "propertiesAsQueryParam": ["_id"]
667
- }
668
- }
669
- },
670
- {
671
- "label": "Excluir",
672
- "icon": "delete",
673
- "action": {
674
- "link": { "endpoint": "/character-list" },
675
- "request": {
676
- "endpoint": "/characters",
677
- "verb": "delete",
678
- "propertiesAsPathParam": ["_id"],
679
- "dialog": {
680
- "title": "Excluir projeto",
681
- "message": "Deseja realmente excluir essa projeto?"
682
- }
683
- }
684
- }
685
- }
686
- ]
687
- }
688
- ]
689
- }
690
- ],
691
- "styles": [
692
- {
693
- "themeName": "light",
694
- "main": {
695
- "headerHeight": "60px",
696
- "typography": { "fontFamily": "Arial, sans-serif", "fontSize": "16px" },
697
- "colors": {
698
- "primary": "#4F46E5",
699
- "primaryContrast": "#FFFFFF",
700
- "secondary": "#6B7280",
701
- "secondaryContrast": "#FFFFFF",
702
- "background": "#FFFFFF",
703
- "error": "#DC2626",
704
- "success": "#16A34A",
705
- "warning": "#D97706"
706
- },
707
- "shadows": { "boxShadow": "0 1px 3px rgba(0, 0, 0, 0.1)" },
708
- "borders": { "radius": "4px" },
709
- "components": {
710
- "input": {
711
- "text": "#111827",
712
- "background": "#F9FAFB",
713
- "border": "#D1D5DB",
714
- "borderRadius": "4px",
715
- "focusBorder": "#4F46E5",
716
- "placeholder": "#9CA3AF",
717
- "width": "248px"
718
- }
719
- },
720
- "spacing": "8px",
721
- "maxWidth": "1200px",
722
- "footerHeight": "60px"
723
- }
724
- }
725
- ]
726
- }
1
+ {"id":"movieBackoffice","title":"Movie Backoffice","description":"Sistema de gerenciamento para filmes e personagens.","flow":"backofficeOpenedAndPermissionsByComponent","businessPlan":{"businessValue":"Gerenciar e otimizar as operações do Movie.","targetMarket":"Empresas que utilizam o Movie para gerenciar sugestões e feedbacks.","benchmarkings":"Análise de sistemas de gerenciamento de feedbacks.","legalIssues":"Conformidade com leis de proteção de dados.","ethicalIssues":"Garantir a privacidade dos usuários.","afterSales":"Suporte contínuo e atualizações regulares.","monetization":"Assinaturas mensais para acesso ao sistema."},"frontend":{"framework":"svelte","uiKit":"flowbite"},"backend":{"framework":"nest","jwtSecret":"Kunl4t3kw1llN3v3rD13M0th3rFudg3r","database":{"provider":"mongodb","connectionString":"mongodb+srv://kunlatek:Kunl4t3kw1llN3v3rD132025@cluster0.b0pfr.mongodb.net/movie-v1","credentials":{"databaseName":"movie-v1","username":"kunlatek","password":"Kunl4t3kw1llN3v3rD132025","host":"cluster0.b0pfr.mongodb.net"}},"storage":{"provider":"gcs","credentials":{"clientEmail":"rapida-personal@rapida-personal-projects.iam.gserviceaccount.com","privateKey":"-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCDEQRUfKKxYUj\nVorX+aiEHhPRrrcNHVw40qq517wP7IgIp2UlA5uf0rV2cdn1njA9RMQxp6l7Qt+0\nBZg1JZM8l9Uv1SckRlkKST4k2B3MDOEl1riAPxIE/jBCUT9l2DCbir0Nu+CqGhGD\nUXOMpF0XWYL9GIBRo8Paf//yU0b86VBDfQGgnFkMKFq3bVDkPd8hQTBgTFT5F1Rh\nDcoUpAp/n3SYxkAK1V7Je+fnChF1DQPj8Nd5CLm4DsCM1B+HtaegsaE1ulXwhi1J\nlIFFGv49g0f2qOs3hytTPt0d8UpxFd9/Oq0tmcjuzK4bYzJdVZZPf+4xflHz+6R8\n2o7grTeDAgMBAAECggEABHdsz6s/tnMCdARHcN41w0i/8wke/IXK/CHZPSrakNFE\ndlKIEPiKyfx7Ic1QE4e/G4HsNCpkS8qHxKiGTt7dCz2BcjbpTjvyS7rQ298/nFVF\nj23oVEdfXk8NhFFDcNAvmjzwyhKjgrbT5V5oFvonjGSKj9HTDk4DMZHVrdm93g9k\nZ9XJBVeLh14/rkZLMDZ9DVjUMiQ6xElMH3IQD4MwEcul9eqM8bs2APgZlzzfO76m\nAuq20l4JqOcJJl8wzC7z12eNDNJrQNh2sHsT9zV5PabfNoQhnU6fDvKr0PG0PGRR\nS5PTDeiMY47rJVPgwxthSke3abtdgA9SNie8OqZl6QKBgQD+yFT+ndFYKvHg2WNi\ns0jK0QqFQB84LQtOX2YhQ0137mtSv0z7wO90e28dfUqsjax4DxPMp+AW0cC3SBEv\n2T8/rJrgzGucPt4Jzml5HYl2NgCkNAtHIJ1vtXJdX5d3WmYhH7cUTPmV6nMS8OlF\nheSyfudCiOo89phQf0pI6lhQKwKBgQDC+aOU2cxMVA5VH0txX0G9tPQjBvzY09ev\nVLGrxlmdAcQVXYCWdoESEfTv3E4JPklAz5B2/XnALxM5ewJgjoP6buOCJrQcgJNC\nSsG9Ll3zF4c+opFmaYTzcAY9HWHa4Pc+GAxFrrcPGzVBLjSrl7FPdykkPiBNxNJa\nnOzzrL4yCQKBgQC7b/pHjycx6/YiawuY0zjcLMnGmhPdqhXFRJ3IHtFhR/+g0qf6\nFkiTszNdyI0lQNz/PmhciaxsXUegDt7GCtdjKsKOWxVXz1BeeoJR3g8A7l2ub7NU\nUoRAaIaIdwjhf5nfCIwR3UdIqUCbUKzsvsIvJvlPk5Zv3yLTJbIqzmzGHQKBgBiQ\nnUSGwE+pk3i0DaxGBSFiqBO1sKuc3SLQ9+WdgvLeIxdSBX5vhcmCC6sgxZAykcYh\noKDtRKarB7AJSH5j1kr6J53hRHYG2QbUJl6wddPH1hlVIB6YEtEc/xw6FHcgOuZO\n31T0M0oq8mW47Zfk78kESWGwlh9WOe6CsPPugrQJAoGBAP3o8DqH1Pb7vlowsz78\n8fsCuydEJgsPSwHHqBveeUHBQLGSiGIIKRXWR1a13mWXQTqQkROZCwvVCMX6FHZZ\nKv3rzgsTkaaoqM0RVLcQSSDoyu2yP/JJv+VYsvMf2S3dUkDAeYDZFizPeFF42t92\n+MSId41OkBvJ/JvqsBWlWFYK\n-----END PRIVATE KEY-----\n","projectId":"rapida-personal-projects"},"publicBucketName":"rapida-public-files","privateBucketName":"rapida-private-files"},"logging":{"discordWebhookUrl":"https://discord.com/api/webhooks/1370095507959054429/Ay8pIM-sinbjsLMAAWGrRDFT-oyBD3xu7yB2Ke0Bx6RxpKN882taB4_tkD2xsdk8MirZ"},"email":{"smtpUser":"noreply.rapida@gmail.com","smtpPass":"ekgwxlazvjjllfxf","smtpFrom":"noreply@kunlatek.com"},"baseUrl":"http://localhost:5173"},"modules":[{"id":"movieModule","title":"Episódio","icon":"movie","components":[{"title":"Gerenciar filme","userStory":"Como um usuário autorizado, eu quero usar o formulário de gerenciamento de filmes para cadastrar e editar filmes, incluindo a foto, o nome, a descrição, a data de lançamento, a pontuação no IMDb e os gêneros associados. Quero também ter a opção de adicionar e gerenciar episódios, incluindo seus títulos, descrições, datas de lançamento e personagens relacionados. Isso me permite manter um registro completo e detalhado do conteúdo audiovisual no sistema.","componentType":"form","id":"movieForm","guards":"isAuthorized","elements":[{"type":"tab","id":"movieTab","tabs":[{"id":"mainTab","title":"Principal","elements":[{"label":"Foto","type":"file","dataType":"text","name":"pictureFile","storageConfig":{"fileNameStrategy":"uuid","path":"movies","visibility":"public"}},{"type":"input","dataType":"text","label":"Nome","name":"name","isRequired":true},{"type":"input","dataType":"wysiwyg","label":"Descrição","name":"description","isRequired":true},{"type":"input","dataType":"date","label":"Data de lançamento","name":"releaseDate","isRequired":true},{"type":"input","name":"imdbRating","label":"Pontuação do IMDb","dataType":"number","isRequired":true},{"type":"autocomplete","dataType":"text","label":"Gêneros","name":"movieGenres","optionsApi":{"endpoint":"/api/movies-genres","labelField":["name"],"valueField":"_id","paramsToFilter":["name"],"paramType":"query","relatedEntity":"MovieGenres"},"isMultiple":true,"isRequired":true},{"type":"input","name":"link1","label":"Link 1","dataType":"text","isRequired":true},{"type":"input","name":"link2","label":"Link 2","dataType":"text"},{"type":"input","name":"link3","label":"Link 3","dataType":"text"}]}]}],"contracts":[{"id":"movies","endpoint":"/movies","actions":["create","update","getById","get","delete"],"request":{"entity":"Movie","description":"Represents a movie or TV series in the system.","fields":[{"name":"id","dataType":"uniqueidentifier","isRequired":true,"isPrimaryKey":true},{"name":"pictureFile","dataType":"nvarchar","isRequired":false},{"name":"name","dataType":"nvarchar","isRequired":true},{"name":"description","dataType":"longtext","isRequired":true},{"name":"releaseDate","dataType":"date","isRequired":true},{"name":"imdbRating","dataType":"decimal","isRequired":true},{"name":"movieGenres","dataType":"uniqueidentifier","isRequired":true,"foreignKey":{"entity":"MovieGenre","connectionAttribute":"_id","relationship":"many-to-many"}},{"name":"link1","dataType":"nvarchar","isRequired":true},{"name":"link2","dataType":"nvarchar","isRequired":false},{"name":"link3","dataType":"nvarchar","isRequired":false}]}}],"flowChart":{"actors":[{"name":"Usuário","actionsWithElements":[{"verb":"create"},{"verb":"update"},{"verb":"get"},{"verb":"getById"},{"verb":"delete"}]}]}},{"componentType":"list","id":"movieList","title":"Lista de filmes","guards":["isAuthorized"],"dataSource":{"endpoint":"/movies","paramType":"query","hasAuthentication":true},"properties":[{"property":"pictureFile","type":"image","label":"Cartaz","dataType":"nvarchar"},{"property":"name","type":"title","label":"Nome","dataType":"nvarchar"},{"property":"releaseDate","type":"subtitle","label":"Data de lançamento","dataType":"datetime2"},{"property":"movieGenres.name","type":"subtitle","label":"Gênero","dataType":"nvarchar"},{"property":"description","type":"description","label":"Descrição","isHtml":true,"dataType":"longtext"}],"callsToActionMenu":[{"label":"Editar","icon":"pencil","action":{"link":{"endpoint":"/movie-form","propertiesAsQueryParam":["_id"]}}},{"label":"Excluir","icon":"delete","action":{"link":{"endpoint":"/movie-list"},"request":{"endpoint":"/movies","verb":"delete","propertiesAsPathParam":["_id"],"dialog":{"title":"Excluir conteúdo","message":"Deseja realmente excluir esse conteúdo?"}}}}],"contracts":[{"id":"movies","endpoint":"/movies","actions":["create","update","getById","get","delete"],"request":{"entity":"Movie","description":"Represents a movie or TV series in the system.","fields":[{"name":"id","dataType":"uniqueidentifier","isRequired":true,"isPrimaryKey":true},{"name":"pictureFile","dataType":"nvarchar","isRequired":false},{"name":"name","dataType":"nvarchar","isRequired":true},{"name":"description","dataType":"longtext","isRequired":true},{"name":"releaseDate","dataType":"datetime2","isRequired":true},{"name":"imdbRating","dataType":"float","isRequired":true},{"name":"movieGenres","dataType":"uniqueidentifier","isRequired":true,"foreignKey":{"entity":"MovieGenre","connectionAttribute":"_id","relationship":"many-to-many"}},{"name":"link1","dataType":"nvarchar","isRequired":true},{"name":"link2","dataType":"nvarchar","isRequired":false},{"name":"link3","dataType":"nvarchar","isRequired":false}]}}]},{"title":"Gerenciar gênero de filme","userStory":"Como um usuário autorizado, eu quero usar o formulário de gerenciamento de gênero de filme para criar e editar gêneros de filmes, fornecendo um nome e uma descrição para cada um. Isso me permite organizar e categorizar filmes de forma precisa no sistema.","componentType":"form","id":"movieGenreForm","guards":"isAuthorized","elements":[{"type":"input","dataType":"text","label":"Nome","name":"name","isRequired":true},{"type":"input","dataType":"wysiwyg","label":"Descrição","name":"description","isRequired":true}],"contracts":[{"id":"moviesGenres","endpoint":"/movie-genres","actions":["create","get","getById","update","delete"],"request":{"entity":"moviesGenres","description":"","fields":[{"name":"name","dataType":"text","isRequired":true,"maxSize":255},{"name":"description","dataType":"text","isRequired":true,"maxSize":255}]}}]},{"componentType":"list","id":"movieGenreList","title":"Lista de gêneros de filmes","guards":["isAuthorized"],"dataSource":{"endpoint":"/movies-genres","paramType":"query","hasAuthentication":true},"properties":[{"property":"name","type":"title","label":"Nome","dataType":"nvarchar"},{"property":"description","type":"description","label":"Descrição","isHtml":true,"dataType":"longtext"}],"callsToActionMenu":[{"label":"Editar","icon":"pencil","action":{"link":{"endpoint":"/movie-genre-form","propertiesAsQueryParam":["_id"]}}},{"label":"Excluir","icon":"delete","action":{"link":{"endpoint":"/movie-genre-list"},"request":{"endpoint":"/movies-genres","verb":"delete","propertiesAsPathParam":["_id"],"dialog":{"title":"Excluir conteúdo","message":"Deseja realmente excluir esse conteúdo?"}}}}],"contracts":[{"id":"moviesGenres","endpoint":"/movie-genres","actions":["create","get","getById","update","delete"],"request":{"entity":"moviesGenres","description":"","fields":[{"name":"name","dataType":"text","isRequired":true,"maxSize":255},{"name":"description","dataType":"text","isRequired":true,"maxSize":255}]}}]},{"title":"Gerenciar episódio","componentType":"form","id":"movieEpisodeForm","elements":[{"title":"Episódio","name":"episodes","type":"array","elements":[{"label":"Título do episódio","name":"episodeTitle","type":"input","dataType":"text","isRequired":true},{"label":"Descrição do episódio","name":"episodeDescription","type":"input","dataType":"wysiwyg"},{"label":"Data de lançamento do episódio","name":"episodeReleaseDate","type":"input","dataType":"date"},{"name":"charactersId","label":"Personagens no episódio","type":"autocomplete","dataType":"text","optionsApi":{"endpoint":"/characters","labelField":["characterName"],"valueField":"_id","paramsToFilter":["characterName"],"paramType":"query","relatedEntity":"Character"}}]}],"contracts":[{"id":"moviesEpisodes","endpoint":"/movies-episodes","actions":["create","get","getById","update","delete"],"request":{"entity":"MovieEpisode","description":"Represents an episode of a TV series or show.","fields":[{"name":"_id","dataType":"uniqueidentifier","isRequired":true,"isPrimaryKey":true},{"name":"movieId","dataType":"uniqueidentifier","isRequired":true,"foreignKey":{"entity":"Movie","connectionAttribute":"_id","relationship":"one-to-many"}},{"name":"title","dataType":"nvarchar","isRequired":true},{"name":"description","dataType":"longtext","isRequired":true},{"name":"releaseDate","dataType":"datetime2","isRequired":true},{"name":"characters","dataType":"uniqueidentifier","isRequired":false,"foreignKey":{"entity":"Character","connectionAttribute":"_id","relationship":"many-to-many"}}]}}]},{"componentType":"list","id":"movieEpisodeList","title":"Lista de episódios de filmes","guards":["isAuthorized"],"dataSource":{"endpoint":"/movies-episodes","paramType":"query","hasAuthentication":true},"properties":[{"property":"episodeTitle","type":"title","label":"Título","dataType":"nvarchar"},{"property":"episodeDescription","type":"description","label":"Descrição","isHtml":true,"dataType":"longtext"}],"callsToActionMenu":[{"label":"Editar","icon":"pencil","action":{"link":{"endpoint":"/movie-episode-form","propertiesAsQueryParam":["_id"]}}},{"label":"Excluir","icon":"delete","action":{"link":{"endpoint":"/movie-episode-list"},"request":{"endpoint":"/movies-episodes","verb":"delete","propertiesAsPathParam":["_id"],"dialog":{"title":"Excluir conteúdo","message":"Deseja realmente excluir esse conteúdo?"}}}}],"contracts":[{"id":"moviesEpisodes","endpoint":"/movies-episodes","actions":["create","get","getById","update","delete"],"request":{"entity":"MovieEpisode","description":"Represents an episode of a TV series or show.","fields":[{"name":"_id","dataType":"uniqueidentifier","isRequired":true,"isPrimaryKey":true},{"name":"movieId","dataType":"uniqueidentifier","isRequired":true,"foreignKey":{"entity":"Movie","connectionAttribute":"_id","relationship":"one-to-many"}},{"name":"title","dataType":"nvarchar","isRequired":true},{"name":"description","dataType":"longtext","isRequired":true},{"name":"releaseDate","dataType":"datetime2","isRequired":true},{"name":"characters","dataType":"uniqueidentifier","isRequired":false,"foreignKey":{"entity":"Character","connectionAttribute":"_id","relationship":"many-to-many"}}]}}]}]},{"id":"characterModule","title":"Personagem","icon":"character","components":[{"title":"Personagem","userStory":"Como um usuário autorizado, quero usar o formulário de personagem para criar e editar personagens, fornecendo um nome, uma descrição, um tipo (como \"protagonista\" ou \"antagonista\") e um gênero para cada um. Isso me permite manter um registro detalhado e organizado dos personagens no sistema.","componentType":"form","id":"characterForm","contracts":[{"id":"characters","endpoint":"/characters","actions":["create","get","getById","update","delete"],"request":{"entity":"characters","description":"Represents a character in a story or narrative.","fields":[{"name":"id","dataType":"uniqueidentifier","isRequired":true,"isPrimaryKey":true},{"name":"characterName","dataType":"nvarchar","isRequired":true},{"name":"characterImage","dataType":"nvarchar","isRequired":false},{"name":"characterDescription","dataType":"longtext","isRequired":false},{"name":"characterType","dataType":"nvarchar","enum":["protagonist","antagonist","hero","villain","sidekick","supporting"],"isRequired":false},{"name":"characterGender","dataType":"nvarchar","enum":["male","female","other"],"isRequired":false}]}}],"guards":"isAuthorized","elements":[{"type":"input","dataType":"text","label":"Nome do personagem","name":"characterName","isRequired":true},{"label":"Foto do personagem","type":"file","dataType":"text","name":"characterImage","storageConfig":{"fileNameStrategy":"uuid","path":"characters","visibility":"public"}},{"type":"input","dataType":"wysiwyg","label":"Descrição do personagem","name":"characterDescription"},{"type":"select","label":"Tipo de personagem","name":"characterType","dataType":"text","options":[{"value":"protagonist","label":"Protagonista"},{"value":"antagonist","label":"Antagonista"},{"value":"hero","label":"Herói"},{"value":"villain","label":"Vilão"},{"value":"sidekick","label":"Ajudante"},{"value":"supporting","label":"Secundário"}]},{"type":"select","label":"Gênero do personagem","name":"characterGender","dataType":"text","options":[{"value":"male","label":"Masculino"},{"value":"female","label":"Feminino"},{"value":"other","label":"Outro"}]}]},{"title":"Lista de personagens","componentType":"list","id":"characterList","guards":["isAuthorized"],"dataSource":{"endpoint":"/characters","paramType":"query","hasAuthentication":true},"properties":[{"label":"Nome","property":"characterName","type":"title","dataType":"nvarchar"},{"label":"Descrição","property":"characterDescription","type":"description","isHtml":true,"dataType":"longtext"}],"callsToActionMenu":[{"label":"Editar","icon":"pencil","action":{"link":{"endpoint":"/character-form","propertiesAsQueryParam":["_id"]}}},{"label":"Excluir","icon":"delete","action":{"link":{"endpoint":"/character-list"},"request":{"endpoint":"/characters","verb":"delete","propertiesAsPathParam":["_id"],"dialog":{"title":"Excluir projeto","message":"Deseja realmente excluir essa projeto?"}}}}],"contracts":[{"id":"characters","endpoint":"/characters","actions":["get","getById"],"request":{"entity":"characters","description":"Represents a character in a story or narrative.","fields":[{"name":"id","dataType":"uniqueidentifier","isRequired":true,"isPrimaryKey":true},{"name":"characterName","dataType":"nvarchar","isRequired":true},{"name":"characterImage","dataType":"nvarchar","isRequired":false},{"name":"characterDescription","dataType":"longtext","isRequired":false},{"name":"characterType","dataType":"nvarchar","enum":["protagonist","antagonist","hero","villain","sidekick","supporting"],"isRequired":false},{"name":"characterGender","dataType":"nvarchar","enum":["male","female","other"],"isRequired":false}]}}]}]}],"styles":[{"themeName":"light","main":{"headerHeight":"60px","typography":{"fontFamily":"Arial, sans-serif","fontSize":"16px"},"colors":{"primary":"#4F46E5","primaryContrast":"#FFFFFF","secondary":"#6B7280","secondaryContrast":"#FFFFFF","background":"#FFFFFF","error":"#DC2626","success":"#16A34A","warning":"#D97706"},"shadows":{"boxShadow":"0 1px 3px rgba(0, 0, 0, 0.1)"},"borders":{"radius":"4px"},"components":{"input":{"text":"#111827","background":"#F9FAFB","border":"#D1D5DB","borderRadius":"4px","focusBorder":"#4F46E5","placeholder":"#9CA3AF","width":"248px"}},"spacing":"8px","maxWidth":"1200px","footerHeight":"60px"}}]}