rapida-partner 1.0.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/README.md +85 -0
- package/index.ts +13 -0
- package/package.json +27 -0
- package/rapidaObject.json +3024 -0
- package/src/constants/options/agendaStatus.ts +3 -0
- package/src/constants/options/citiesFromBrazil.ts +27852 -0
- package/src/constants/options/countriesFromEarth.ts +1761 -0
- package/src/constants/options/currencies.ts +142 -0
- package/src/constants/options/eventJobs.ts +94 -0
- package/src/constants/options/events.ts +22 -0
- package/src/constants/options/hours.ts +26 -0
- package/src/constants/options/languages.ts +34 -0
- package/src/constants/options/statesFromBrazil.ts +29 -0
- package/src/controllers/ts_project_to_json_project.ts +17 -0
- package/src/controllers/validate-project-json-schema.ts +11 -0
- package/src/examples/components/forms/character.form.ts +92 -0
- package/src/examples/components/forms/company.form.ts +648 -0
- package/src/examples/components/forms/movie.form.ts +205 -0
- package/src/examples/components/forms/movieGenre.form.ts +43 -0
- package/src/examples/components/forms/person.form.ts +474 -0
- package/src/examples/components/lists/character.list.ts +47 -0
- package/src/examples/components/lists/company.list.ts +49 -0
- package/src/examples/components/lists/movie.list.ts +60 -0
- package/src/examples/components/lists/movieGenre.list.ts +51 -0
- package/src/examples/components/lists/person.list.ts +50 -0
- package/src/examples/modules/character.ts +13 -0
- package/src/examples/modules/company.ts +13 -0
- package/src/examples/modules/movie.ts +17 -0
- package/src/examples/modules/person.ts +13 -0
- package/src/examples/projects/movieBackoffice.ts +110 -0
- package/src/interfaces/backend-framework-structure.interface.ts +44 -0
- package/src/interfaces/data-card.interface.ts +102 -0
- package/src/interfaces/data-chart.interface.ts +84 -0
- package/src/interfaces/data-detail.interface.ts +123 -0
- package/src/interfaces/data-grid.interface.ts +48 -0
- package/src/interfaces/data-table.interface.ts +84 -0
- package/src/interfaces/form-array.interface.ts +14 -0
- package/src/interfaces/form-autocomplete.interface.ts +79 -0
- package/src/interfaces/form-button.interface.ts +34 -0
- package/src/interfaces/form-condition.interface.ts +26 -0
- package/src/interfaces/form-datepicker.interface.ts +18 -0
- package/src/interfaces/form-fieldset.interface.ts +13 -0
- package/src/interfaces/form-file.interface.ts +57 -0
- package/src/interfaces/form-input.interface.ts +69 -0
- package/src/interfaces/form-numeric.interface.ts +22 -0
- package/src/interfaces/form-pattern.interface.ts +16 -0
- package/src/interfaces/form-radiogroup.interface.ts +21 -0
- package/src/interfaces/form-select.interface.ts +60 -0
- package/src/interfaces/form-switch.interface.ts +15 -0
- package/src/interfaces/form-tab.interface.ts +17 -0
- package/src/interfaces/form.interface.ts +73 -0
- package/src/interfaces/frontend-framework-structure.interface.ts +39 -0
- package/src/interfaces/layout-dashboard.interface.ts +52 -0
- package/src/interfaces/layout-panel.interface.ts +45 -0
- package/src/interfaces/list.interface.ts +50 -0
- package/src/interfaces/project-backend.interface.ts +48 -0
- package/src/interfaces/project-style.interface.ts +129 -0
- package/src/interfaces/project.interface.ts +79 -0
- package/src/interfaces/yaml-template-skeleton.interface.ts +35 -0
- package/src/schemas/backend-framework-structure.schema.json +194 -0
- package/src/schemas/backend.ref.json +77 -0
- package/src/schemas/bdd-and-e2e-narratives.ref.json +57 -0
- package/src/schemas/bdd-and-e2e.json +36 -0
- package/src/schemas/business-plan.ref.json +25 -0
- package/src/schemas/business-rules.ref.json +34 -0
- package/src/schemas/component-one-of.ref.json +15 -0
- package/src/schemas/dashboard.ref.json +111 -0
- package/src/schemas/data-card.ref.json +245 -0
- package/src/schemas/data-chart.ref.json +168 -0
- package/src/schemas/data-detail.ref.json +297 -0
- package/src/schemas/data-grid.ref.json +101 -0
- package/src/schemas/data-table.ref.json +181 -0
- package/src/schemas/external-application.ref.json +97 -0
- package/src/schemas/form-array.ref.json +35 -0
- package/src/schemas/form-autocomplete-options-api.ref.json +53 -0
- package/src/schemas/form-autocomplete.ref.json +204 -0
- package/src/schemas/form-button.ref.json +88 -0
- package/src/schemas/form-common-api-request.ref.json +29 -0
- package/src/schemas/form-common-filters-from-other-form-fields.ref.json +22 -0
- package/src/schemas/form-common-form-fields-filled-by-api-response.ref.json +28 -0
- package/src/schemas/form-condition.ref.json +70 -0
- package/src/schemas/form-datepicker.ref.json +50 -0
- package/src/schemas/form-fieldset.ref.json +28 -0
- package/src/schemas/form-file.ref.json +115 -0
- package/src/schemas/form-input.ref.json +105 -0
- package/src/schemas/form-numeric.ref.json +60 -0
- package/src/schemas/form-one-of.ref.json +22 -0
- package/src/schemas/form-pattern.ref.json +42 -0
- package/src/schemas/form-radiogroup.ref.json +64 -0
- package/src/schemas/form-select.ref.json +123 -0
- package/src/schemas/form-switch.ref.json +39 -0
- package/src/schemas/form-tab.ref.json +50 -0
- package/src/schemas/form.ref.json +107 -0
- package/src/schemas/frontend-framework-structure.schema.json +178 -0
- package/src/schemas/frontend.ref.json +30 -0
- package/src/schemas/list.ref.json +196 -0
- package/src/schemas/module.ref.json +39 -0
- package/src/schemas/panel.ref.json +127 -0
- package/src/schemas/project.schema.json +39 -0
- package/src/schemas/todo.ref.json +10 -0
- package/src/utils/email.ts +56 -0
- package/src/utils/env.ts +9 -0
- package/src/utils/file.ts +139 -0
- package/src/utils/json.ts +100 -0
- package/src/utils/path.ts +51 -0
- package/src/utils/rapida-project.ts +17 -0
- package/tsconfig.json +27 -0
package/README.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Projeto Rapida Partner
|
|
2
|
+
|
|
3
|
+
Este repositório não é um sistema de gerenciamento de filmes e personagens por si só, mas sim a ferramenta `rapida-partner`, que atua como uma ponte entre a idealização de um projeto de software e sua implementação técnica. Seu objetivo principal é traduzir a lógica de negócio e os requisitos de engenharia em um objeto JSON unificado, servindo como um "mapa" detalhado para a criação de qualquer projeto.
|
|
4
|
+
|
|
5
|
+
O "Movie Backoffice" é apenas um exemplo prático, mostrando como as interfaces do `rapida-partner` podem ser utilizadas para descrever um sistema completo. Ele detalha desde o plano de negócios e as regras de negócio até a estrutura do frontend e backend, além de definir módulos e componentes como formulários e listas.
|
|
6
|
+
|
|
7
|
+
## Visão Geral do Projeto de Exemplo
|
|
8
|
+
|
|
9
|
+
O projeto `Movie Backoffice` demonstra o uso do `rapida-partner` para um sistema de gerenciamento de filmes e personagens. Ele foi idealizado para gerenciar e otimizar operações, com um plano de negócios que inclui valor de negócio, mercado-alvo, análise de concorrentes, questões legais, éticas e estratégia de monetização.
|
|
10
|
+
|
|
11
|
+
A arquitetura técnica é definida da seguinte forma:
|
|
12
|
+
|
|
13
|
+
- **Frontend**: Svelte com Flowbite UI Kit.
|
|
14
|
+
|
|
15
|
+
- **Backend**: NestJS com banco de dados MongoDB.
|
|
16
|
+
|
|
17
|
+
- **Fluxo de Autenticação**: `permeson`.
|
|
18
|
+
|
|
19
|
+
- **Módulos**: `personModule`, `companyModule`, `movieModule`, e `characterModule`.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## Como Usar o `rapida-partner`
|
|
23
|
+
|
|
24
|
+
### 1. Instalação e Configuração
|
|
25
|
+
|
|
26
|
+
Este projeto utiliza **Bun** como runtime e gerenciador de pacotes.
|
|
27
|
+
|
|
28
|
+
1. **Clone o repositório:**
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
git clone [URL_DO_REPOSITORIO]
|
|
32
|
+
cd rapida-partner
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
1. **Instale as dependências:**
|
|
36
|
+
```bash
|
|
37
|
+
bun install
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
3. **Variáveis de Ambiente:** Crie um arquivo `.env` a partir do `env.example` para configurar variáveis sensíveis.
|
|
41
|
+
```
|
|
42
|
+
ROOT_PATH=/path/to/rapida-partner
|
|
43
|
+
TERMINAL_PASSWORD=t3rm1n4lP455w0rd
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
As configurações de backend, como `database`, `storage`, `logging` e `email`, são definidas diretamente no objeto do projeto TypeScript (`movieBackoffice.ts`).
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### 2. Gerando o Mapa do Projeto (JSON)
|
|
50
|
+
|
|
51
|
+
O coração do `rapida-partner` é a capacidade de converter uma representação de projeto em TypeScript para um arquivo JSON. Isso é feito pelo script `index.ts`.
|
|
52
|
+
|
|
53
|
+
Para gerar o `rapidaObject.json` a partir do `movieBackoffice.ts`, execute:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bun run index.ts
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Este comando executa a função `tsProjectToJsonProject`, que serializa o objeto `movieBackoffice` para JSON e salva o resultado no arquivo `rapidaObject.json`. Em seguida, o arquivo JSON é validado contra o esquema `project.schema.json` para garantir que a estrutura está correta.
|
|
60
|
+
|
|
61
|
+
### 3. Entendendo as Interfaces
|
|
62
|
+
|
|
63
|
+
Para criar seu próprio "mapa" de projeto, você deve se basear nas interfaces TypeScript disponíveis na pasta `src/interfaces/`. Elas definem a estrutura de cada componente e regra de negócio que você pode descrever.
|
|
64
|
+
|
|
65
|
+
- `project.interface.ts`: Define a estrutura de um projeto, incluindo plano de negócios, regras de negócio e módulos.
|
|
66
|
+
|
|
67
|
+
- `project-backend.interface.ts`: Detalha as configurações de backend (framework, banco de dados, armazenamento, etc.).
|
|
68
|
+
|
|
69
|
+
- `form.interface.ts`, `list.interface.ts`, `data-table.interface.ts`, etc.: Definem os tipos de componentes de UI e suas propriedades, como campos de formulário, listas de dados e tabelas.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
Ao criar um novo objeto de projeto, importe e utilize essas interfaces para garantir a conformidade com a estrutura esperada pelo sistema de validação.
|
|
73
|
+
|
|
74
|
+
### 4. Como o "Mapa" é Validado
|
|
75
|
+
|
|
76
|
+
A validação do objeto JSON é crucial para garantir a integridade do projeto. O script `index.ts` usa o utilitário `validateProjectJson` para isso.
|
|
77
|
+
|
|
78
|
+
- Ele carrega o esquema JSON (`project.schema.json`) e todos os esquemas de referência (`.ref.json`).
|
|
79
|
+
|
|
80
|
+
- Em seguida, ele compila e valida o `rapidaObject.json` em relação a esse esquema.
|
|
81
|
+
|
|
82
|
+
- Se a validação falhar, os erros são exibidos no console, permitindo que você identifique e corrija rapidamente as inconsistências.
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
Essa abordagem garante que a descrição do projeto é tecnicamente sólida e coerente, facilitando a próxima etapa do processo de desenvolvimento.
|
package/index.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { tsProjectToJsonProject } from './src/controllers/ts_project_to_json_project';
|
|
2
|
+
import { movieBackoffice } from './src/examples/projects/movieBackoffice';
|
|
3
|
+
import { validateProjectJson } from './src/utils/json';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* ts to json
|
|
7
|
+
*/
|
|
8
|
+
const tsToJson = tsProjectToJsonProject(movieBackoffice);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* validate project json schema
|
|
12
|
+
**/
|
|
13
|
+
validateProjectJson(tsToJson, 'project');
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "rapida-partner",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"module": "index.ts",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist/",
|
|
8
|
+
"src/",
|
|
9
|
+
"index.ts",
|
|
10
|
+
"rapidaObject.json",
|
|
11
|
+
"tsconfig.json"
|
|
12
|
+
],
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@types/bun": "latest"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"typescript": "^5.0.0"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@types/nodemailer": "^6.4.15",
|
|
21
|
+
"ajv": "^8.16.0",
|
|
22
|
+
"ajv-formats": "^3.0.1",
|
|
23
|
+
"dotenv": "^16.4.5",
|
|
24
|
+
"nodemailer": "^6.9.14",
|
|
25
|
+
"object-to-json": "^0.0.5"
|
|
26
|
+
}
|
|
27
|
+
}
|