# Skill Layer — Web SaaS

File ini berisi konteks dan asumsi default untuk project bertipe **web SaaS** (Software as a Service berbasis web, multi-tenant, public product).

Inject konten ini ke brief atau instruksi AI Anda ketika mengerjakan project SaaS.

---

## Kapan Pakai Skill Ini

Gunakan jika project Anda adalah:
- Aplikasi web yang diakses publik
- Multi-tenant (banyak customer/organization menggunakan sistem yang sama)
- Model bisnis berbasis subscription, freemium, atau one-time purchase
- Punya onboarding flow untuk user baru

---

## Asumsi Default yang Langsung Diterapkan

### Arsitektur
- Multi-tenant dengan row-level atau schema-level isolation (row-level default)
- API-first — frontend dan mobile app bisa connect ke API yang sama
- Stateless backend — horizontal scaling ready
- CDN untuk static assets
- Background job queue untuk task async (email, report generation, dsb)

### Auth & User Management
- Email + password dengan email verification
- OAuth minimal: Google
- JWT access token (15 menit) + refresh token (7 hari, rotasi setiap refresh)
- Role: owner, admin, member (bisa dikustomisasi)
- Invite system untuk menambahkan user ke organization/workspace

### Database
- PostgreSQL
- Soft delete (deleted_at) untuk semua entity bisnis utama
- UUID v4 untuk semua primary key entity bisnis
- created_at, updated_at di semua tabel
- Audit log untuk aksi penting
- Tenant ID di setiap tabel yang multi-tenant

### Subscription & Billing
- Jika ada billing: Stripe sebagai default
- Free tier / trial period consideration
- Feature flag per plan

### Email
- Transactional email: welcome, verification, password reset, invoice
- Provider: Resend, Postmark, atau SendGrid (tentukan sesuai preference)

### Frontend
- Responsive web (mobile-first)
- Loading states untuk semua async action
- Empty states untuk semua list/table
- Error states dengan recovery action
- Toast/notification untuk feedback aksi

### Keamanan
- Rate limiting di semua endpoint publik
- CSRF protection
- Input validation di frontend dan backend
- SQL injection prevention (ORM/query builder)
- XSS prevention
- Sensitive data tidak pernah ada di log

### Monitoring & Observability
- Error tracking (Sentry atau Bugsnag)
- Uptime monitoring
- Structured logging

---

## Pertanyaan Tambahan untuk Brief SaaS

Tambahkan pertanyaan ini ke brief jika belum dijawab:

- Model subscription: apakah ada tier (free/pro/enterprise)?
- Multi-tenant model: per-organization atau per-user?
- Apakah ada fitur kolaborasi (multiple user dalam 1 workspace)?
- Perlu marketplace/app store integration?
- Apakah ada API publik untuk third-party integration?
- Target first release: MVP atau full-featured?

---

## Engineering Defaults Tambahan

- Feature flags untuk gradual rollout
- Database migration harus backward compatible
- API versioning dari awal (v1/)
- Health check endpoint wajib
- Graceful shutdown handling
- Environment: development, staging, production minimal

---

## Guardrails Tambahan untuk SaaS

- Jangan pernah query tanpa filter tenant_id jika multi-tenant
- Jangan expose user data dari tenant lain dalam respons apapun
- Jangan buat endpoint yang bisa di-enumerate (gunakan UUID, bukan auto-increment ID di URL)
- Payment-related code harus diaudit terpisah sebelum production
