plazercli 1.0.0 → 3.1.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 CHANGED
@@ -1,7 +1,8 @@
1
1
  <p align="center">
2
- <h1 align="center">PlazerCLI</h1>
2
+ <h1 align="center">PlazerCLI v3.1</h1>
3
3
  <p align="center">
4
- Gerador de projetos fullstack com auto-configuracao completa.<br/>
4
+ Gerador de projetos fullstack SaaS prontos para producao.<br/>
5
+ <strong>106+ integracoes</strong> · <strong>12 presets</strong> · <strong>Liz AI Agent</strong><br/>
5
6
  Responda as perguntas e a <strong>Liz</strong> monta tudo pra voce.
6
7
  </p>
7
8
  </p>
@@ -9,9 +10,12 @@
9
10
  <p align="center">
10
11
  <a href="#quick-start">Quick Start</a> |
11
12
  <a href="#features">Features</a> |
13
+ <a href="#presets">Presets</a> |
12
14
  <a href="#stack-suportada">Stack</a> |
15
+ <a href="#cli-flags">CLI Flags</a> |
13
16
  <a href="#liz---ai-agent">Liz AI</a> |
14
- <a href="#como-funciona">Como Funciona</a>
17
+ <a href="#como-funciona">Como Funciona</a> |
18
+ <a href="https://pablocarss.github.io/plazercli/">Docs</a>
15
19
  </p>
16
20
 
17
21
  ---
@@ -19,7 +23,14 @@
19
23
  ## Quick Start
20
24
 
21
25
  ```bash
26
+ # Modo interativo (8 steps organizados)
22
27
  npx plazercli
28
+
29
+ # Preset rapido
30
+ npx plazercli --preset saas-starter
31
+
32
+ # Zero perguntas com defaults inteligentes
33
+ npx plazercli --yes --name meu-saas
23
34
  ```
24
35
 
25
36
  Ou instale globalmente:
@@ -36,20 +47,113 @@ A Liz vai te perguntar sobre o projeto e configurar tudo automaticamente.
36
47
  Ao rodar o `plazercli`, a Liz:
37
48
 
38
49
  1. **Pergunta** o nome do projeto e o que ele faz
39
- 2. **Pergunta** qual stack voce quer (frontend, backend, banco, etc.)
50
+ 2. **Pergunta** qual stack voce quer (frontend, backend, banco, auth, billing, etc.)
40
51
  3. **Cria** o monorepo completo com `apps/web` + `apps/api`
41
- 4. **Configura** o banco de dados com o nome do projeto
42
- 5. **Conecta** todos os modulos automaticamente (auth, filas, integracoes)
43
- 6. **Gera** `docker-compose.yml` com todos os servicos
44
- 7. **Gera** `.env` com todas as variaveis organizadas
45
- 8. **Instala** as dependencias
46
- 9. **Inicializa** o git com commit inicial
47
- 10. **Configura** a si mesma (Liz) como AI agent no projeto
52
+ 4. **Configura** banco de dados, autenticacao, RBAC, billing
53
+ 5. **Conecta** todos os modulos automaticamente (auto-wiring)
54
+ 6. **Gera** docker-compose.yml, .env, README, CI/CD, Dockerfiles
55
+ 7. **Instala** as dependencias
56
+ 8. **Inicializa** o git com commit inicial
57
+ 9. **Configura** a si mesma (Liz) como AI agent no projeto
48
58
 
49
59
  Resultado: projeto pronto pra rodar com `docker compose up -d && pnpm dev`
50
60
 
51
61
  ## Features
52
62
 
