@syntay/fastay 0.1.2 → 0.1.4
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 +98 -45
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
Perfeito! Aqui está a versão completa do README traduzida para português, mantendo o estilo e explicações detalhadas:
|
|
2
|
-
|
|
3
1
|
# 🚀 Fastay.js
|
|
4
2
|
|
|
5
3
|
Fastay é um framework moderno para backend construído sobre o **Express.js**, projetado para criar APIs de forma rápida, previsível e amigável para desenvolvedores.
|
|
@@ -29,24 +27,32 @@ O maior ponto forte é **rapidez e simplicidade**, ideal para projetos de backen
|
|
|
29
27
|
|
|
30
28
|
```bash
|
|
31
29
|
npx fastay create-app minha-app
|
|
30
|
+
```
|
|
32
31
|
|
|
33
32
|
Exemplo do CLI:
|
|
34
|
-
|
|
33
|
+
```bash
|
|
35
34
|
🚀 Fastay — Create a modern backend project
|
|
36
35
|
✔ Usar TypeScript? › Sim
|
|
37
36
|
✔ Escolha um ORM: › Nenhum
|
|
38
|
-
|
|
37
|
+
````
|
|
39
38
|
2. Entrar no projeto
|
|
40
|
-
|
|
39
|
+
```bash
|
|
41
40
|
cd minha-app
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
```
|
|
42
|
+
3. Iniciar servidor em desenvolvimento
|
|
43
|
+
```bash
|
|
44
|
+
npm run dev
|
|
45
|
+
```
|
|
46
|
+
4. Modo watch com reload automático
|
|
47
|
+
```bash
|
|
48
|
+
npm run dev:watch
|
|
49
|
+
```
|
|
44
50
|
|
|
45
51
|
|
|
46
52
|
---
|
|
47
53
|
|
|
48
|
-
Estrutura do Projeto
|
|
49
|
-
|
|
54
|
+
**Estrutura do Projeto**
|
|
55
|
+
```bash
|
|
50
56
|
minha-app/
|
|
51
57
|
│
|
|
52
58
|
├── dist/ # Código compilado para produção
|
|
@@ -78,29 +84,30 @@ minha-app/
|
|
|
78
84
|
├── package.json
|
|
79
85
|
├── tsconfig.json
|
|
80
86
|
└── eslint.config.mjs
|
|
87
|
+
```
|
|
81
88
|
|
|
82
|
-
Explicação das pastas principais
|
|
89
|
+
**Explicação das pastas principais:**
|
|
83
90
|
|
|
84
|
-
src/api — Cada pasta representa um grupo de rotas. Todo route.ts dentro é registrado automaticamente.
|
|
91
|
+
`src/api` — Cada pasta representa um grupo de rotas. Todo route.ts dentro é registrado automaticamente.
|
|
85
92
|
|
|
86
|
-
src/middlewares — Middlewares personalizados, carregados automaticamente ou usados via createMiddleware.
|
|
93
|
+
`src/middlewares` — Middlewares personalizados, carregados automaticamente ou usados via createMiddleware.
|
|
87
94
|
|
|
88
|
-
src/services — Mantém a lógica de negócio separada das rotas (Opcional porém recomendado).
|
|
95
|
+
`src/services` — Mantém a lógica de negócio separada das rotas (Opcional porém recomendado).
|
|
89
96
|
|
|
90
|
-
src/utils — Helpers genéricos.
|
|
97
|
+
`src/utils` — Helpers genéricos.
|
|
91
98
|
|
|
92
|
-
src/index.ts — Bootstrap principal da aplicação com createApp.
|
|
99
|
+
`src/index.ts` — Bootstrap principal da aplicação com createApp.
|
|
93
100
|
|
|
94
|
-
dist
|
|
101
|
+
`dist/` — Código compilado para produção.
|
|
95
102
|
|
|
96
|
-
fastay.config.json — Configuração do build, compilador e rotas.
|
|
103
|
+
`fastay.config.json` — Configuração do build, compilador e rotas.
|
|
97
104
|
|
|
98
105
|
|
|
99
106
|
|
|
100
107
|
---
|
|
101
108
|
|
|
102
|
-
⚡ src/index.ts
|
|
103
|
-
|
|
109
|
+
⚡ `src/index.ts`
|
|
110
|
+
```bash
|
|
104
111
|
import { createApp } from '@syntay/fastay';
|
|
105
112
|
|
|
106
113
|
const port = 5555;
|
|
@@ -112,16 +119,17 @@ void (async () => {
|
|
|
112
119
|
port: port
|
|
113
120
|
});
|
|
114
121
|
})();
|
|
115
|
-
|
|
122
|
+
```
|
|
116
123
|
|
|
117
124
|
---
|
|
118
125
|
|
|
119
|
-
Opções do createApp
|
|
126
|
+
**Opções do `createApp`**
|
|
120
127
|
|
|
121
128
|
createApp recebe um único objeto para configurar totalmente a aplicação Fastay.
|
|
122
129
|
|
|
123
|
-
|
|
124
|
-
apiDir?: string; // Diretório contendo as rotas da API
|
|
130
|
+
```bash
|
|
131
|
+
apiDir?: string; // Diretório contendo as rotas da API
|
|
132
|
+
(default: 'src/api')
|
|
125
133
|
baseRoute?: string; // Caminho base para todas as rotas (default: '/api')
|
|
126
134
|
port?: number; // Porta do servidor (default: 5000)
|
|
127
135
|
|
|
@@ -136,49 +144,61 @@ createApp recebe um único objeto para configurar totalmente a aplicação Fasta
|
|
|
136
144
|
trustProxy?: boolean; // Considerar headers de proxy reverso
|
|
137
145
|
locals?: Record<string, any>; // Variáveis globais para res.locals
|
|
138
146
|
}
|
|
147
|
+
```
|
|
139
148
|
|
|
140
|
-
Exemplos
|
|
149
|
+
**Exemplos:**
|
|
141
150
|
|
|
142
151
|
Aplicar middlewares globais
|
|
143
152
|
|
|
153
|
+
```bash
|
|
144
154
|
expressOptions: {
|
|
145
155
|
middlewares: [cors(), helmet()],
|
|
146
156
|
}
|
|
157
|
+
```
|
|
147
158
|
|
|
148
159
|
Configurar body parsers
|
|
149
160
|
|
|
161
|
+
```bash
|
|
150
162
|
expressOptions: {
|
|
151
163
|
jsonOptions: { limit: '10mb' },
|
|
152
|
-
urlencodedOptions: { extended: true
|
|
164
|
+
urlencodedOptions: { extended: true },
|
|
153
165
|
}
|
|
166
|
+
```
|
|
154
167
|
|
|
155
168
|
Servir arquivos estáticos
|
|
156
169
|
|
|
170
|
+
```bash
|
|
157
171
|
expressOptions: {
|
|
158
172
|
static: { path: 'public', options: { maxAge: 3600000 } }
|
|
159
173
|
}
|
|
174
|
+
```
|
|
160
175
|
|
|
161
176
|
Configurar views e locals
|
|
162
177
|
|
|
178
|
+
```bash
|
|
163
179
|
expressOptions: {
|
|
164
180
|
views: { engine: 'pug', dir: 'views' },
|
|
165
181
|
locals: { siteName: 'Fastay' }
|
|
166
182
|
}
|
|
183
|
+
```
|
|
167
184
|
|
|
168
185
|
Handler de erro customizado
|
|
169
186
|
|
|
187
|
+
```bash
|
|
170
188
|
expressOptions: {
|
|
171
189
|
errorHandler: (err, req, res, next) => {
|
|
172
190
|
console.error(err);
|
|
173
191
|
res.status(500).json({ message: 'Algo deu errado!' });
|
|
174
192
|
}
|
|
175
193
|
}
|
|
194
|
+
```
|
|
176
195
|
|
|
177
196
|
|
|
178
197
|
---
|
|
179
198
|
|
|
180
|
-
fastay.config.json
|
|
199
|
+
`fastay.config.json`
|
|
181
200
|
|
|
201
|
+
```bash
|
|
182
202
|
{
|
|
183
203
|
"entry": "src/index.ts",
|
|
184
204
|
"outDir": "dist",
|
|
@@ -188,23 +208,25 @@ fastay.config.json
|
|
|
188
208
|
"target": "es2020"
|
|
189
209
|
}
|
|
190
210
|
}
|
|
211
|
+
```
|
|
191
212
|
|
|
192
|
-
entry — Arquivo principal da aplicação.
|
|
213
|
+
`entry` — Arquivo principal da aplicação.
|
|
193
214
|
|
|
194
|
-
outDir — Diretório de saída do código compilado.
|
|
215
|
+
`outDir` — Diretório de saída do código compilado.
|
|
195
216
|
|
|
196
|
-
routesDir — Diretório opcional para rotas (default src/api).
|
|
217
|
+
`routesDir` — Diretório opcional para rotas (default src/api).
|
|
197
218
|
|
|
198
|
-
compiler — Opções para compilação TypeScript/ESBuild.
|
|
219
|
+
`compiler` — Opções para compilação TypeScript/ESBuild.
|
|
199
220
|
|
|
200
221
|
|
|
201
222
|
|
|
202
223
|
---
|
|
203
224
|
|
|
204
|
-
Rotas da API
|
|
225
|
+
**Rotas da API**
|
|
205
226
|
|
|
206
227
|
Roteamento baseado em arquivos com sintaxe limpa:
|
|
207
228
|
|
|
229
|
+
```bash
|
|
208
230
|
import { Request } from '@syntay/fastay';
|
|
209
231
|
|
|
210
232
|
export async function GET() {
|
|
@@ -214,6 +236,7 @@ export async function GET() {
|
|
|
214
236
|
export async function POST(req: Request) {
|
|
215
237
|
return { message: 'Hello World' };
|
|
216
238
|
}
|
|
239
|
+
```
|
|
217
240
|
|
|
218
241
|
Cada método HTTP é exportado como função.
|
|
219
242
|
|
|
@@ -223,9 +246,9 @@ Tipado e compatível com TypeScript.
|
|
|
223
246
|
|
|
224
247
|
Suporta middlewares Express.
|
|
225
248
|
|
|
226
|
-
|
|
249
|
+
**Por que é melhor que Express puro:**
|
|
227
250
|
|
|
228
|
-
Sem boilerplate: não precisa chamar app.get(...) ou app.post(...) manualmente.
|
|
251
|
+
Sem boilerplate: não precisa chamar `app.get(...)` ou `app.post(...)` manualmente.
|
|
229
252
|
|
|
230
253
|
Separação limpa dos arquivos de rota: cada rota fica em um arquivo route.ts dentro de api ou outro diretório.
|
|
231
254
|
|
|
@@ -234,8 +257,9 @@ Auto-descoberta de rotas: Fastay detecta automaticamente os arquivos de rota e r
|
|
|
234
257
|
Fácil manutenção de projetos grandes: sem necessidade de registrar manualmente centenas de rotas, mantendo organização clara.
|
|
235
258
|
|
|
236
259
|
|
|
237
|
-
1
|
|
260
|
+
**1. Express.js**
|
|
238
261
|
|
|
262
|
+
```bash
|
|
239
263
|
import express from 'express';
|
|
240
264
|
|
|
241
265
|
const app = express();
|
|
@@ -257,6 +281,7 @@ app.use('/api/auth', (req, res, next) => {
|
|
|
257
281
|
});
|
|
258
282
|
|
|
259
283
|
app.listen(5000, () => console.log('Server running on port 5000'));
|
|
284
|
+
```
|
|
260
285
|
|
|
261
286
|
Pontos negativos do Express puro:
|
|
262
287
|
|
|
@@ -270,8 +295,9 @@ Escalabilidade de grandes projetos fica complicada.
|
|
|
270
295
|
|
|
271
296
|
---
|
|
272
297
|
|
|
273
|
-
2
|
|
298
|
+
**2. NestJS**
|
|
274
299
|
|
|
300
|
+
```bash
|
|
275
301
|
import { Controller, Get, Post, Body } from '@nestjs/common';
|
|
276
302
|
|
|
277
303
|
@Controller('api/hello')
|
|
@@ -286,8 +312,9 @@ export class HelloController {
|
|
|
286
312
|
return { message: 'Hello POST World', body };
|
|
287
313
|
}
|
|
288
314
|
}
|
|
315
|
+
```
|
|
289
316
|
|
|
290
|
-
Características do NestJS
|
|
317
|
+
**Características do NestJS:**
|
|
291
318
|
|
|
292
319
|
Baseado em decorators e classes.
|
|
293
320
|
|
|
@@ -301,8 +328,9 @@ Exige aprendizado de decorators, módulos e injeção de dependências.
|
|
|
301
328
|
|
|
302
329
|
---
|
|
303
330
|
|
|
304
|
-
3
|
|
331
|
+
**3. Fastay.js**
|
|
305
332
|
|
|
333
|
+
```bash
|
|
306
334
|
import { Request } from '@syntay/fastay';
|
|
307
335
|
|
|
308
336
|
// GET /api/hello
|
|
@@ -314,8 +342,9 @@ export async function GET() {
|
|
|
314
342
|
export async function POST(req: Request) {
|
|
315
343
|
return { message: 'Hello POST World' };
|
|
316
344
|
}
|
|
345
|
+
```
|
|
317
346
|
|
|
318
|
-
Características do Fastay
|
|
347
|
+
**Características do Fastay:**
|
|
319
348
|
|
|
320
349
|
Baseado em arquivos, cada método HTTP é exportado.
|
|
321
350
|
|
|
@@ -336,19 +365,22 @@ Tipo-safe, clean e simples.
|
|
|
336
365
|
|
|
337
366
|
---
|
|
338
367
|
|
|
339
|
-
Middlewares
|
|
368
|
+
**Middlewares**
|
|
340
369
|
|
|
341
370
|
Fastay permite middlewares auto-carregados e via createMiddleware:
|
|
342
371
|
|
|
372
|
+
```bash
|
|
343
373
|
import { Request, Response, Next } from '@syntay/fastay';
|
|
344
374
|
|
|
345
375
|
export async function auth(req: Request, _res: Response, next: Next) {
|
|
346
376
|
// Lógica de autenticação
|
|
347
377
|
next();
|
|
348
378
|
}
|
|
379
|
+
```
|
|
349
380
|
|
|
350
|
-
E crie um arquivo middleware.ts dentro da pasta src/middleware e use a função createMiddleware para configurar o seu middleware:
|
|
381
|
+
E crie um arquivo middleware.ts dentro da pasta `src/middleware` e use a função createMiddleware para configurar o seu middleware:
|
|
351
382
|
|
|
383
|
+
```bash
|
|
352
384
|
import { createMiddleware } from '@syntay/fastay';
|
|
353
385
|
import { auth } from './auth';
|
|
354
386
|
import { logger } from './logger';
|
|
@@ -357,18 +389,18 @@ export const middleware = createMiddleware({
|
|
|
357
389
|
'/auth': [auth],
|
|
358
390
|
'/admin': [logger],
|
|
359
391
|
});
|
|
360
|
-
|
|
392
|
+
```
|
|
361
393
|
|
|
362
394
|
---
|
|
363
395
|
|
|
364
|
-
|
|
396
|
+
**Fluxo de Request**
|
|
365
397
|
|
|
366
|
-
Cliente → Rota Fastay → Middleware → Handler da Rota → Service → Response
|
|
398
|
+
*Cliente → Rota Fastay → Middleware → Handler da Rota → Service → Response*
|
|
367
399
|
|
|
368
400
|
|
|
369
401
|
---
|
|
370
402
|
|
|
371
|
-
Conclusão
|
|
403
|
+
**Conclusão**
|
|
372
404
|
|
|
373
405
|
Fastay.js é um framework backend leve e TypeScript-first que:
|
|
374
406
|
|
|
@@ -382,4 +414,25 @@ Reduz boilerplate e aumenta a manutenção.
|
|
|
382
414
|
|
|
383
415
|
|
|
384
416
|
Ideal para desenvolvedores que querem estrutura sem complicação.
|
|
385
|
-
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## 🔹 Contribuição
|
|
421
|
+
|
|
422
|
+
Contribuições são bem-vindas!
|
|
423
|
+
|
|
424
|
+
1. Faça um fork do projeto.
|
|
425
|
+
2. Crie uma branch (`git checkout -b minha-feature`).
|
|
426
|
+
3. Commit suas mudanças (`git commit -am 'Adiciona nova feature'`).
|
|
427
|
+
4. Push para a branch (`git push origin minha-feature`).
|
|
428
|
+
5. Abra um Pull Request.
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## 🔹 Licença
|
|
433
|
+
|
|
434
|
+
MIT © Syntay Team
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
|