63
+ ### SaaS Core
64
+ | Feature | O que configura |
65
+ |---------|----------------|
66
+ | **RBAC** | Roles (Admin/User/Owner), CASL abilities, guards por framework |
67
+ | **Organizations** | Workspaces com CRUD, convites por email, gestao de membros |
68
+ | **Stripe Billing** | Planos Free/Pro/Enterprise, checkout, portal, webhooks |
69
+
70
+ ### Autenticacao (6 providers + 3 services)
71
+ | Metodo | O que configura |
72
+ |--------|----------------|
73
+ | **JWT** | Login/register com bcrypt, guards/middleware, strategy |
74
+ | **Magic Link** | Token por email, verificacao, auto-habilita SMTP |
75
+ | **Google OAuth** | Strategy Passport, rotas de callback, env vars |
76
+ | **GitHub OAuth** | Login com GitHub, essencial pra dev tools |
77
+ | **Apple Sign-In** | Verificacao de identity tokens Apple |
78
+ | **Discord OAuth** | Login com Discord, popular em comunidades |
79
+ | **Clerk** | Auth completo com UI pronto, muito popular com Next.js |
80
+ | **NextAuth/Auth.js** | Auth nativo do Next.js com Prisma adapter |
81
+ | **2FA/TOTP** | Autenticacao de dois fatores com QR code |
82
+
83
+ Todos adaptados automaticamente ao backend escolhido (Express/Fastify/NestJS).
84
+
85
+ ### API Quality
86
+ | Feature | O que configura |
87
+ |---------|----------------|
88
+ | **Zod** | Schemas de validacao prontos, pipes (NestJS) ou middleware |
89
+ | **Rate Limiting** | Limites globais e por rota, configuraveis por framework |
90
+ | **Pino Logging** | Logging estruturado com request ID, pretty-print em dev |
91
+ | **Swagger/OpenAPI** | Documentacao automatica da API em `/api/docs` |
92
+ | **tRPC** | API typesafe end-to-end, integrado com Next.js |
93
+ | **Health Checks** | Endpoint `/api/health` com status de DB, Redis, memoria |
94
+
95
+ ### AI/ML (v3.0)
96
+ | Integracao | O que configura |
97
+ |------------|----------------|
98
+ | **OpenAI** | Chat completions, embeddings, assistants |
99
+ | **Vercel AI SDK** | SDK unificado, generateText, streamText |
100
+
101
+ ### Monitoring & Analytics (v3.0)
102
+ | Feature | O que configura |
103
+ |---------|----------------|
104
+ | **Sentry** | Error tracking + performance monitoring |
105
+ | **Google Analytics 4** | Analytics no frontend com GA4 |
106
+
107
+ ### Pagamentos (5 gateways)
108
+ | Integracao | O que configura |
109
+ |------------|----------------|
110
+ | **Stripe** | Checkout, PaymentIntent, webhooks |
111
+ | **PayPal** | Orders, captures, checkout |
112
+ | **Mercado Pago** | Preferences, pagamentos PIX |
113
+ | **AbacatePay** | Pagamentos, PIX |
114
+
115
+ ### Comunicacao (3 canais)
116
+ | Integracao | O que configura |
117
+ |------------|----------------|
118
+ | **WhatsApp** | Service para API Meta WhatsApp Business |
119
+ | **Twilio SMS** | Envio de SMS e verificacao por telefone |
120
+ | **Telegram Bot** | Bot para notificacoes de sistema |
121
+
122
+ ### Storage (3 opcoes)
123
+ | Opcao | O que configura |
124
+ |-------|----------------|
125
+ | **MinIO** | S3-compatible local, docker service |
126
+ | **AWS S3** | Upload, download, presigned URLs |
127
+ | **Cloudflare R2** | S3-compatible sem egress fees |
128
+
129
+ ### Email (2 opcoes)
130
+ | Opcao | O que configura |
131
+ |-------|----------------|
132
+ | **SMTP** | Nodemailer com templates HTML |
133
+ | **Resend** | API moderna com React Email |
134
+
135
+ ### Search (v3.0)
136
+ | Opcao | O que configura |
137
+ |-------|----------------|
138
+ | **Meilisearch** | Busca full-text, indexacao, docker service |
139
+
140
+ ### Testing (v3.0)
141
+ | Opcao | O que configura |
142
+ |-------|----------------|
143
+ | **Vitest + Supertest** | Unit tests + HTTP tests, config pronta |
144
+
145
+ ### Extras
146
+ | Feature | O que configura |
147
+ |---------|----------------|
148
+ | **WebSockets** | Socket.IO com rooms, broadcast e notificacoes |
149
+ | **Tailwind CSS** | Config + paginas SaaS prontas (landing, login, dashboard) |
150
+ | **CI/CD** | GitHub Actions + Dockerfiles multi-stage |
151
+ | **i18n** | Internacionalizacao pt-BR + en |
152
+ | **Cron Jobs** | Tarefas agendadas com node-cron |
153
+ | **PDFKit** | Gerar PDFs (notas fiscais, relatorios) |
154
+ | **ViaCEP** | Consulta de CEP |
155
+ | **Google Maps** | Maps, Places, Geocoding |
156
+
53
157
  ### Frontend
54
158
  | Framework | Descricao |
55
159
  |-----------|----------|
@@ -61,9 +165,9 @@ Resultado: projeto pronto pra rodar com `docker compose up -d && pnpm dev`
61
165
  ### Backend
62
166
  | Framework | Descricao |
63
167
  |-----------|----------|
168
+ | **NestJS** | Enterprise, modular, decorators |
64
169
  | **Express** | Minimalista, flexivel |
65
170
  | **Fastify** | Alta performance, plugins |
66
- | **NestJS** | Enterprise, modular, decorators |
67
171
 
68
172
  ### Banco de Dados
69
173
  | Banco | ORM/ODM | Auto-config |
@@ -72,72 +176,117 @@ Resultado: projeto pronto pra rodar com `docker compose up -d && pnpm dev`
72
176
  | **MySQL** | Prisma | Schema com User model, docker service, DATABASE_URL |
73
177
  | **MongoDB** | Mongoose | Models, conexao, docker service, MONGODB_URI |
74
178
 
75
- ### Autenticacao (multipla escolha)
76
- | Metodo | O que configura |
77
- |--------|----------------|
78
- | **JWT** | Login/register com bcrypt, middleware de auth, guards |
79
- | **Magic Link** | Token por email, verificacao, auto-habilita SMTP |
80
- | **Google OAuth** | Strategy Passport, rotas de callback, env vars |
81
-
82
- Todos adaptados automaticamente ao backend escolhido (Express/Fastify/NestJS).
83
-
84
- ### Filas e Jobs
85
- | Tecnologia | O que configura |
86
- |------------|----------------|
87
- | **BullMQ** | Queue config, worker de exemplo, auto-habilita Redis |
88
- | **RabbitMQ** | Producer/consumer, docker service, connection manager |
89
-
90
- ### Integracoes (multipla escolha)
91
- | Integracao | O que configura |
92
- |------------|----------------|
93
- | **ViaCEP** | Service para consulta de CEP |
94
- | **WhatsApp** | Service para API Meta WhatsApp Business |
95
- | **Stripe** | Checkout, PaymentIntent, webhooks |
96
- | **Mercado Pago** | Preferences, pagamentos PIX |
97
- | **AbacatePay** | Pagamentos, PIX |
98
-
99
179
  ### Infraestrutura
100
180
  | Feature | O que configura |
101
181
  |---------|----------------|
102
182
  | **Redis** | Service com ioredis, docker service |
103
- | **SMTP** | Email service com Nodemailer, template HTML |
104
- | **MinIO** | Storage S3-compatible, upload/download, docker service |
183
+ | **BullMQ** | Queue config, worker de exemplo, auto-habilita Redis |
184
+ | **RabbitMQ** | Producer/consumer, docker service |
105
185
  | **PM2** | ecosystem.config.cjs, cluster mode, zero-downtime |
106
186
  | **Multi-tenant** | Middleware de isolamento por header/subdomain |
107
187
 
188
+ ## Presets
189
+
190
+ Use `--preset <nome>` pra criar projetos com configuracoes prontas:
191
+
192
+ | Preset | Stack | Descricao |
193
+ |--------|-------|-----------|
194
+ | `saas-starter` | NestJS + Next.js + PostgreSQL | Stack completa: auth, billing, RBAC, dashboard |
195
+ | `saas-multi-tenant` | NestJS + Next.js + PostgreSQL | SaaS B2B com isolamento por tenant |
196
+ | `ecommerce` | NestJS + Next.js + PostgreSQL | Loja online com pagamentos e storage |
197
+ | `api-platform` | Fastify + Next.js + PostgreSQL | API robusta com docs e monitoramento |
198
+ | `realtime-app` | NestJS + Next.js + PostgreSQL | App com comunicacao em tempo real |
199
+ | `minimal` | Express + Next.js + PostgreSQL | Minimo necessario pra comecar |
200
+ | `ai-saas` | NestJS + Next.js + PostgreSQL | SaaS com IA: OpenAI, Vercel AI SDK, Clerk |
201
+ | `devtool` | NestJS + Next.js + PostgreSQL | Dev tool: GitHub Auth, tRPC, Sentry, testes |
202
+ | `brazil-saas` | NestJS + Next.js + PostgreSQL | SaaS BR: Mercado Pago, ViaCEP, WhatsApp |
203
+ | `marketplace` | NestJS + Next.js + PostgreSQL | Marketplace: busca, storage, pagamentos |
204
+ | `mobile-backend` | Fastify + Next.js + PostgreSQL | Backend mobile: push, SMS, Apple Auth, 2FA |
205
+ | `content-platform` | NestJS + Next.js + PostgreSQL | Plataforma de conteudo com busca e analytics |
206
+
207
+ ```bash
208
+ # Exemplo
209
+ npx plazercli --preset ai-saas --name minha-plataforma
210
+ ```
211
+
108
212
  ## Stack Suportada
109
213
 
110
214
  ### Runtimes
111
- - npm
112
- - pnpm
215
+ - pnpm (recomendado)
113
216
  - bun
217
+ - npm
114
218
 
115
219
  ### Estrutura
116
220
  Monorepo com workspaces nativos do runtime escolhido.
117
221
 
118
222
  ```
119
- meu-projeto/
223
+ meu-saas/
120
224
  ├── apps/
121
- │ ├── api/ # Backend
122
- └── web/ # Frontend
225
+ │ ├── api/ # Backend
226
+ │ ├── src/
227
+ │ │ │ ├── auth/ # JWT, Magic Link, OAuth, Clerk, 2FA
228
+ │ │ │ ├── rbac/ # Roles + CASL
229
+ │ │ │ ├── organizations/ # Workspaces + convites
230
+ │ │ │ ├── billing/ # Stripe subscriptions
231
+ │ │ │ ├── database/ # Prisma/Mongoose
232
+ │ │ │ ├── infra/ # Redis, Email, Storage, Sentry, PDF
233
+ │ │ │ ├── queue/ # Workers e jobs
234
+ │ │ │ ├── jobs/ # Cron jobs
235
+ │ │ │ ├── health/ # Health checks
236
+ │ │ │ ├── trpc/ # tRPC router (se habilitado)
237
+ │ │ │ ├── websockets/ # Socket.IO
238
+ │ │ │ ├── common/ # Validation, Logging
239
+ │ │ │ ├── integrations/ # APIs externas (OpenAI, Stripe, Twilio, etc.)
240
+ │ │ │ ├── routes/
241
+ │ │ │ └── config/
242
+ │ │ ├── prisma/
243
+ │ │ └── .env
244
+ │ └── web/ # Frontend
245
+ │ └── src/
123
246
  ├── docker-compose.yml
124
- ├── CLAUDE.md # Liz (Claude Code)
125
- ├── AGENTS.md # Liz (geral)
126
- ├── .cursor/rules/ # Liz (Cursor)
247
+ ├── .github/workflows/ # CI/CD
248
+ ├── CLAUDE.md # Liz (Claude Code)
249
+ ├── AGENTS.md # Liz (geral)
250
+ ├── .cursor/rules/ # Liz (Cursor)
127
251
  └── README.md
128
252
  ```
129
253
 
254
+ ## CLI Flags
255
+
256
+ ```bash
257
+ plazercli --version # Mostra versao
258
+ plazercli --name meu-app # Pre-define nome
259
+ plazercli --yes # Defaults inteligentes, sem perguntas
260
+ plazercli --preset saas-starter # Usa preset pronto
261
+ plazercli --dry-run # Mostra o que seria gerado
262
+ plazercli --save-config config.json # Salva config pra reutilizar
263
+ plazercli --config config.json # Carrega config salva
264
+ ```
265
+
266
+ ### Valores padrao (--yes)
267
+
268
+ | Opcao | Default |
269
+ |-------|---------|
270
+ | Runtime | pnpm |
271
+ | Database | PostgreSQL (Prisma) |
272
+ | Frontend | Next.js |
273
+ | Backend | NestJS |
274
+ | Auth | JWT |
275
+ | Queue | BullMQ |
276
+ | RBAC / Zod / Rate Limiting / Pino / Swagger / Health Checks | Sim |
277
+ | Tailwind / CI/CD | Sim |
278
+ | Redis / SMTP / PM2 | Sim |
279
+
130
280
  ## Liz - AI Agent
131
281
 
132
- Todo projeto gerado vem com a **Liz**, uma agente de IA treinada na arquitetura do projeto.
282
+ Todo projeto gerado vem com a **Liz**, uma agente de IA configurada pra conhecer a arquitetura do projeto.
133
283
 
134
284
  ### O que a Liz sabe
135
285
  - Toda a stack escolhida
136
286
  - Estrutura de diretorios
137
287
  - Convencoes de codigo
138
- - Como criar novas features
139
- - Como adicionar endpoints
140
- - Como usar cada integracao
288
+ - Como criar novas features seguindo os patterns
289
+ - Como adicionar endpoints, models, workers e integracoes
141
290
 
142
291
  ### Integracao com editores
143
292
 
@@ -148,63 +297,109 @@ Todo projeto gerado vem com a **Liz**, uma agente de IA treinada na arquitetura
148
297
  | **Copilot / Outros** | `AGENTS.md` | Referencia completa |
149
298
 
150
299
  ### Exemplo de uso
151
- Ao abrir o projeto no editor com IA, voce pode pedir:
152
-
153
- - "Liz, cria um endpoint de listagem de produtos"
154
- - "Liz, adiciona um model de Order no Prisma"
155
- - "Liz, cria um job para enviar email de boas-vindas"
156
- - "Liz, integra o webhook do Stripe"
157
300
 
158
- A Liz vai seguir as convencoes do projeto e usar os servicos ja configurados.
301
+ ```
302
+ "Liz, cria um endpoint de listagem de produtos"
303
+ "Liz, adiciona um model de Order no Prisma"
304
+ "Liz, cria um job para enviar email de boas-vindas"
305
+ "Liz, integra o webhook do Stripe"
306
+ ```
159
307
 
160
308
  ## Como Funciona
161
309
 
162
- ### Fluxo interativo (14 perguntas)
310
+ ### Fluxo interativo (8 steps)
163
311
 
164
312
  ```
165
- 1. Nome do projeto (texto)
166
- 2. Descricao (texto)
167
- 3. Runtime npm | pnpm | bun
168
- 4. Banco de dados PostgreSQL | MySQL | MongoDB | Nenhum
169
- 5. Multi-tenant? sim | nao
170
- 6. SMTP (emails)? sim | nao
171
- 7. Autenticacao JWT | Magic Link | Google (multipla)
172
- 8. Redis? sim | nao
173
- 9. Filas/Jobs BullMQ | RabbitMQ | Nenhum
174
- 10. Frontend Next.js | React | Vue | Angular
175
- 11. Backend Express | Fastify | NestJS
176
- 12. Integracoes ViaCEP | WhatsApp | Stripe | MP | Abacate (multipla)
177
- 13. MinIO (storage)? sim | nao
178
- 14. PM2 (zero-downtime)? sim | nao
313
+ Step 1/8 Stack Principal
314
+ 1. Modo (Custom ou Preset)
315
+ 2. Nome do projeto (validado como pacote npm)
316
+ 3. Descricao (texto)
317
+ 4. Runtime pnpm | bun | npm
318
+ 5. Banco de dados PostgreSQL | MySQL | MongoDB | None
319
+ 6. Frontend Next.js | React | Vue | Angular
320
+ 7. Backend NestJS | Express | Fastify
321
+
322
+ Step 2/8 Autenticacao
323
+ 8. Auth methods JWT | Magic Link | Google | GitHub | Apple | Discord
324
+ 9. Auth services Clerk | NextAuth | 2FA/TOTP
325
+
326
+ Step 3/8 SaaS Features
327
+ 10. SaaS RBAC | Organizations | Stripe Billing
328
+
329
+ Step 4/8 — API Quality & Patterns
330
+ 11. API Zod | Rate Limiting | Pino | Swagger | tRPC | Health
331
+
332
+ Step 5/8 — Infraestrutura
333
+ 12. Multi-tenant sim | nao
334
+ 13. Email SMTP | Resend | None
335
+ 14. Redis sim | nao
336
+ 15. Filas/Jobs BullMQ | RabbitMQ | None
337
+ 16. Storage MinIO | AWS S3 | Cloudflare R2 | None
338
+ 17. Meilisearch sim | nao
339
+ 18. Cron Jobs sim | nao
340
+
341
+ Step 6/8 — Integracoes
342
+ 19. Pagamentos Stripe | PayPal | Mercado Pago | AbacatePay
343
+ 20. Comunicacao WhatsApp | Twilio SMS | Telegram Bot
344
+ 21. AI OpenAI | Vercel AI SDK
345
+ 22. Outras ViaCEP | Google Maps
346
+
347
+ Step 7/8 — Monitoring & Analytics
348
+ 23. Sentry sim | nao
349
+ 24. Google Analytics sim | nao
350
+
351
+ Step 8/8 — Extras
352
+ 25. Testes sim | nao (Vitest + Supertest)
353
+ 26. PDFKit sim | nao
354
+ 27. Extras Tailwind | CI/CD | WebSockets | i18n
355
+ 28. PM2 sim | nao
179
356
  ```
180
357
 
181
358
  ### Dependencias implicitas
182
359
 
183
- A Liz resolve automaticamente:
184
-
185
360
  | Voce escolhe | Liz habilita |
186
361
  |-------------|-------------|
187
362
  | BullMQ | Redis |
188
363
  | Magic Link | SMTP |
364
+ | Stripe Billing | Integracao Stripe |
189
365
 
190
366
  ### Auto-wiring
191
367
 
192
- Apos criar os arquivos, a Liz reescreve o arquivo principal do backend para importar e conectar todos os modulos:
368
+ A Liz reescreve o arquivo principal do backend pra importar e conectar todos os modulos:
193
369
 
194
370
  - **NestJS:** Todos os modules importados no `app.module.ts`
195
371
  - **Express:** Todas as rotas registradas no `app.ts`, conexoes no `index.ts`
196
372
  - **Fastify:** Todos os plugins registrados no `app.ts`, conexoes no `index.ts`
197
373
 
198
- Nada de configuracao manual - tudo ja esta conectado.
374
+ ## Documentacao
199
375
 
200
- ## CLI Flags
376
+ O PlazerCLI tem um site de documentacao completo com 39 paginas cobrindo todas as features:
377
+
378
+ - **[Documentacao Online](https://pablocarss.github.io/plazercli/)** — Site completo com Next.js
379
+
380
+ ### Rodar localmente
201
381
 
202
382
  ```bash
203
- plazercli --version # Mostra versao
204
- plazercli --name meu-app # Pre-define nome do projeto
205
- plazercli --yes # Usa valores padrao
383
+ cd docs
384
+ npm install
385
+ npm run dev
206
386
  ```
207
387
 
388
+ ### O que tem na documentacao
389
+
390
+ | Categoria | Paginas |
391
+ |-----------|---------|
392
+ | Comecando | Introducao, Instalacao, Quick Start, CLI Flags, Presets, Arquitetura |
393
+ | Stack | Frontend, Backend, Banco de Dados |
394
+ | Autenticacao | Visao Geral, JWT, Magic Link, Google OAuth |
395
+ | SaaS Features | RBAC, Organizations, Stripe Billing |
396
+ | API Quality | Zod, Rate Limiting, Pino Logging, Swagger |
397
+ | Infraestrutura | Redis, SMTP, MinIO, WebSockets, Filas, Multi-tenant, PM2 |
398
+ | Extras | Tailwind CSS, CI/CD, i18n |
399
+ | Integracoes | Visao Geral, ViaCEP, WhatsApp, Stripe, Mercado Pago, AbacatePay |
400
+ | IA | Liz AI Agent |
401
+ | Avancado | Docker, Variaveis de Ambiente |
402
+
208
403
  ## Desenvolvimento
209
404
 
210
405
  ```bash
@@ -213,8 +408,6 @@ cd plazercli
213
408
  npm install
214
409
  npm run dev # Watch mode
215
410
  npm run build # Build para dist/
216
-
217
- # Testar localmente
218
411
  node dist/index.js
219
412
  ```
220
413
 
@@ -224,4 +417,4 @@ MIT
224
417
 
225
418
  ---
226
419
 
227
- Feito com massa por [@pablocarss](https://github.com/pablocarss)
420
+ Feito por [@pablocarss](https://github.com/pablocarss)