Initial commit: Add documentation and issue tracking for BP_WB project
This commit is contained in:
commit
744c8a833b
12 changed files with 10290 additions and 0 deletions
19
.cursor/rules/00-base-safety.mdc
Normal file
19
.cursor/rules/00-base-safety.mdc
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
description: Core safety – always applied to every request
|
||||||
|
globs: ["**/*"]
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
You are an expert engineer working on a production codebase. Your #1 priority is **never break existing functionality**.
|
||||||
|
|
||||||
|
## Critical Rules (never violate these)
|
||||||
|
- NEVER delete or rename files without explicit user confirmation.
|
||||||
|
- NEVER make changes to more than 5 files at once unless the user explicitly says “go ahead with the full refactor”.
|
||||||
|
- NEVER invent non-existent functions, env vars, APIs, or packages. If unsure, ask for clarification or @ the relevant file.
|
||||||
|
- NEVER commit or apply changes that haven’t passed tests. Always run the test suite first.
|
||||||
|
- If tests fail or you detect a regression risk, stop and report it immediately.
|
||||||
|
- Always prefer small, incremental changes over large sweeping refactors.
|
||||||
|
- Before any multi-file change: propose a clear plan first, wait for approval.
|
||||||
|
- If the user asks for something risky (e.g., “rewrite everything”), push back and suggest incremental steps.
|
||||||
|
- Do not hallucinate. If you don’t know → say “I’m not sure, can you @ the file or clarify?”
|
||||||
|
- Always think step-by-step and show your reasoning before code.
|
||||||
890
.cursor/rules/bosa_constitution.md
Normal file
890
.cursor/rules/bosa_constitution.md
Normal file
|
|
@ -0,0 +1,890 @@
|
||||||
|
# BOSA Platform - Constitution
|
||||||
|
|
||||||
|
## ⚠️ CRITICAL VERSION BUMPING RULE (READ FIRST) ⚠️
|
||||||
|
|
||||||
|
### NEVER EVER REVERSE VERSION NUMBERS BACKWARDS
|
||||||
|
|
||||||
|
**THIS IS THE #1 MOST IMPORTANT RULE - VIOLATING THIS CAUSES SEVERE PROJECT DISRUPTION**
|
||||||
|
|
||||||
|
**The Rule:**
|
||||||
|
- **Version numbers can ONLY increase, NEVER decrease**
|
||||||
|
- **The source of truth for current version is `version.txt` file, NOT git HEAD**
|
||||||
|
- **If `version.txt` shows build number 077 and git HEAD shows 068, git hasn't been updated yet**
|
||||||
|
- **ALWAYS bump ABOVE the higher number found in `version.txt`** (NOT git HEAD)
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
- ✅ `version.txt` shows 0.0.2.077, git shows 0.0.2.068 → bump to **0.0.2.078**
|
||||||
|
- ✅ `version.txt` shows 0.0.2.100, git shows 0.0.2.050 → bump to **0.0.2.101**
|
||||||
|
- ❌ `version.txt` shows 0.0.2.077, git shows 0.0.2.068 → bump to **0.0.2.069** ← **WRONG! VIOLATION!**
|
||||||
|
|
||||||
|
**Why This Matters:**
|
||||||
|
- Decreasing version numbers causes confusion and tracking issues
|
||||||
|
- Git HEAD may be outdated - local `version.txt` is the current state
|
||||||
|
- This rule prevents critical project management disruptions
|
||||||
|
|
||||||
|
**VIOLATION CONSEQUENCE**: Reversing version numbers is a P0 violation that causes severe project disruption. Always check `version.txt` first, never git HEAD, and always bump forward.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Core Principles
|
||||||
|
|
||||||
|
### I. Radical Simplicity (ABSOLUTE)
|
||||||
|
**"WordPress for Business Apps" - If it's not this simple, it's wrong.**
|
||||||
|
- Binary installation MUST complete in under 60 seconds
|
||||||
|
- Plugin installation MUST complete in under 30 seconds
|
||||||
|
- Default configuration MUST work with ZERO editing
|
||||||
|
- Developer documentation MUST fit in AI context window (~10K tokens)
|
||||||
|
- Core kernel MUST remain under 5,000 lines of code
|
||||||
|
- Each component file MUST be under 500 lines
|
||||||
|
- If a feature requires >100 lines, it's a plugin, not core
|
||||||
|
|
||||||
|
**VIOLATION CONSEQUENCE**: Feature bloat kills adoption. Complexity is the enemy.
|
||||||
|
|
||||||
|
### II. NO CREATIVITY RULE (NON-NEGOTIABLE - NEVER VIOLATE)
|
||||||
|
**DO ONLY WHAT THE USER EXPLICITLY ASKS - NOTHING MORE**
|
||||||
|
- If user says "implement HTTP server" → Implement ONLY HTTP server. NO WebSocket "extras"
|
||||||
|
- If user says "fix database adapter" → Fix ONLY database adapter. Do NOT refactor other code
|
||||||
|
- If user says "create 3 files" → Create EXACTLY 3 files. NOT 4, NOT 5
|
||||||
|
- NEVER create "helpful" extra files, scripts, or documentation unless explicitly requested
|
||||||
|
- NEVER add "nice to have" features or "while I'm at it" improvements
|
||||||
|
- NEVER anticipate needs or be "creative" beyond the exact request
|
||||||
|
- ASK before doing ANYTHING beyond the literal request
|
||||||
|
|
||||||
|
**HISTORICAL VIOLATIONS TO AVOID**:
|
||||||
|
- Creating 10+ "helper" utilities when asked to implement one function
|
||||||
|
- Adding "comprehensive" error handling when asked for basic validation
|
||||||
|
- Creating entire plugin examples when asked for SDK function
|
||||||
|
- Refactoring working code when asked to add new feature
|
||||||
|
|
||||||
|
**THE RULE**: Read request → Do EXACTLY that → STOP → Ask before extras
|
||||||
|
|
||||||
|
### II-A. NO ASSUMPTIONS RULE (CRITICAL - NEVER VIOLATE)
|
||||||
|
**DO NOT JUMP TO CONCLUSIONS - ASK FIRST BEFORE IMPLEMENTING**
|
||||||
|
|
||||||
|
- When user asks a question → ANSWER the question. Do NOT implement solutions
|
||||||
|
- When user asks "can you help with X?" → Explain HOW you can help, then WAIT for confirmation
|
||||||
|
- When user asks about possibilities → List options, then WAIT for user to choose
|
||||||
|
- NEVER create files, scripts, or code unless user explicitly says "create", "implement", "do it"
|
||||||
|
- NEVER assume user wants automation when they ask "can you help"
|
||||||
|
- NEVER waste tokens implementing things that will be reverted
|
||||||
|
|
||||||
|
**CRITICAL PATTERN**:
|
||||||
|
1. User asks question → Answer question
|
||||||
|
2. User asks "can you do X?" → Say "Yes, I can do X by [method]. Should I proceed?"
|
||||||
|
3. User asks "is it possible?" → Say "Yes, here are the options: [list]. Which do you prefer?"
|
||||||
|
4. WAIT for explicit confirmation before creating ANY files or code
|
||||||
|
|
||||||
|
**HISTORICAL VIOLATIONS TO AVOID**:
|
||||||
|
- Creating import scripts when user asked "can you help add issues to Linear?"
|
||||||
|
- Implementing features when user asked "is it possible to do X?"
|
||||||
|
- Writing code when user asked a question about how something works
|
||||||
|
- Adding files when user asked about documentation options
|
||||||
|
|
||||||
|
**THE RULE**: Question → Answer → Wait → Confirm → Then implement
|
||||||
|
|
||||||
|
**TOKEN CONSERVATION**: Wasted tokens from reverted work = wasted money. Always confirm first.
|
||||||
|
|
||||||
|
### III. Plugin-First Architecture (MANDATORY)
|
||||||
|
Every feature beyond core (HTTP, Auth, Data, Events, Real-time) MUST be a plugin.
|
||||||
|
|
||||||
|
**Core Kernel Responsibilities (ONLY THESE):**
|
||||||
|
- HTTP/WebSocket server
|
||||||
|
- JWT authentication
|
||||||
|
- Database abstraction layer
|
||||||
|
- Event bus (in-memory → Redis)
|
||||||
|
- Plugin lifecycle management
|
||||||
|
- Static file serving
|
||||||
|
- Admin web UI (minimal)
|
||||||
|
|
||||||
|
**Everything Else is a Plugin:**
|
||||||
|
- Business logic (CRM, inventory, invoicing, etc.)
|
||||||
|
- UI components beyond admin
|
||||||
|
- Third-party integrations
|
||||||
|
- Reporting and analytics
|
||||||
|
- Custom workflows
|
||||||
|
- Email/SMS sending
|
||||||
|
- File uploads/storage
|
||||||
|
|
||||||
|
**Plugin Communication Rules:**
|
||||||
|
- Plugins CANNOT access kernel internals directly
|
||||||
|
- Plugins CANNOT communicate with each other directly
|
||||||
|
- All plugin communication via kernel APIs (REST/gRPC/WebSocket)
|
||||||
|
- All plugin interactions MUST be logged for debugging
|
||||||
|
- Plugin failures MUST NOT crash kernel
|
||||||
|
|
||||||
|
**Plugin Naming Convention:**
|
||||||
|
```
|
||||||
|
plugins/[name]-[language]/
|
||||||
|
manifest.yaml
|
||||||
|
[entry-file].[ext]
|
||||||
|
migrations/
|
||||||
|
templates/
|
||||||
|
static/
|
||||||
|
```
|
||||||
|
|
||||||
|
Examples: `crm-php`, `inventory-js`, `analytics-py`, `pos-lua`
|
||||||
|
|
||||||
|
### IV. Multi-Language Support (REQUIRED)
|
||||||
|
Plugins MUST be writable in ANY language the developer prefers.
|
||||||
|
|
||||||
|
**Tier 1 Support (Built-in):**
|
||||||
|
- **Lua**: Embedded runtime, sandboxed, ~5MB overhead
|
||||||
|
- **JavaScript/Node.js**: Process isolation, npm ecosystem
|
||||||
|
- **PHP**: php-fpm process, composer packages
|
||||||
|
- **Python**: Process isolation, pip packages
|
||||||
|
- **Go**: Native binary compilation
|
||||||
|
|
||||||
|
**Tier 2 Support (Docker):**
|
||||||
|
- Ruby, Rust, Java, C#, etc. via Docker containers
|
||||||
|
|
||||||
|
**SDK Requirements:**
|
||||||
|
- Each language MUST have official SDK: `bosa-sdk-[lang]`
|
||||||
|
- SDKs MUST provide identical API surface (parity required)
|
||||||
|
- SDKs MUST handle serialization/connection automatically
|
||||||
|
- SDKs MUST include TypeScript/JSDoc for IDE support
|
||||||
|
|
||||||
|
**Plugin API Contract:**
|
||||||
|
```
|
||||||
|
Database:
|
||||||
|
- query(table).where().orderBy().limit().get()
|
||||||
|
- query(table).insert(data)
|
||||||
|
- query(table).update(data)
|
||||||
|
- query(table).delete()
|
||||||
|
- transaction(callback)
|
||||||
|
|
||||||
|
Events:
|
||||||
|
- publish(type, data)
|
||||||
|
- subscribe(type, handler)
|
||||||
|
|
||||||
|
Real-time:
|
||||||
|
- broadcast(channel, message)
|
||||||
|
- sendToUser(userId, message)
|
||||||
|
- presence(channel)
|
||||||
|
- join(channel, metadata)
|
||||||
|
|
||||||
|
HTTP:
|
||||||
|
- route(method, path, handler)
|
||||||
|
- request.body, request.params, request.query
|
||||||
|
- response.json(), response.render()
|
||||||
|
```
|
||||||
|
|
||||||
|
### V. Multi-Database Abstraction (MANDATORY)
|
||||||
|
Database layer MUST be completely abstracted - plugins NEVER write database-specific SQL.
|
||||||
|
|
||||||
|
**Supported Databases (Adapters Required):**
|
||||||
|
- SQLite (default - zero config)
|
||||||
|
- PostgreSQL (production standard)
|
||||||
|
- MySQL/MariaDB (web hosting compatibility)
|
||||||
|
- MongoDB (document store optional)
|
||||||
|
|
||||||
|
**Repository Pattern Requirements:**
|
||||||
|
- All database access through `DatabaseAdapter` interface
|
||||||
|
- Query builder MUST work identically across all databases
|
||||||
|
- Migrations MUST be database-agnostic SQL
|
||||||
|
- Connection pooling managed by kernel
|
||||||
|
- Transactions MUST work across all adapters
|
||||||
|
|
||||||
|
**Adapter Interface (Go):**
|
||||||
|
```go
|
||||||
|
type DatabaseAdapter interface {
|
||||||
|
Connect(config) error
|
||||||
|
Close() error
|
||||||
|
Query(table string) QueryBuilder
|
||||||
|
Execute(sql string, args ...interface{}) (Result, error)
|
||||||
|
Migrate(migrations []Migration) error
|
||||||
|
BeginTransaction() (Transaction, error)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Plugin Usage (Language-Agnostic API):**
|
||||||
|
```javascript
|
||||||
|
// Same code works with SQLite, Postgres, MySQL, MongoDB
|
||||||
|
const customers = await bosa.db.query('customers')
|
||||||
|
.where('status', '=', 'active')
|
||||||
|
.orderBy('created_at', 'desc')
|
||||||
|
.limit(50)
|
||||||
|
.get();
|
||||||
|
```
|
||||||
|
|
||||||
|
**Database Migration Rules:**
|
||||||
|
- Migrations MUST be sequential numbered files: `001_initial.sql`, `002_add_columns.sql`
|
||||||
|
- Migrations MUST support up AND down (rollback)
|
||||||
|
- Schema changes MUST be tested on ALL supported databases
|
||||||
|
- NEVER use database-specific features unless in adapter code
|
||||||
|
- Migration from SQLite → Postgres MUST be one command: `bosa db migrate --to postgres`
|
||||||
|
|
||||||
|
### VI. Real-Time First (REQUIRED)
|
||||||
|
Real-time capabilities MUST be built into kernel, not bolted on later.
|
||||||
|
|
||||||
|
**WebSocket Server Requirements:**
|
||||||
|
- Sub-50ms event propagation (p95 target)
|
||||||
|
- Support 10,000+ concurrent connections per instance
|
||||||
|
- Automatic reconnection with exponential backoff
|
||||||
|
- Graceful fallback: WebSocket → SSE → Long-polling
|
||||||
|
- Channel-based pub/sub with presence detection
|
||||||
|
|
||||||
|
**Real-Time Features (Built-in):**
|
||||||
|
- Event broadcasting to channels
|
||||||
|
- User-specific messaging
|
||||||
|
- Presence tracking (who's online)
|
||||||
|
- Typing indicators
|
||||||
|
- Live data synchronization
|
||||||
|
|
||||||
|
**Plugin Real-Time API:**
|
||||||
|
```php
|
||||||
|
// Broadcast to all clients on channel
|
||||||
|
$bosa->realtime->broadcast('dashboard', [
|
||||||
|
'type' => 'data.updated',
|
||||||
|
'data' => $newData
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Get presence info
|
||||||
|
$viewers = $bosa->realtime->presence('customer.123');
|
||||||
|
```
|
||||||
|
|
||||||
|
**Performance Targets:**
|
||||||
|
- Event latency: <50ms p95
|
||||||
|
- Message throughput: 50,000 msg/s per instance
|
||||||
|
- Memory per connection: <10KB
|
||||||
|
- Reconnection time: <2s
|
||||||
|
|
||||||
|
### VII. Test-First Development (NON-NEGOTIABLE)
|
||||||
|
**TDD Mandatory: Tests → User Approval → Fail → Implement → Pass**
|
||||||
|
|
||||||
|
**Testing Pyramid:**
|
||||||
|
```
|
||||||
|
E2E Tests (5%)
|
||||||
|
Integration Tests (15%)
|
||||||
|
Unit Tests (80%)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Unit Testing (Go):**
|
||||||
|
- Every function MUST have test
|
||||||
|
- Table-driven tests preferred
|
||||||
|
- Mocks for external dependencies
|
||||||
|
- Coverage target: 85%+
|
||||||
|
|
||||||
|
**Integration Testing:**
|
||||||
|
- Database adapters tested on ALL supported DBs
|
||||||
|
- Plugin SDK tested in ALL supported languages
|
||||||
|
- WebSocket tested with 1000+ concurrent connections
|
||||||
|
- API endpoints tested with realistic payloads
|
||||||
|
|
||||||
|
**E2E Testing:**
|
||||||
|
- Critical paths: install → start → create plugin → deploy
|
||||||
|
- Real browser tests with Playwright/Cypress
|
||||||
|
- Multi-browser: Chrome, Firefox, Safari
|
||||||
|
- Mobile responsive testing
|
||||||
|
|
||||||
|
**CI/CD Requirements:**
|
||||||
|
- All tests MUST pass before merge
|
||||||
|
- No manual testing as gate for deployment
|
||||||
|
- Automated benchmarks on every PR
|
||||||
|
- Performance regression = failed build
|
||||||
|
|
||||||
|
**Test File Organization:**
|
||||||
|
```
|
||||||
|
internal/core/
|
||||||
|
server.go
|
||||||
|
server_test.go # Unit tests
|
||||||
|
|
||||||
|
tests/
|
||||||
|
integration/
|
||||||
|
database_test.go # All DB adapters
|
||||||
|
plugins_test.go # Multi-language plugins
|
||||||
|
e2e/
|
||||||
|
install_test.go
|
||||||
|
plugin_lifecycle_test.go
|
||||||
|
```
|
||||||
|
|
||||||
|
### VIII. Go-First Kernel, Language-Agnostic Plugins
|
||||||
|
**Kernel: 100% Go. Plugins: Developer's choice.**
|
||||||
|
|
||||||
|
**Why Go for Kernel:**
|
||||||
|
- Single binary compilation
|
||||||
|
- Excellent concurrency (goroutines)
|
||||||
|
- Fast compile times (<5s for full build)
|
||||||
|
- Strong typing without ceremony
|
||||||
|
- Stdlib is production-ready
|
||||||
|
- Cross-platform compilation
|
||||||
|
|
||||||
|
**Go Code Standards:**
|
||||||
|
- Standard library preferred over frameworks
|
||||||
|
- Minimal dependencies (<20 total)
|
||||||
|
- Go modules for dependency management
|
||||||
|
- gofmt + golint mandatory
|
||||||
|
- Meaningful error messages
|
||||||
|
- Context propagation for timeouts
|
||||||
|
|
||||||
|
**Forbidden in Kernel:**
|
||||||
|
- Web frameworks (use stdlib)
|
||||||
|
- ORMs (use database/sql directly)
|
||||||
|
- Complex abstractions (KISS principle)
|
||||||
|
- Reflection (except SDK bindings)
|
||||||
|
- Global state (pass dependencies)
|
||||||
|
|
||||||
|
**CGO Build Requirements (CRITICAL - NEVER FORGET):**
|
||||||
|
BOSA uses SQLite via `github.com/mattn/go-sqlite3` which requires CGO. The build system MUST handle CGO compilation correctly.
|
||||||
|
|
||||||
|
**Solution for CGO Build Errors:**
|
||||||
|
1. **Use Clang instead of GCC (RECOMMENDED)** - Better compatibility, especially with GCC 15+
|
||||||
|
- Install Clang via MSYS2: `pacman -S mingw-w64-x86_64-clang`
|
||||||
|
- Build script automatically detects and uses Clang if available
|
||||||
|
- Sets `CC=clang` and `CGO_CFLAGS="-Oz -g0"` automatically
|
||||||
|
|
||||||
|
2. **Why Clang?**
|
||||||
|
- GCC 15+ has known incompatibility with Go's CGO (github.com/golang/go/issues)
|
||||||
|
- Clang has better compatibility with newer toolchains
|
||||||
|
- No need to downgrade GCC - just use Clang
|
||||||
|
|
||||||
|
3. **Build Script Behavior:**
|
||||||
|
- Automatically checks for Clang first (preferred)
|
||||||
|
- Falls back to GCC if Clang not found
|
||||||
|
- Warns if GCC 15+ detected (incompatible)
|
||||||
|
- Provides clear error messages with solutions
|
||||||
|
|
||||||
|
4. **Manual Build (if needed):**
|
||||||
|
```powershell
|
||||||
|
$env:CGO_ENABLED = "1"
|
||||||
|
$env:CC = "clang"
|
||||||
|
$env:CGO_CFLAGS = "-Oz -g0"
|
||||||
|
go build ./cmd/bosa
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Error Pattern to Recognize:**
|
||||||
|
- `runtime/cgo: cgo.exe: exit status 2` = CGO compilation failed
|
||||||
|
- Usually means GCC 15+ incompatibility or missing C compiler
|
||||||
|
- Solution: Install Clang or use build script (auto-detects)
|
||||||
|
|
||||||
|
**VIOLATION CONSEQUENCE**: CGO build failures block all development. Always use Clang or ensure GCC <15.
|
||||||
|
|
||||||
|
**File Structure:**
|
||||||
|
```
|
||||||
|
bosa/
|
||||||
|
cmd/
|
||||||
|
bosa/
|
||||||
|
main.go # <100 lines
|
||||||
|
internal/
|
||||||
|
core/
|
||||||
|
server.go # <500 lines
|
||||||
|
auth.go # <300 lines
|
||||||
|
database/
|
||||||
|
adapter.go # <200 lines
|
||||||
|
sqlite.go # <300 lines
|
||||||
|
postgres.go # <300 lines
|
||||||
|
realtime/
|
||||||
|
hub.go # <400 lines
|
||||||
|
plugins/
|
||||||
|
manager.go # <500 lines
|
||||||
|
runtime_lua.go # <300 lines
|
||||||
|
runtime_node.go # <300 lines
|
||||||
|
runtime_php.go # <300 lines
|
||||||
|
```
|
||||||
|
|
||||||
|
**AI Development Guidelines for Go:**
|
||||||
|
- Every function has clear purpose comment
|
||||||
|
- No "clever" code - readability over brevity
|
||||||
|
- Error handling explicit, not hidden
|
||||||
|
- Interfaces small and focused
|
||||||
|
- Structs document field purposes
|
||||||
|
- All functionality must have Development (dev) and Production (prd) logging.
|
||||||
|
|
||||||
|
|
||||||
|
### IX. AI-First Development Patterns
|
||||||
|
**Code MUST be optimized for AI comprehension and generation.**
|
||||||
|
|
||||||
|
**File Size Limits (Strict):**
|
||||||
|
- Any file >500 lines MUST be split
|
||||||
|
- Any function >50 lines MUST be refactored
|
||||||
|
- Total kernel codebase <10K lines (fits in AI context)
|
||||||
|
|
||||||
|
**Documentation Requirements:**
|
||||||
|
- Every file has purpose header:
|
||||||
|
```go
|
||||||
|
// File: server.go
|
||||||
|
// Purpose: HTTP and WebSocket server initialization
|
||||||
|
// Dependencies: database, auth, realtime
|
||||||
|
// Used by: main.go
|
||||||
|
// AI Notes: Single entry point, no global state
|
||||||
|
```
|
||||||
|
|
||||||
|
- Every function documented:
|
||||||
|
```go
|
||||||
|
// CreateCustomer inserts a new customer record
|
||||||
|
// Input: customer data map (name, email required)
|
||||||
|
// Output: customer ID or error
|
||||||
|
// Side effects: Publishes customer.created event
|
||||||
|
func CreateCustomer(data map[string]interface{}) (int64, error) {
|
||||||
|
// Implementation
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Consistent Patterns:**
|
||||||
|
- All database operations via repository pattern
|
||||||
|
- All plugin communication via SDK
|
||||||
|
- All configuration via config.yaml + env vars
|
||||||
|
- All errors use standard error types
|
||||||
|
|
||||||
|
**AI Prompting Guide:**
|
||||||
|
```
|
||||||
|
Good Prompt:
|
||||||
|
"Implement SQLite database adapter following the DatabaseAdapter
|
||||||
|
interface in internal/core/database/adapter.go. Include connection
|
||||||
|
pooling and query builder. Reference postgres.go for patterns."
|
||||||
|
|
||||||
|
Bad Prompt:
|
||||||
|
"Add database support"
|
||||||
|
```
|
||||||
|
|
||||||
|
### X. Security by Design
|
||||||
|
**Security CANNOT be an afterthought.**
|
||||||
|
|
||||||
|
**Authentication:**
|
||||||
|
- JWT tokens with 15-minute expiry
|
||||||
|
- Refresh tokens with 7-day expiry (rotating)
|
||||||
|
- Tokens stored in httpOnly cookies (web) or secure storage (mobile)
|
||||||
|
- Password hashing: bcrypt cost 12
|
||||||
|
- Failed login rate limiting: 5 attempts per 5 minutes
|
||||||
|
|
||||||
|
**Authorization:**
|
||||||
|
- Role-based access control (RBAC) in core
|
||||||
|
- Plugin-level permissions in manifest
|
||||||
|
- API endpoint authorization middleware
|
||||||
|
- Channel-level authorization for WebSocket
|
||||||
|
|
||||||
|
**Data Protection:**
|
||||||
|
- All passwords hashed (never plaintext)
|
||||||
|
- Sensitive config in environment variables
|
||||||
|
- SQL injection prevention via parameterized queries
|
||||||
|
- XSS prevention via template escaping
|
||||||
|
- CSRF tokens for state-changing operations
|
||||||
|
|
||||||
|
**Plugin Sandboxing:**
|
||||||
|
- Plugins run in separate processes
|
||||||
|
- Resource limits (CPU, memory) enforced
|
||||||
|
- File system access restricted
|
||||||
|
- Network access controlled
|
||||||
|
- System calls limited via seccomp (future)
|
||||||
|
|
||||||
|
**Security Headers (Required):**
|
||||||
|
```
|
||||||
|
Strict-Transport-Security: max-age=31536000
|
||||||
|
X-Frame-Options: DENY
|
||||||
|
X-Content-Type-Options: nosniff
|
||||||
|
Content-Security-Policy: default-src 'self'
|
||||||
|
```
|
||||||
|
|
||||||
|
### XI. Operational Excellence
|
||||||
|
**System MUST be operable by non-technical users.**
|
||||||
|
|
||||||
|
**App/Plugin Deployment Locations (MANDATORY):**
|
||||||
|
|
||||||
|
**Development Location:**
|
||||||
|
- Apps/plugins can be developed **anywhere** on the developer's machine
|
||||||
|
- Example: `D:\dev\projects\My Todo App\`, `C:\Users\Name\apps\todo\`, etc.
|
||||||
|
- Contains: source code, `.git/`, `node_modules/`, tests, development files
|
||||||
|
|
||||||
|
**Deployment Location (Local Development):**
|
||||||
|
- **Local Dev:** `D:\dev\projects\bosa\apps\` (relative to BOSA project root)
|
||||||
|
- Configured in `config.yaml` → `plugins.directory`
|
||||||
|
- This is where BOSA installs apps/plugins when uploading `.zip` files or using `bosa plugin install`
|
||||||
|
- Apps are installed to: `D:\dev\projects\bosa\apps\[app-name]\`
|
||||||
|
|
||||||
|
**Deployment Location (Production/Namecheap):**
|
||||||
|
- **Production:** `./apps` (relative to `/bosa` base directory on server)
|
||||||
|
- On Namecheap: `/home/meaivgfb/bosa/apps/`
|
||||||
|
- Configured automatically in deployment scripts
|
||||||
|
- Apps are installed to: `/home/meaivgfb/bosa/apps/[app-name]/`
|
||||||
|
|
||||||
|
**Separation Rules:**
|
||||||
|
- ✅ Development location: Anywhere (developer's choice)
|
||||||
|
- ✅ Deployment location: Always `apps/` directory under BOSA base
|
||||||
|
- ✅ Never develop directly in deployment directory
|
||||||
|
- ✅ Always use packaging script to create deployment `.zip` files
|
||||||
|
- ✅ Deployment scripts automatically create `apps/` directory if missing
|
||||||
|
|
||||||
|
**Configuration:**
|
||||||
|
- Local dev: `config.yaml` → `plugins.directory: "D:/dev/projects/bosa/apps"`
|
||||||
|
- Production: `config.yaml` → `plugins.directory: "./apps"` (relative path)
|
||||||
|
|
||||||
|
**Installation Requirements:**
|
||||||
|
- Zero-config default: `bosa init && bosa serve`
|
||||||
|
- Guided setup wizard in web UI
|
||||||
|
- Automatic database initialization
|
||||||
|
- Health checks on startup
|
||||||
|
|
||||||
|
**Observability (Built-in):**
|
||||||
|
- `/health` endpoint (Kubernetes-compatible)
|
||||||
|
- `/metrics` endpoint (Prometheus format)
|
||||||
|
- Structured JSON logging
|
||||||
|
- Request tracing with correlation IDs
|
||||||
|
|
||||||
|
### XI-A. Comprehensive Logging System (MANDATORY)
|
||||||
|
**All operations MUST be logged. Logging behavior differs by environment.**
|
||||||
|
|
||||||
|
**Development Mode (BOSA_DEV_MODE=true or plugins.hot_reload=true):**
|
||||||
|
- ALL operations MUST be logged automatically
|
||||||
|
- Debug-level logging enabled by default
|
||||||
|
- HTTP requests: ALL requests logged (method, path, status, duration)
|
||||||
|
- Database operations: ALL queries logged (table, operation, parameters)
|
||||||
|
- Plugin operations: ALL plugin lifecycle events logged (load, unload, errors)
|
||||||
|
- Authentication events: ALL login attempts, failures, token refreshes logged
|
||||||
|
- Event bus: ALL events published/subscribed logged
|
||||||
|
- Error tracking: ALL errors with stack traces logged
|
||||||
|
- No logging toggles - always enabled for debugging
|
||||||
|
|
||||||
|
**Production Mode (BOSA_DEV_MODE=false and plugins.hot_reload=false):**
|
||||||
|
- Logging is OPTIONAL and toggleable by super admin
|
||||||
|
- Default state: Logging DISABLED (performance optimization)
|
||||||
|
- Super admin can enable/disable via `/api/admin/logging/toggle` endpoint
|
||||||
|
- When enabled in production: Log only WARN and ERROR levels by default
|
||||||
|
- When enabled in production: HTTP requests logged at INFO level
|
||||||
|
- Database errors: Always logged regardless of toggle (critical for debugging)
|
||||||
|
- Authentication failures: Always logged regardless of toggle (security requirement)
|
||||||
|
- Log buffer size: 1000 entries (configurable via config.yaml)
|
||||||
|
- Log retention: In-memory only (cleared on restart)
|
||||||
|
|
||||||
|
**Logging Requirements for ALL Functions:**
|
||||||
|
- Every function MUST include logging at entry/exit points
|
||||||
|
- Every error MUST be logged with context (function name, parameters, error message)
|
||||||
|
- Every database operation MUST be logged (table, operation, success/failure)
|
||||||
|
- Every HTTP request/response MUST be logged (method, path, status, duration)
|
||||||
|
- Every plugin operation MUST be logged (plugin name, operation, success/failure)
|
||||||
|
- Every authentication event MUST be logged (user, action, success/failure)
|
||||||
|
- Every configuration change MUST be logged (what changed, by whom, when)
|
||||||
|
|
||||||
|
**Log Levels (Standard):**
|
||||||
|
- **DEBUG**: Detailed diagnostic information (dev mode only)
|
||||||
|
- **INFO**: General informational messages (server start, plugin loaded, HTTP requests)
|
||||||
|
- **WARN**: Warning messages (non-critical issues, deprecation notices)
|
||||||
|
- **ERROR**: Error messages (failed operations, exceptions)
|
||||||
|
|
||||||
|
**Log Format (Structured):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"timestamp": "2025-11-25T10:28:36Z",
|
||||||
|
"level": "info",
|
||||||
|
"message": "HTTP request processed",
|
||||||
|
"source": "http",
|
||||||
|
"method": "GET",
|
||||||
|
"path": "/api/plugins",
|
||||||
|
"status": 200,
|
||||||
|
"duration_ms": 45
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Log Buffer Management:**
|
||||||
|
- Maximum size: 1000 entries (configurable)
|
||||||
|
- FIFO eviction: Oldest entries removed when limit reached
|
||||||
|
- Filtering: By level (debug, info, warn, error, all)
|
||||||
|
- Export: CSV format via `/api/logs/export`
|
||||||
|
- Clear: Via `/api/logs` DELETE endpoint (super admin only)
|
||||||
|
|
||||||
|
**Super Admin Logging Controls:**
|
||||||
|
- GET `/api/admin/logging/status` - Get current logging state (enabled/disabled, level, buffer size)
|
||||||
|
- POST `/api/admin/logging/toggle` - Toggle logging on/off (production only)
|
||||||
|
- PUT `/api/admin/logging/config` - Update logging configuration (level, buffer size, production only)
|
||||||
|
- All logging controls require super_admin role
|
||||||
|
|
||||||
|
**Performance Considerations:**
|
||||||
|
- Logging MUST NOT block operations (async where possible)
|
||||||
|
- Log buffer MUST use efficient data structures (slice with mutex)
|
||||||
|
- Production mode with logging disabled: Near-zero overhead (<1% CPU)
|
||||||
|
- Production mode with logging enabled: <5% CPU overhead
|
||||||
|
|
||||||
|
**Security Requirements:**
|
||||||
|
- Sensitive data MUST NOT be logged (passwords, tokens, PII)
|
||||||
|
- Authentication tokens: Log only presence, never full value
|
||||||
|
- Database passwords: Never logged
|
||||||
|
- User emails: Log only for authentication events
|
||||||
|
- Logs accessible only to super_admin role
|
||||||
|
|
||||||
|
**VIOLATION CONSEQUENCE**: Missing logs = debugging nightmare. All operations without logs are bugs.
|
||||||
|
|
||||||
|
**Backup & Recovery:**
|
||||||
|
- One-command backup: `bosa backup create`
|
||||||
|
- One-command restore: `bosa backup restore [file]`
|
||||||
|
- Automatic daily backups (configurable)
|
||||||
|
- Export/import between databases
|
||||||
|
|
||||||
|
**Upgrades:**
|
||||||
|
- Zero-downtime rolling updates
|
||||||
|
- Automatic schema migrations
|
||||||
|
- Rollback support
|
||||||
|
- Version compatibility checks
|
||||||
|
|
||||||
|
**Monitoring Targets:**
|
||||||
|
- System uptime: 99.9% (43 min/month downtime)
|
||||||
|
- API response time: <200ms p95
|
||||||
|
- WebSocket latency: <50ms p95
|
||||||
|
- Database query time: <100ms p95
|
||||||
|
- Memory usage: <500MB idle, <2GB under load
|
||||||
|
|
||||||
|
### XII. Performance Requirements
|
||||||
|
**Performance is a feature, not an optimization.**
|
||||||
|
|
||||||
|
**Response Time Targets:**
|
||||||
|
| Operation | Target | Measurement |
|
||||||
|
|-----------|--------|-------------|
|
||||||
|
| API CRUD | <100ms p95 | End-to-end |
|
||||||
|
| Database query | <50ms p95 | Indexed lookups |
|
||||||
|
| WebSocket event | <50ms p95 | Delivery time |
|
||||||
|
| Plugin cold start | <5s | Process spawn |
|
||||||
|
| Page load | <2s | First contentful paint |
|
||||||
|
|
||||||
|
**Scalability Targets:**
|
||||||
|
| Metric | Target | Growth Path |
|
||||||
|
|--------|--------|-------------|
|
||||||
|
| Concurrent users | 100 (SQLite) → 10K (Postgres) | Add replicas |
|
||||||
|
| API throughput | 1K req/s (single) → 100K req/s (cluster) | Horizontal scaling |
|
||||||
|
| Database size | 1GB (SQLite) → 1TB+ (Postgres) | Sharding |
|
||||||
|
| WebSocket connections | 1K (single) → 100K (Redis pub/sub) | Load balancer |
|
||||||
|
|
||||||
|
**Optimization Rules:**
|
||||||
|
- Database queries MUST use indexes
|
||||||
|
- N+1 queries are bugs, not features
|
||||||
|
- Caching MUST be explicit, not implicit
|
||||||
|
- Asset compression MUST be enabled
|
||||||
|
- CDN integration for static files
|
||||||
|
|
||||||
|
**Benchmarking (Required):**
|
||||||
|
- Every PR MUST include benchmark results
|
||||||
|
- Regressions >10% MUST be explained
|
||||||
|
- Load testing before major releases
|
||||||
|
- Database query profiling enabled in dev
|
||||||
|
|
||||||
|
### XIII. Growth Path Architecture
|
||||||
|
**System MUST scale from laptop to cloud without rewrites.**
|
||||||
|
|
||||||
|
**Stage 1: Development (Laptop)**
|
||||||
|
- SQLite database (one file)
|
||||||
|
- In-memory events
|
||||||
|
- Single binary
|
||||||
|
- Cost: $0
|
||||||
|
|
||||||
|
**Stage 2: Small Business (VPS)**
|
||||||
|
- SQLite still works OR switch to Postgres
|
||||||
|
- Optional Redis for caching
|
||||||
|
- nginx reverse proxy
|
||||||
|
- Cost: $10-20/month
|
||||||
|
|
||||||
|
**Stage 3: Growing Company (Cloud)**
|
||||||
|
- PostgreSQL managed instance
|
||||||
|
- Redis for events + cache
|
||||||
|
- Load balancer (2-3 instances)
|
||||||
|
- Cost: $100-200/month
|
||||||
|
|
||||||
|
**Stage 4: Enterprise (Kubernetes)**
|
||||||
|
- PostgreSQL cluster with replicas
|
||||||
|
- Redis cluster
|
||||||
|
- Multiple BOSA instances (auto-scaled)
|
||||||
|
- CDN for static assets
|
||||||
|
- Cost: $500-1,000/month
|
||||||
|
|
||||||
|
**Critical Rule**: Same codebase, same config format, zero code changes at each stage.
|
||||||
|
|
||||||
|
### XIV. Documentation Standards
|
||||||
|
**Documentation is code, not an afterthought.**
|
||||||
|
|
||||||
|
**Required Documentation:**
|
||||||
|
- `README.md`: Quick start (5-minute setup)
|
||||||
|
- `docs/ARCHITECTURE.md`: System design overview
|
||||||
|
- `docs/API.md`: Complete API reference
|
||||||
|
- `docs/PLUGINS.md`: Plugin development guide
|
||||||
|
- `docs/DEPLOYMENT.md`: Production deployment guide
|
||||||
|
|
||||||
|
**Plugin Documentation:**
|
||||||
|
- Every plugin MUST have `README.md`
|
||||||
|
- Installation instructions
|
||||||
|
- Configuration options
|
||||||
|
- API endpoints exposed
|
||||||
|
- Event subscriptions/publications
|
||||||
|
- Example usage
|
||||||
|
|
||||||
|
**Code Comments (When Required):**
|
||||||
|
- Why, not what (code shows what)
|
||||||
|
- Non-obvious decisions
|
||||||
|
- Performance trade-offs
|
||||||
|
- Security considerations
|
||||||
|
- TODO items with GitHub issue links
|
||||||
|
|
||||||
|
**Documentation Generation:**
|
||||||
|
- OpenAPI/Swagger from code annotations
|
||||||
|
- SDK docs from JSDoc/GoDoc comments
|
||||||
|
- Architecture diagrams in Mermaid format
|
||||||
|
- Examples must be runnable code
|
||||||
|
|
||||||
|
### XV. Internationalization (i18n)
|
||||||
|
**Global readiness from day one.**
|
||||||
|
|
||||||
|
**Language Support:**
|
||||||
|
- English (primary)
|
||||||
|
- Arabic with RTL support (secondary)
|
||||||
|
- Framework for community translations
|
||||||
|
|
||||||
|
**Implementation:**
|
||||||
|
- JSON files for UI strings
|
||||||
|
- `t('key')` function in all UIs
|
||||||
|
- Locale-aware date/time formatting
|
||||||
|
- Currency formatting with Intl API
|
||||||
|
- Number formatting (Western vs Arabic numerals)
|
||||||
|
|
||||||
|
**RTL Support:**
|
||||||
|
- CSS logical properties (start/end vs left/right)
|
||||||
|
- Bidirectional text rendering
|
||||||
|
- Mirrored layouts for RTL languages
|
||||||
|
- Icon orientation adjustments
|
||||||
|
|
||||||
|
### XVI. Mobile-First Considerations
|
||||||
|
**Desktop second, mobile first.**
|
||||||
|
|
||||||
|
**Responsive Design:**
|
||||||
|
- All UI MUST work on 320px width
|
||||||
|
- Touch-friendly targets (44px minimum)
|
||||||
|
- No hover-dependent interactions
|
||||||
|
- Optimized images (WebP with fallback)
|
||||||
|
|
||||||
|
**Progressive Web App (PWA):**
|
||||||
|
- Service worker for offline capability
|
||||||
|
- App manifest for "Add to Home Screen"
|
||||||
|
- Push notifications for real-time updates
|
||||||
|
- Background sync for offline actions
|
||||||
|
|
||||||
|
**Native Mobile (Future):**
|
||||||
|
- React Native for iOS/Android
|
||||||
|
- Shared API client with web
|
||||||
|
- Biometric authentication
|
||||||
|
- Camera integration for work orders
|
||||||
|
|
||||||
|
## Business Logic Constraints
|
||||||
|
|
||||||
|
### User Management Rules
|
||||||
|
- Email addresses MUST be unique globally
|
||||||
|
- Passwords MUST meet complexity requirements (12+ chars, special chars)
|
||||||
|
- Role changes MUST be logged with who/when/why
|
||||||
|
- Account deletion MUST be soft delete (preserve history)
|
||||||
|
- Failed login attempts MUST be logged for security monitoring
|
||||||
|
|
||||||
|
### Plugin Lifecycle Rules
|
||||||
|
- Plugin installation MUST be atomic (success or rollback)
|
||||||
|
- Plugin upgrades MUST run migrations automatically
|
||||||
|
- Plugin removal MUST clean up database tables
|
||||||
|
- Plugin failures MUST NOT crash kernel
|
||||||
|
- Plugin resource usage MUST be monitored and limited
|
||||||
|
|
||||||
|
### Data Consistency Rules
|
||||||
|
- Database transactions MUST be used for multi-step operations
|
||||||
|
- Event publishing MUST use transactional outbox pattern
|
||||||
|
- Cache invalidation MUST happen synchronously with writes
|
||||||
|
- Concurrent updates MUST use optimistic locking
|
||||||
|
- Data migrations MUST be tested on copy of production data
|
||||||
|
|
||||||
|
## Violation Consequences
|
||||||
|
|
||||||
|
### Severity Levels
|
||||||
|
|
||||||
|
**P0 - Immediate Rejection:**
|
||||||
|
- NO CREATIVITY rule violations (extra files, features)
|
||||||
|
- NO ASSUMPTIONS rule violations (implementing without confirmation)
|
||||||
|
- Security vulnerabilities (SQL injection, XSS)
|
||||||
|
- Breaking core simplicity (>5K lines kernel)
|
||||||
|
- Database-specific SQL in plugins
|
||||||
|
- Direct plugin-to-plugin communication
|
||||||
|
|
||||||
|
**P1 - Requires Immediate Fix:**
|
||||||
|
- Missing tests for new features
|
||||||
|
- Files >500 lines
|
||||||
|
- Functions >50 lines
|
||||||
|
- Performance regressions >10%
|
||||||
|
- Missing documentation
|
||||||
|
|
||||||
|
**P2 - Fix Before Merge:**
|
||||||
|
- Inconsistent naming conventions
|
||||||
|
- Missing error handling
|
||||||
|
- Hard-coded configuration
|
||||||
|
- Poor variable names
|
||||||
|
- Missing type annotations
|
||||||
|
|
||||||
|
## Governance
|
||||||
|
|
||||||
|
### Amendment Process
|
||||||
|
1. Propose change in GitHub issue
|
||||||
|
2. Discuss with team (async, 7-day minimum)
|
||||||
|
3. Vote (majority approval required)
|
||||||
|
4. Update constitution with version bump
|
||||||
|
5. Notify all developers
|
||||||
|
6. Migration plan if needed
|
||||||
|
|
||||||
|
### Review Requirements
|
||||||
|
- All PRs MUST reference constitution compliance
|
||||||
|
- Architecture decisions MUST be documented in ADR format
|
||||||
|
- Breaking changes MUST bump version and provide migration guide
|
||||||
|
- New principles MUST have rationale documented
|
||||||
|
|
||||||
|
### AI Agent Instructions
|
||||||
|
When working on BOSA:
|
||||||
|
1. Read this constitution FIRST before ANY code changes
|
||||||
|
2. Verify request against NO CREATIVITY rule
|
||||||
|
3. Verify request against NO ASSUMPTIONS rule - ANSWER questions, don't implement solutions
|
||||||
|
4. Check if change belongs in core or plugin
|
||||||
|
5. Ensure multi-language/multi-database compatibility
|
||||||
|
6. Write tests BEFORE implementation
|
||||||
|
7. Keep files under 500 lines
|
||||||
|
8. Document WHY, not WHAT
|
||||||
|
9. ASK before adding anything beyond exact request
|
||||||
|
10. When user asks a question → ANSWER first, WAIT for confirmation before implementing
|
||||||
|
11. **CRITICAL: Version Bumping Rules (NEVER VIOLATE - ABSOLUTE PRIORITY):**
|
||||||
|
- **⚠️ NEVER EVER REVERSE VERSION NUMBERS BACKWARDS ⚠️**
|
||||||
|
- **⚠️ VERSION NUMBERS CAN ONLY INCREASE, NEVER DECREASE ⚠️**
|
||||||
|
- **⚠️ IF YOU DECREASE A VERSION NUMBER, YOU ARE VIOLATING THE CONSTITUTION ⚠️**
|
||||||
|
|
||||||
|
**Version Source of Truth Logic:**
|
||||||
|
- The source of truth for current version is the **`version.txt` file**, NOT git HEAD
|
||||||
|
- If `version.txt` shows build number 077 and git HEAD shows 068, this means git hasn't been updated yet
|
||||||
|
- This is NORMAL - git may be behind the actual current version
|
||||||
|
|
||||||
|
**Bumping Rules:**
|
||||||
|
- **ALWAYS check `version.txt` file FIRST** (not git HEAD)
|
||||||
|
- **ALWAYS bump ABOVE the higher number found in `version.txt`**
|
||||||
|
- Example: If `version.txt` shows 0.0.2.077 and git shows 0.0.2.068 → bump to **0.0.2.078** (NOT 0.0.2.069)
|
||||||
|
- Example: If `version.txt` shows 0.0.2.100 and git shows 0.0.2.050 → bump to **0.0.2.101** (NOT 0.0.2.051)
|
||||||
|
|
||||||
|
**What to NEVER do:**
|
||||||
|
- ❌ NEVER use git HEAD version to determine bump number
|
||||||
|
- ❌ NEVER decrease version numbers under ANY circumstances
|
||||||
|
- ❌ NEVER bump to a number lower than what's in `version.txt`
|
||||||
|
- ❌ NEVER assume git HEAD is current - it may be outdated
|
||||||
|
|
||||||
|
**The Rule: `version.txt` = Source of Truth → Always bump above the number in `version.txt`**
|
||||||
|
12. **CRITICAL: ALL new files MUST be committed to git IMMEDIATELY after creation and testing. NO EXCEPTIONS. Untracked files violate project rules and can be lost.**
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
|
||||||
|
**Version 1.0.0** | **Ratified**: 2025-11-19 | **Status**: Active
|
||||||
|
|
||||||
|
### Key Decisions
|
||||||
|
- Go for kernel (single binary simplicity)
|
||||||
|
- Multi-language plugin support (ecosystem growth)
|
||||||
|
- Real-time WebSocket built-in (not optional)
|
||||||
|
- Multi-database from day one (no vendor lock-in)
|
||||||
|
- Radical simplicity (WordPress-level ease)
|
||||||
|
- NO CREATIVITY rule (prevent over-engineering)
|
||||||
|
|
||||||
|
### Future Considerations
|
||||||
|
- WASM plugin runtime (v2.0)
|
||||||
|
- GraphQL API layer (v1.5)
|
||||||
|
- Plugin marketplace (v1.2)
|
||||||
|
- Visual plugin builder (v2.0)
|
||||||
|
- Multi-region deployment (v3.0)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**This constitution is the law of BOSA development. All other documents, patterns, and practices are subordinate. When in doubt, ask: "Does this make BOSA simpler?" If no, don't do it.**
|
||||||
|
|
||||||
|
**Remember**: The best code is no code. The second best is code so simple that AI can write and maintain it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*"Complexity is the enemy. Simplicity is the ultimate sophistication." - Leonardo da Vinci*
|
||||||
|
|
||||||
|
*"Make it work, make it right, make it fast - in that order. And make it simple throughout." - Kent Beck (adapted)*
|
||||||
11
.cursor/rules/change-discipline.mdc
Normal file
11
.cursor/rules/change-discipline.mdc
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
description: Force review before applying
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
1. Understand the request fully.
|
||||||
|
2. If the change touches >3 files or is architectural → output a clear numbered plan and wait for “proceed”.
|
||||||
|
3. Generate code → run tests → show diff → ask “Apply this?” (never auto-apply large changes).
|
||||||
|
4. After user says yes → apply and re-run tests.
|
||||||
|
5. Never say “looks good” if you haven’t actually executed the code/tests.
|
||||||
10
.cursor/rules/no-hallucinations.mdc
Normal file
10
.cursor/rules/no-hallucinations.mdc
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
description: Prevent inventing APIs or ignoring real code
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
- Base all code on the actual codebase, not assumptions.
|
||||||
|
- If a function/class/pattern might exist, search the codebase first (@Codebase or grep).
|
||||||
|
- Never use placeholder comments like “implement later”. Implement or ask.
|
||||||
|
- For external libraries: only use versions and APIs that actually exist in package.json/requirements.txt/etc.
|
||||||
|
- If the codebase has an established pattern (e.g., custom hooks, service layer), follow it exactly — never introduce a new one without asking.
|
||||||
13
.cursor/rules/testing-first.mdc
Normal file
13
.cursor/rules/testing-first.mdc
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
description: Force test execution & writing
|
||||||
|
globs: ["**/*.ts", "**/*.js", "**/*.py", "**/*.go", etc.]
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Testing is mandatory
|
||||||
|
- Every non-trivial change must include or update tests.
|
||||||
|
- After generating code, always run the full test suite (npm test / pytest / go test / etc.).
|
||||||
|
- If tests are missing for the area you touch, write them first.
|
||||||
|
- Enable YOLO mode only for allowed test commands (configure in Cursor settings → Features → YOLO).
|
||||||
|
- If any test fails → fix it before presenting the final diff.
|
||||||
|
- Use “Run tests and fix any failures” as your default loop.
|
||||||
5
.cursor/worktrees.json
Normal file
5
.cursor/worktrees.json
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"setup-worktree": [
|
||||||
|
"npm install"
|
||||||
|
]
|
||||||
|
}
|
||||||
51
.gitignore
vendored
Normal file
51
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Dependencies
|
||||||
|
node_modules/
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
|
||||||
|
# Build outputs
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
logs/
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
coverage/
|
||||||
|
.nyc_output/
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Database
|
||||||
|
*.db
|
||||||
|
*.sqlite
|
||||||
|
*.sqlite3
|
||||||
|
|
||||||
|
# Deployment
|
||||||
|
*.zip
|
||||||
|
!builds/**/*.zip
|
||||||
|
|
||||||
43
README.md
Normal file
43
README.md
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# BP_WB - BOSA Plugin Website Builder
|
||||||
|
|
||||||
|
Visual drag-and-drop page builder for BOSA apps, allowing users to create rich UI/UX interfaces without coding.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
**App Name:** bp_wb (BOSA Plugin Website Builder)
|
||||||
|
**Version:** 0.1.0 (Initial Development)
|
||||||
|
**Runtime:** Node.js with React/TypeScript
|
||||||
|
**Target:** Elementor/Beaver Builder level functionality
|
||||||
|
**Purpose:** Visual drag-and-drop page builder for BOSA apps, allowing users to create rich UI/UX interfaces without coding
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- **[Developer Guide](docs/DEVELOPER_GUIDE.md)** - Complete development guide
|
||||||
|
- **[Development Roadmap](docs/BP_WB_DEVELOPMENT_ROADMAP.md)** - Project roadmap and phases
|
||||||
|
- **[Features List](docs/BP_WB_FEATURES_LIST.md)** - Complete feature list
|
||||||
|
- **[Linear Issues](docs/BP_WB_LINEAR_ISSUES.md)** - All development issues formatted for Linear
|
||||||
|
|
||||||
|
## Technology Stack
|
||||||
|
|
||||||
|
- **Frontend:** React + TypeScript
|
||||||
|
- **Backend:** Node.js + Express/Fastify
|
||||||
|
- **Build Tools:** Vite/Webpack
|
||||||
|
- **Drag & Drop:** React DnD / React Flow
|
||||||
|
- **Styling:** Tailwind CSS
|
||||||
|
- **State Management:** Zustand/Redux
|
||||||
|
|
||||||
|
## Project Status
|
||||||
|
|
||||||
|
**Current Phase:** Planning
|
||||||
|
**Status:** Initial setup and issue tracking
|
||||||
|
**Total Features:** 71 features across 8 phases
|
||||||
|
**Estimated Timeline:** 32 weeks (8 months)
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
This project is currently in the planning phase. Documentation and issues are being prepared for development.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[To be determined]
|
||||||
|
|
||||||
387
docs/BP_WB_DEVELOPMENT_ROADMAP.md
Normal file
387
docs/BP_WB_DEVELOPMENT_ROADMAP.md
Normal file
|
|
@ -0,0 +1,387 @@
|
||||||
|
# BP_WB (BOSA Plugin Website Builder) - Development Roadmap
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
**App Name:** bp_wb (BOSA Plugin Website Builder)
|
||||||
|
**Version:** 0.1.0 (Initial Development)
|
||||||
|
**Runtime:** Node.js with React/TypeScript
|
||||||
|
**Target:** Elementor/Beaver Builder level functionality
|
||||||
|
**Purpose:** Visual drag-and-drop page builder for BOSA apps, allowing users to create rich UI/UX interfaces without coding
|
||||||
|
|
||||||
|
## Technology Stack Recommendation
|
||||||
|
|
||||||
|
### Primary Stack: **Node.js + React + TypeScript**
|
||||||
|
|
||||||
|
**Rationale:**
|
||||||
|
- **React**: Industry standard for visual editors (Elementor, Webflow, etc. use React)
|
||||||
|
- **TypeScript**: Type safety for complex editor logic
|
||||||
|
- **Node.js**: Full-stack capability, can share code between editor and renderer
|
||||||
|
- **Express/Fastify**: Backend API for page config storage
|
||||||
|
- **React DnD / React Flow**: Drag-and-drop functionality
|
||||||
|
- **Tailwind CSS**: Utility-first styling for editor UI
|
||||||
|
- **Zustand/Redux**: State management for editor state
|
||||||
|
|
||||||
|
**Alternative Considerations:**
|
||||||
|
- **Go + React**: Could use Go for backend, React for frontend (more complex)
|
||||||
|
- **Vue.js**: Alternative to React (less ecosystem for visual editors)
|
||||||
|
- **PHP**: WordPress ecosystem (but less modern, harder to build visual editors)
|
||||||
|
|
||||||
|
**Recommendation: Node.js + React + TypeScript** - Best fit for visual editor development
|
||||||
|
|
||||||
|
## Architecture Overview
|
||||||
|
|
||||||
|
```
|
||||||
|
bp_wb/
|
||||||
|
├── manifest.yaml
|
||||||
|
├── package.json
|
||||||
|
├── tsconfig.json
|
||||||
|
├── frontend/
|
||||||
|
│ ├── editor/ # Visual editor UI
|
||||||
|
│ │ ├── components/
|
||||||
|
│ │ │ ├── Canvas.tsx # Main editing canvas
|
||||||
|
│ │ │ ├── Toolbar.tsx # Top toolbar (save, preview, etc.)
|
||||||
|
│ │ │ ├── Sidebar.tsx # Component palette sidebar
|
||||||
|
│ │ │ ├── Properties.tsx # Property panel
|
||||||
|
│ │ │ ├── Layers.tsx # Layer tree view
|
||||||
|
│ │ │ └── Responsive.tsx # Responsive breakpoint switcher
|
||||||
|
│ │ ├── hooks/
|
||||||
|
│ │ │ ├── useEditor.ts
|
||||||
|
│ │ │ ├── useDragDrop.ts
|
||||||
|
│ │ │ └── useUndoRedo.ts
|
||||||
|
│ │ └── store/
|
||||||
|
│ │ └── editorStore.ts # Zustand/Redux store
|
||||||
|
│ ├── renderer/ # Page renderer (public-facing)
|
||||||
|
│ │ ├── ComponentRenderer.tsx
|
||||||
|
│ │ ├── LayoutEngine.tsx
|
||||||
|
│ │ └── StyleInjector.tsx
|
||||||
|
│ └── components/ # Reusable UI components
|
||||||
|
│ ├── base/ # Base components (Button, Card, etc.)
|
||||||
|
│ ├── layout/ # Layout components (Container, Grid, etc.)
|
||||||
|
│ └── custom/ # Custom component registry
|
||||||
|
├── backend/
|
||||||
|
│ ├── api/
|
||||||
|
│ │ ├── pages.ts # Page CRUD endpoints
|
||||||
|
│ │ ├── templates.ts # Template management
|
||||||
|
│ │ ├── components.ts # Component registry API
|
||||||
|
│ │ ├── assets.ts # Asset upload/management
|
||||||
|
│ │ └── export.ts # Export to theme
|
||||||
|
│ ├── storage/
|
||||||
|
│ │ ├── pageConfig.ts # Page config storage
|
||||||
|
│ │ └── versionControl.ts # Version history
|
||||||
|
│ └── renderer/
|
||||||
|
│ └── serverRenderer.ts # Server-side rendering
|
||||||
|
├── migrations/
|
||||||
|
│ └── 001_initial_schema.sql
|
||||||
|
└── docs/
|
||||||
|
└── DEVELOPER_GUIDE.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Database Schema
|
||||||
|
|
||||||
|
### Core Tables
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- Page configurations
|
||||||
|
CREATE TABLE wb_pages (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
app_name VARCHAR(255) NOT NULL,
|
||||||
|
route_path VARCHAR(500) NOT NULL,
|
||||||
|
page_config JSONB NOT NULL,
|
||||||
|
version INTEGER DEFAULT 1,
|
||||||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
updated_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
created_by INTEGER,
|
||||||
|
UNIQUE(app_name, route_path)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Page versions (for history/rollback)
|
||||||
|
CREATE TABLE wb_page_versions (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
page_id INTEGER REFERENCES wb_pages(id),
|
||||||
|
version INTEGER NOT NULL,
|
||||||
|
page_config JSONB NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
created_by INTEGER
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Templates (starting points)
|
||||||
|
CREATE TABLE wb_templates (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
description TEXT,
|
||||||
|
category VARCHAR(100),
|
||||||
|
template_config JSONB NOT NULL,
|
||||||
|
preview_image VARCHAR(500),
|
||||||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
created_by INTEGER
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Component registry (custom components from plugins)
|
||||||
|
CREATE TABLE wb_components (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
plugin_name VARCHAR(255) NOT NULL,
|
||||||
|
component_name VARCHAR(255) NOT NULL,
|
||||||
|
component_config JSONB NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
UNIQUE(plugin_name, component_name)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Asset library
|
||||||
|
CREATE TABLE wb_assets (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
filename VARCHAR(255) NOT NULL,
|
||||||
|
file_path VARCHAR(500) NOT NULL,
|
||||||
|
file_type VARCHAR(50),
|
||||||
|
file_size INTEGER,
|
||||||
|
uploaded_by INTEGER,
|
||||||
|
created_at TIMESTAMP DEFAULT NOW()
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Phases
|
||||||
|
|
||||||
|
### Phase 1: Foundation (Weeks 1-4)
|
||||||
|
**Goal:** Basic editor with core functionality
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Project setup (Node.js, React, TypeScript)
|
||||||
|
- [ ] Basic editor UI (canvas, toolbar, sidebar)
|
||||||
|
- [ ] Drag-and-drop system
|
||||||
|
- [ ] Component palette (10 base components)
|
||||||
|
- [ ] Property panel (basic properties)
|
||||||
|
- [ ] Page config storage (database)
|
||||||
|
- [ ] Basic renderer (render page from config)
|
||||||
|
- [ ] Save/load functionality
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Working editor UI
|
||||||
|
- Can create simple pages
|
||||||
|
- Can save and view pages
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 2: Core Editing (Weeks 5-8)
|
||||||
|
**Goal:** Full editing capabilities
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Undo/Redo system
|
||||||
|
- [ ] Copy/Paste components
|
||||||
|
- [ ] Delete components
|
||||||
|
- [ ] Layer tree view
|
||||||
|
- [ ] Component selection/highlighting
|
||||||
|
- [ ] Property editor (colors, fonts, spacing, etc.)
|
||||||
|
- [ ] Responsive breakpoints (desktop, tablet, mobile)
|
||||||
|
- [ ] Grid system (12-column, flexbox)
|
||||||
|
- [ ] Container components
|
||||||
|
- [ ] Section components
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Full editing workflow
|
||||||
|
- Responsive design support
|
||||||
|
- Professional property editing
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 3: Advanced Components (Weeks 9-12)
|
||||||
|
**Goal:** Rich component library
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Text components (Heading, Paragraph, Rich Text)
|
||||||
|
- [ ] Media components (Image, Video, Gallery)
|
||||||
|
- [ ] Form components (Input, Textarea, Select, Button)
|
||||||
|
- [ ] Layout components (Row, Column, Container, Section)
|
||||||
|
- [ ] Navigation components (Menu, Breadcrumb)
|
||||||
|
- [ ] Content components (Card, Accordion, Tabs)
|
||||||
|
- [ ] Interactive components (Modal, Dropdown, Tooltip)
|
||||||
|
- [ ] Component nesting (components within components)
|
||||||
|
- [ ] Component templates (pre-built component groups)
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Comprehensive component library
|
||||||
|
- Can build complex layouts
|
||||||
|
- Professional UI components
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 4: Styling & Design (Weeks 13-16)
|
||||||
|
**Goal:** Advanced styling capabilities
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Color picker (with palette)
|
||||||
|
- [ ] Typography editor (font family, size, weight, line height)
|
||||||
|
- [ ] Spacing controls (margin, padding)
|
||||||
|
- [ ] Border editor (width, style, color, radius)
|
||||||
|
- [ ] Shadow editor (box shadow, text shadow)
|
||||||
|
- [ ] Background editor (color, image, gradient)
|
||||||
|
- [ ] Animation editor (transitions, transforms)
|
||||||
|
- [ ] Custom CSS editor (advanced users)
|
||||||
|
- [ ] Style presets (save/load style sets)
|
||||||
|
- [ ] Global styles (theme-level styling)
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Professional styling tools
|
||||||
|
- Can create beautiful designs
|
||||||
|
- Advanced customization options
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 5: Templates & Themes (Weeks 17-20)
|
||||||
|
**Goal:** Template system and theme integration
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Template library (pre-built page templates)
|
||||||
|
- [ ] Template categories (landing, blog, shop, etc.)
|
||||||
|
- [ ] Import/export templates
|
||||||
|
- [ ] Theme integration (use BOSA themes as base)
|
||||||
|
- [ ] Export page to theme (convert page config to theme)
|
||||||
|
- [ ] Template marketplace (share templates)
|
||||||
|
- [ ] Clone page functionality
|
||||||
|
- [ ] Page templates (header, footer, sidebar templates)
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Template system
|
||||||
|
- Theme integration
|
||||||
|
- Can export to themes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 6: Advanced Features (Weeks 21-24)
|
||||||
|
**Goal:** Professional features
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Version history (view/restore previous versions)
|
||||||
|
- [ ] Collaboration (multiple users editing)
|
||||||
|
- [ ] Comments/annotations
|
||||||
|
- [ ] Asset library (image/video management)
|
||||||
|
- [ ] Media upload/management
|
||||||
|
- [ ] SEO editor (meta tags, Open Graph)
|
||||||
|
- [ ] Custom code injection (head, body)
|
||||||
|
- [ ] Conditional visibility (show/hide based on conditions)
|
||||||
|
- [ ] Dynamic content (connect to app data)
|
||||||
|
- [ ] Form builder (create forms with validation)
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Professional features
|
||||||
|
- Production-ready tool
|
||||||
|
- Advanced capabilities
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 7: Plugin Integration (Weeks 25-28)
|
||||||
|
**Goal:** Integration with BOSA ecosystem
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Plugin component registry (plugins can register components)
|
||||||
|
- [ ] Plugin widget system (plugins provide widgets)
|
||||||
|
- [ ] App-specific components (components from other apps)
|
||||||
|
- [ ] Event system (components can trigger/listen to events)
|
||||||
|
- [ ] Data binding (connect components to app data)
|
||||||
|
- [ ] API integration (fetch data from app APIs)
|
||||||
|
- [ ] Authentication integration (show/hide based on auth)
|
||||||
|
- [ ] Multi-language support (i18n components)
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Full BOSA integration
|
||||||
|
- Extensible component system
|
||||||
|
- Plugin ecosystem support
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 8: Performance & Polish (Weeks 29-32)
|
||||||
|
**Goal:** Optimization and refinement
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- [ ] Performance optimization (lazy loading, code splitting)
|
||||||
|
- [ ] Renderer optimization (fast page rendering)
|
||||||
|
- [ ] Editor performance (smooth editing experience)
|
||||||
|
- [ ] Mobile editor (responsive editor UI)
|
||||||
|
- [ ] Keyboard shortcuts
|
||||||
|
- [ ] Accessibility (WCAG compliance)
|
||||||
|
- [ ] Documentation (user guide, API docs)
|
||||||
|
- [ ] Testing (unit, integration, E2E)
|
||||||
|
- [ ] Bug fixes and refinements
|
||||||
|
|
||||||
|
**Deliverables:**
|
||||||
|
- Production-ready app
|
||||||
|
- Optimized performance
|
||||||
|
- Complete documentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Feature Comparison with Elementor/Beaver Builder
|
||||||
|
|
||||||
|
### Elementor Features (Reference)
|
||||||
|
- ✅ Drag-and-drop editor
|
||||||
|
- ✅ 100+ widgets
|
||||||
|
- ✅ Responsive editing
|
||||||
|
- ✅ Theme builder
|
||||||
|
- ✅ Template library
|
||||||
|
- ✅ Form builder
|
||||||
|
- ✅ Popup builder
|
||||||
|
- ✅ WooCommerce integration
|
||||||
|
- ✅ Dynamic content
|
||||||
|
- ✅ Custom CSS
|
||||||
|
- ✅ Animation builder
|
||||||
|
- ✅ Global widgets
|
||||||
|
- ✅ Version history
|
||||||
|
|
||||||
|
### BP_WB Target Features
|
||||||
|
- ✅ Drag-and-drop editor (Phase 1)
|
||||||
|
- ✅ Component library (Phase 3)
|
||||||
|
- ✅ Responsive editing (Phase 2)
|
||||||
|
- ✅ Theme integration (Phase 5)
|
||||||
|
- ✅ Template library (Phase 5)
|
||||||
|
- ✅ Form builder (Phase 6)
|
||||||
|
- ✅ Modal builder (Phase 3)
|
||||||
|
- ✅ BOSA app integration (Phase 7)
|
||||||
|
- ✅ Dynamic content (Phase 6)
|
||||||
|
- ✅ Custom CSS (Phase 4)
|
||||||
|
- ✅ Animation editor (Phase 4)
|
||||||
|
- ✅ Global components (Phase 3)
|
||||||
|
- ✅ Version history (Phase 6)
|
||||||
|
|
||||||
|
## Success Metrics
|
||||||
|
|
||||||
|
### Phase 1 Success:
|
||||||
|
- Can create a simple page with 5+ components
|
||||||
|
- Can save and view the page
|
||||||
|
- Editor is responsive and usable
|
||||||
|
|
||||||
|
### Phase 4 Success:
|
||||||
|
- Can create a professional landing page
|
||||||
|
- Styling tools are intuitive
|
||||||
|
- Pages render correctly
|
||||||
|
|
||||||
|
### Phase 8 Success:
|
||||||
|
- Can build any page type (landing, blog, shop, dashboard)
|
||||||
|
- Performance is excellent (< 2s page load)
|
||||||
|
- User satisfaction > 80%
|
||||||
|
|
||||||
|
## Risk Mitigation
|
||||||
|
|
||||||
|
### Technical Risks:
|
||||||
|
1. **Complexity**: Visual editors are complex
|
||||||
|
- *Mitigation*: Start simple, iterate, use proven libraries
|
||||||
|
2. **Performance**: Large page configs can be slow
|
||||||
|
- *Mitigation*: Optimize rendering, lazy loading, code splitting
|
||||||
|
3. **Browser Compatibility**: Different browser behaviors
|
||||||
|
- *Mitigation*: Use modern frameworks, test across browsers
|
||||||
|
|
||||||
|
### Scope Risks:
|
||||||
|
1. **Feature Creep**: Too many features
|
||||||
|
- *Mitigation*: Strict phase boundaries, MVP first
|
||||||
|
2. **Timeline**: May take longer than expected
|
||||||
|
- *Mitigation*: Realistic estimates, buffer time, prioritize
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
1. **Create Linear Issues**: Convert this roadmap to Linear issues
|
||||||
|
2. **Set up Development Environment**: Node.js, React, TypeScript setup
|
||||||
|
3. **Create App Structure**: Initialize bp_wb app structure
|
||||||
|
4. **Start Phase 1**: Begin foundation development
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Document Version:** 1.0
|
||||||
|
**Last Updated:** December 21, 2025
|
||||||
|
**Status:** Planning Phase
|
||||||
659
docs/BP_WB_FEATURES_LIST.md
Normal file
659
docs/BP_WB_FEATURES_LIST.md
Normal file
|
|
@ -0,0 +1,659 @@
|
||||||
|
# BP_WB (BOSA Plugin Website Builder) - Complete Features List
|
||||||
|
|
||||||
|
This document contains the complete feature list organized by development phases. Use this to create Linear issues for the bp_wb app development.
|
||||||
|
|
||||||
|
## Phase 1: Foundation (Weeks 1-4)
|
||||||
|
|
||||||
|
### WB-001: Project Setup and Infrastructure
|
||||||
|
- Initialize Node.js project with TypeScript
|
||||||
|
- Set up React development environment
|
||||||
|
- Configure build tools (Vite/Webpack)
|
||||||
|
- Set up ESLint, Prettier
|
||||||
|
- Create project structure
|
||||||
|
- Set up testing framework (Jest, React Testing Library)
|
||||||
|
- Configure CI/CD pipeline
|
||||||
|
|
||||||
|
### WB-002: Basic Editor UI Layout
|
||||||
|
- Create main editor container
|
||||||
|
- Implement top toolbar (save, preview, exit)
|
||||||
|
- Create left sidebar (component palette)
|
||||||
|
- Create right sidebar (property panel)
|
||||||
|
- Create center canvas area
|
||||||
|
- Implement responsive editor layout
|
||||||
|
- Add loading states
|
||||||
|
|
||||||
|
### WB-003: Drag-and-Drop System
|
||||||
|
- Implement drag-and-drop library (React DnD)
|
||||||
|
- Create draggable component items
|
||||||
|
- Create drop zones on canvas
|
||||||
|
- Handle drag start/end events
|
||||||
|
- Visual feedback during drag
|
||||||
|
- Prevent invalid drops
|
||||||
|
|
||||||
|
### WB-004: Component Palette (Base Components)
|
||||||
|
- Create component palette UI
|
||||||
|
- Implement 10 base components:
|
||||||
|
- Button
|
||||||
|
- Heading
|
||||||
|
- Paragraph
|
||||||
|
- Image
|
||||||
|
- Container
|
||||||
|
- Section
|
||||||
|
- Row
|
||||||
|
- Column
|
||||||
|
- Divider
|
||||||
|
- Spacer
|
||||||
|
- Component icons and labels
|
||||||
|
- Search/filter components
|
||||||
|
|
||||||
|
### WB-005: Property Panel (Basic)
|
||||||
|
- Create property panel UI
|
||||||
|
- Implement basic property editors:
|
||||||
|
- Text input
|
||||||
|
- Number input
|
||||||
|
- Color picker (basic)
|
||||||
|
- Select dropdown
|
||||||
|
- Property grouping
|
||||||
|
- Show/hide properties based on component
|
||||||
|
|
||||||
|
### WB-006: Page Config Storage
|
||||||
|
- Design page config JSON schema
|
||||||
|
- Create database table (wb_pages)
|
||||||
|
- Implement save page API endpoint
|
||||||
|
- Implement load page API endpoint
|
||||||
|
- Implement update page API endpoint
|
||||||
|
- Implement delete page API endpoint
|
||||||
|
- Error handling and validation
|
||||||
|
|
||||||
|
### WB-007: Basic Renderer
|
||||||
|
- Create renderer component
|
||||||
|
- Parse page config JSON
|
||||||
|
- Render components from config
|
||||||
|
- Apply basic styles
|
||||||
|
- Handle component nesting
|
||||||
|
- Error boundaries
|
||||||
|
|
||||||
|
### WB-008: Save/Load Functionality
|
||||||
|
- Implement save button in toolbar
|
||||||
|
- Auto-save functionality (debounced)
|
||||||
|
- Load page on editor open
|
||||||
|
- Unsaved changes warning
|
||||||
|
- Save success/error notifications
|
||||||
|
- Loading states
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 2: Core Editing (Weeks 5-8)
|
||||||
|
|
||||||
|
### WB-009: Undo/Redo System
|
||||||
|
- Implement command pattern for actions
|
||||||
|
- Create undo/redo stack
|
||||||
|
- Keyboard shortcuts (Ctrl+Z, Ctrl+Y)
|
||||||
|
- Undo/redo buttons in toolbar
|
||||||
|
- Visual feedback
|
||||||
|
- Limit stack size (performance)
|
||||||
|
|
||||||
|
### WB-010: Copy/Paste Components
|
||||||
|
- Implement copy component functionality
|
||||||
|
- Implement paste component functionality
|
||||||
|
- Keyboard shortcuts (Ctrl+C, Ctrl+V)
|
||||||
|
- Copy multiple components
|
||||||
|
- Paste with position offset
|
||||||
|
- Clipboard management
|
||||||
|
|
||||||
|
### WB-011: Delete Components
|
||||||
|
- Implement delete component functionality
|
||||||
|
- Delete button in property panel
|
||||||
|
- Keyboard shortcut (Delete key)
|
||||||
|
- Delete confirmation dialog
|
||||||
|
- Delete nested components
|
||||||
|
- Undo delete support
|
||||||
|
|
||||||
|
### WB-012: Layer Tree View
|
||||||
|
- Create layer tree sidebar
|
||||||
|
- Display component hierarchy
|
||||||
|
- Expand/collapse layers
|
||||||
|
- Select component from layer tree
|
||||||
|
- Drag to reorder layers
|
||||||
|
- Visual indicators (selected, hidden)
|
||||||
|
|
||||||
|
### WB-013: Component Selection
|
||||||
|
- Click to select component
|
||||||
|
- Visual selection indicator (outline)
|
||||||
|
- Multi-select (Ctrl+Click, Shift+Click)
|
||||||
|
- Selection handles (resize, move)
|
||||||
|
- Deselect (click outside)
|
||||||
|
- Selection in layer tree
|
||||||
|
|
||||||
|
### WB-014: Property Editor (Advanced)
|
||||||
|
- Typography editor (font family, size, weight, line height)
|
||||||
|
- Spacing editor (margin, padding)
|
||||||
|
- Border editor (width, style, color, radius)
|
||||||
|
- Background editor (color, image, gradient)
|
||||||
|
- Shadow editor (box shadow, text shadow)
|
||||||
|
- Layout editor (display, flex, grid)
|
||||||
|
- Position editor (relative, absolute, fixed)
|
||||||
|
|
||||||
|
### WB-015: Responsive Breakpoints
|
||||||
|
- Desktop breakpoint (default, 1920px+)
|
||||||
|
- Tablet breakpoint (768px - 1919px)
|
||||||
|
- Mobile breakpoint (320px - 767px)
|
||||||
|
- Breakpoint switcher in toolbar
|
||||||
|
- Per-breakpoint property editing
|
||||||
|
- Responsive preview mode
|
||||||
|
|
||||||
|
### WB-016: Grid System
|
||||||
|
- 12-column grid system
|
||||||
|
- Grid container component
|
||||||
|
- Grid column component
|
||||||
|
- Flexbox layout support
|
||||||
|
- CSS Grid support
|
||||||
|
- Responsive grid (different columns per breakpoint)
|
||||||
|
|
||||||
|
### WB-017: Container Components
|
||||||
|
- Container component (max-width, centered)
|
||||||
|
- Section component (full-width sections)
|
||||||
|
- Row component (horizontal layout)
|
||||||
|
- Column component (vertical layout)
|
||||||
|
- Nested containers
|
||||||
|
- Container spacing options
|
||||||
|
|
||||||
|
### WB-018: Section Components
|
||||||
|
- Section component (page sections)
|
||||||
|
- Section background options
|
||||||
|
- Section padding/margin
|
||||||
|
- Section height options (auto, full, custom)
|
||||||
|
- Section overflow handling
|
||||||
|
- Section z-index management
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 3: Advanced Components (Weeks 9-12)
|
||||||
|
|
||||||
|
### WB-019: Text Components
|
||||||
|
- Heading component (H1-H6)
|
||||||
|
- Paragraph component
|
||||||
|
- Rich text editor component
|
||||||
|
- Text formatting (bold, italic, underline)
|
||||||
|
- Text alignment (left, center, right, justify)
|
||||||
|
- Text color and styling
|
||||||
|
- Link component
|
||||||
|
|
||||||
|
### WB-020: Media Components
|
||||||
|
- Image component
|
||||||
|
- Image upload functionality
|
||||||
|
- Image optimization
|
||||||
|
- Image gallery component
|
||||||
|
- Video component (YouTube, Vimeo, self-hosted)
|
||||||
|
- Video player controls
|
||||||
|
- Audio component
|
||||||
|
- Media library integration
|
||||||
|
|
||||||
|
### WB-021: Form Components
|
||||||
|
- Input component (text, email, password, number)
|
||||||
|
- Textarea component
|
||||||
|
- Select dropdown component
|
||||||
|
- Checkbox component
|
||||||
|
- Radio button component
|
||||||
|
- File upload component
|
||||||
|
- Form container component
|
||||||
|
- Form validation (basic)
|
||||||
|
|
||||||
|
### WB-022: Layout Components
|
||||||
|
- Advanced Row component (flexbox options)
|
||||||
|
- Advanced Column component (flexbox options)
|
||||||
|
- Stack component (vertical/horizontal stacking)
|
||||||
|
- Grid component (CSS Grid)
|
||||||
|
- Spacer component (flexible spacing)
|
||||||
|
- Divider component (horizontal/vertical lines)
|
||||||
|
|
||||||
|
### WB-023: Navigation Components
|
||||||
|
- Menu component (horizontal/vertical)
|
||||||
|
- Menu item component
|
||||||
|
- Breadcrumb component
|
||||||
|
- Pagination component
|
||||||
|
- Tab navigation component
|
||||||
|
- Accordion component
|
||||||
|
- Sidebar navigation component
|
||||||
|
|
||||||
|
### WB-024: Content Components
|
||||||
|
- Card component
|
||||||
|
- Card header, body, footer
|
||||||
|
- Accordion component
|
||||||
|
- Tabs component
|
||||||
|
- Modal component
|
||||||
|
- Tooltip component
|
||||||
|
- Popover component
|
||||||
|
- Alert component
|
||||||
|
|
||||||
|
### WB-025: Interactive Components
|
||||||
|
- Modal/Dialog component
|
||||||
|
- Dropdown component
|
||||||
|
- Tooltip component
|
||||||
|
- Popover component
|
||||||
|
- Carousel/Slider component
|
||||||
|
- Tabs component
|
||||||
|
- Accordion component
|
||||||
|
- Collapse component
|
||||||
|
|
||||||
|
### WB-026: Component Nesting
|
||||||
|
- Support nested components
|
||||||
|
- Nesting depth limits
|
||||||
|
- Visual nesting indicators
|
||||||
|
- Drag components into other components
|
||||||
|
- Nested component selection
|
||||||
|
- Nested component properties
|
||||||
|
|
||||||
|
### WB-027: Component Templates
|
||||||
|
- Pre-built component groups
|
||||||
|
- Save component group as template
|
||||||
|
- Load component template
|
||||||
|
- Template library
|
||||||
|
- Template categories
|
||||||
|
- Template search
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 4: Styling & Design (Weeks 13-16)
|
||||||
|
|
||||||
|
### WB-028: Color Picker (Advanced)
|
||||||
|
- Full color picker (HSV, RGB, HEX)
|
||||||
|
- Color palette (saved colors)
|
||||||
|
- Color history
|
||||||
|
- Gradient editor
|
||||||
|
- Color opacity/alpha
|
||||||
|
- Color presets
|
||||||
|
- Global color variables
|
||||||
|
|
||||||
|
### WB-029: Typography Editor
|
||||||
|
- Font family selector (Google Fonts integration)
|
||||||
|
- Font size editor (px, em, rem)
|
||||||
|
- Font weight selector
|
||||||
|
- Line height editor
|
||||||
|
- Letter spacing editor
|
||||||
|
- Text transform (uppercase, lowercase, capitalize)
|
||||||
|
- Text decoration (underline, strikethrough)
|
||||||
|
|
||||||
|
### WB-030: Spacing Controls
|
||||||
|
- Margin editor (top, right, bottom, left)
|
||||||
|
- Padding editor (top, right, bottom, left)
|
||||||
|
- Spacing presets
|
||||||
|
- Responsive spacing (different per breakpoint)
|
||||||
|
- Spacing units (px, em, rem, %)
|
||||||
|
- Visual spacing indicators
|
||||||
|
|
||||||
|
### WB-031: Border Editor
|
||||||
|
- Border width editor
|
||||||
|
- Border style selector (solid, dashed, dotted)
|
||||||
|
- Border color picker
|
||||||
|
- Border radius editor (individual corners)
|
||||||
|
- Border presets
|
||||||
|
- Responsive borders
|
||||||
|
|
||||||
|
### WB-032: Shadow Editor
|
||||||
|
- Box shadow editor (x, y, blur, spread, color)
|
||||||
|
- Text shadow editor
|
||||||
|
- Shadow presets
|
||||||
|
- Multiple shadows support
|
||||||
|
- Shadow preview
|
||||||
|
- Responsive shadows
|
||||||
|
|
||||||
|
### WB-033: Background Editor
|
||||||
|
- Solid color background
|
||||||
|
- Image background (upload, URL)
|
||||||
|
- Image position (center, cover, contain)
|
||||||
|
- Image repeat (no-repeat, repeat, repeat-x, repeat-y)
|
||||||
|
- Gradient background (linear, radial)
|
||||||
|
- Gradient editor (colors, stops, angle)
|
||||||
|
- Video background
|
||||||
|
|
||||||
|
### WB-034: Animation Editor
|
||||||
|
- Transition editor (property, duration, easing)
|
||||||
|
- Transform editor (translate, rotate, scale, skew)
|
||||||
|
- Animation presets (fade, slide, bounce)
|
||||||
|
- Hover animations
|
||||||
|
- Scroll animations (basic)
|
||||||
|
- Animation preview
|
||||||
|
|
||||||
|
### WB-035: Custom CSS Editor
|
||||||
|
- Code editor for custom CSS
|
||||||
|
- Syntax highlighting
|
||||||
|
- CSS validation
|
||||||
|
- Scoped CSS (component-level)
|
||||||
|
- Global CSS (page-level)
|
||||||
|
- CSS minification
|
||||||
|
- CSS autocomplete
|
||||||
|
|
||||||
|
### WB-036: Style Presets
|
||||||
|
- Save style set (colors, fonts, spacing)
|
||||||
|
- Load style preset
|
||||||
|
- Style preset library
|
||||||
|
- Apply preset to component
|
||||||
|
- Apply preset to page
|
||||||
|
- Export/import presets
|
||||||
|
|
||||||
|
### WB-037: Global Styles
|
||||||
|
- Global color variables
|
||||||
|
- Global typography settings
|
||||||
|
- Global spacing scale
|
||||||
|
- Global border radius
|
||||||
|
- Global shadows
|
||||||
|
- Theme-level styling
|
||||||
|
- Style inheritance
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 5: Templates & Themes (Weeks 17-20)
|
||||||
|
|
||||||
|
### WB-038: Template Library
|
||||||
|
- Template library UI
|
||||||
|
- Template categories (landing, blog, shop, dashboard)
|
||||||
|
- Template search and filter
|
||||||
|
- Template preview
|
||||||
|
- Template installation
|
||||||
|
- Template management (create, edit, delete)
|
||||||
|
|
||||||
|
### WB-039: Template System
|
||||||
|
- Create template from page
|
||||||
|
- Save template to library
|
||||||
|
- Load template to page
|
||||||
|
- Template metadata (name, description, category)
|
||||||
|
- Template preview images
|
||||||
|
- Template versioning
|
||||||
|
|
||||||
|
### WB-040: Theme Integration
|
||||||
|
- Load BOSA theme as base
|
||||||
|
- Apply theme styles to editor
|
||||||
|
- Theme component library
|
||||||
|
- Theme color palette
|
||||||
|
- Theme typography
|
||||||
|
- Theme asset integration
|
||||||
|
|
||||||
|
### WB-041: Export to Theme
|
||||||
|
- Convert page config to theme structure
|
||||||
|
- Generate theme.yaml
|
||||||
|
- Export CSS files
|
||||||
|
- Export JS files
|
||||||
|
- Export assets
|
||||||
|
- Create installable theme ZIP
|
||||||
|
- Theme validation
|
||||||
|
|
||||||
|
### WB-042: Template Marketplace
|
||||||
|
- Template sharing system
|
||||||
|
- Template upload/download
|
||||||
|
- Template ratings/reviews
|
||||||
|
- Template categories
|
||||||
|
- Template search
|
||||||
|
- Template versioning
|
||||||
|
|
||||||
|
### WB-043: Clone Page
|
||||||
|
- Duplicate page functionality
|
||||||
|
- Clone with new name
|
||||||
|
- Clone with new route
|
||||||
|
- Clone templates
|
||||||
|
- Bulk clone operations
|
||||||
|
|
||||||
|
### WB-044: Page Templates
|
||||||
|
- Header template
|
||||||
|
- Footer template
|
||||||
|
- Sidebar template
|
||||||
|
- Page layout templates
|
||||||
|
- Template inheritance
|
||||||
|
- Template overrides
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 6: Advanced Features (Weeks 21-24)
|
||||||
|
|
||||||
|
### WB-045: Version History
|
||||||
|
- Save page versions
|
||||||
|
- Version list view
|
||||||
|
- Version preview
|
||||||
|
- Restore version
|
||||||
|
- Version comparison
|
||||||
|
- Version metadata (date, author, changes)
|
||||||
|
- Version limit (keep last N versions)
|
||||||
|
|
||||||
|
### WB-046: Collaboration
|
||||||
|
- Multi-user editing support
|
||||||
|
- Real-time collaboration (WebSocket)
|
||||||
|
- User cursors/selection
|
||||||
|
- Conflict resolution
|
||||||
|
- User permissions (edit, view)
|
||||||
|
- Collaboration indicators
|
||||||
|
|
||||||
|
### WB-047: Comments/Annotations
|
||||||
|
- Add comments to components
|
||||||
|
- Comment thread
|
||||||
|
- Resolve comments
|
||||||
|
- Comment notifications
|
||||||
|
- Comment history
|
||||||
|
- Comment permissions
|
||||||
|
|
||||||
|
### WB-048: Asset Library
|
||||||
|
- Asset library UI
|
||||||
|
- Image upload
|
||||||
|
- Video upload
|
||||||
|
- File management
|
||||||
|
- Asset organization (folders, tags)
|
||||||
|
- Asset search
|
||||||
|
- Asset optimization
|
||||||
|
- Asset CDN integration
|
||||||
|
|
||||||
|
### WB-049: Media Upload/Management
|
||||||
|
- Drag-and-drop upload
|
||||||
|
- Multiple file upload
|
||||||
|
- Upload progress
|
||||||
|
- Image cropping/editing
|
||||||
|
- Image optimization
|
||||||
|
- File type validation
|
||||||
|
- File size limits
|
||||||
|
- Storage management
|
||||||
|
|
||||||
|
### WB-050: SEO Editor
|
||||||
|
- Meta title editor
|
||||||
|
- Meta description editor
|
||||||
|
- Open Graph tags
|
||||||
|
- Twitter Card tags
|
||||||
|
- Canonical URL
|
||||||
|
- Robots meta
|
||||||
|
- Schema.org markup
|
||||||
|
- SEO preview
|
||||||
|
|
||||||
|
### WB-051: Custom Code Injection
|
||||||
|
- Head code injection (page-level)
|
||||||
|
- Body code injection (page-level)
|
||||||
|
- Component-level code injection
|
||||||
|
- Script injection
|
||||||
|
- Style injection
|
||||||
|
- Code validation
|
||||||
|
- Security checks
|
||||||
|
|
||||||
|
### WB-052: Conditional Visibility
|
||||||
|
- Show/hide based on conditions
|
||||||
|
- User role conditions
|
||||||
|
- Authentication conditions
|
||||||
|
- Custom conditions (API-based)
|
||||||
|
- Conditional logic builder
|
||||||
|
- Preview conditional states
|
||||||
|
|
||||||
|
### WB-053: Dynamic Content
|
||||||
|
- Connect to app data (API)
|
||||||
|
- Data binding
|
||||||
|
- Dynamic lists
|
||||||
|
- Dynamic forms
|
||||||
|
- Data filtering
|
||||||
|
- Data pagination
|
||||||
|
- Real-time data updates
|
||||||
|
|
||||||
|
### WB-054: Form Builder
|
||||||
|
- Form component builder
|
||||||
|
- Form field types
|
||||||
|
- Form validation rules
|
||||||
|
- Form submission handling
|
||||||
|
- Form email notifications
|
||||||
|
- Form data storage
|
||||||
|
- Form analytics
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 7: Plugin Integration (Weeks 25-28)
|
||||||
|
|
||||||
|
### WB-055: Plugin Component Registry
|
||||||
|
- Component registration API
|
||||||
|
- Plugin component discovery
|
||||||
|
- Component metadata
|
||||||
|
- Component icons
|
||||||
|
- Component categories
|
||||||
|
- Component versioning
|
||||||
|
|
||||||
|
### WB-056: Plugin Widget System
|
||||||
|
- Widget registration
|
||||||
|
- Widget configuration
|
||||||
|
- Widget data binding
|
||||||
|
- Widget events
|
||||||
|
- Widget styling
|
||||||
|
- Widget documentation
|
||||||
|
|
||||||
|
### WB-057: App-Specific Components
|
||||||
|
- Components from other BOSA apps
|
||||||
|
- App component discovery
|
||||||
|
- App component integration
|
||||||
|
- App component styling
|
||||||
|
- App component data
|
||||||
|
- App component events
|
||||||
|
|
||||||
|
### WB-058: Event System
|
||||||
|
- Component events (click, hover, etc.)
|
||||||
|
- Custom events
|
||||||
|
- Event handlers
|
||||||
|
- Event propagation
|
||||||
|
- Event logging
|
||||||
|
- Event debugging
|
||||||
|
|
||||||
|
### WB-059: Data Binding
|
||||||
|
- Connect components to app data
|
||||||
|
- Data source configuration
|
||||||
|
- Data transformation
|
||||||
|
- Data caching
|
||||||
|
- Data refresh
|
||||||
|
- Data error handling
|
||||||
|
|
||||||
|
### WB-060: API Integration
|
||||||
|
- Fetch data from app APIs
|
||||||
|
- API authentication
|
||||||
|
- API request builder
|
||||||
|
- API response handling
|
||||||
|
- API error handling
|
||||||
|
- API caching
|
||||||
|
|
||||||
|
### WB-061: Authentication Integration
|
||||||
|
- Show/hide based on authentication
|
||||||
|
- User role conditions
|
||||||
|
- Permission-based visibility
|
||||||
|
- Login/logout components
|
||||||
|
- User profile components
|
||||||
|
- Protected content
|
||||||
|
|
||||||
|
### WB-062: Multi-Language Support
|
||||||
|
- i18n component support
|
||||||
|
- Language switcher component
|
||||||
|
- Per-language content
|
||||||
|
- Language-specific styling
|
||||||
|
- Translation management
|
||||||
|
- RTL support
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 8: Performance & Polish (Weeks 29-32)
|
||||||
|
|
||||||
|
### WB-063: Performance Optimization
|
||||||
|
- Code splitting
|
||||||
|
- Lazy loading components
|
||||||
|
- Image lazy loading
|
||||||
|
- Asset optimization
|
||||||
|
- Bundle size optimization
|
||||||
|
- Render optimization
|
||||||
|
- Memory management
|
||||||
|
|
||||||
|
### WB-064: Renderer Optimization
|
||||||
|
- Fast page rendering
|
||||||
|
- Server-side rendering (SSR)
|
||||||
|
- Static page generation
|
||||||
|
- Caching strategies
|
||||||
|
- CDN integration
|
||||||
|
- Minification
|
||||||
|
- Compression
|
||||||
|
|
||||||
|
### WB-065: Editor Performance
|
||||||
|
- Smooth editing experience
|
||||||
|
- Optimized re-renders
|
||||||
|
- Virtual scrolling (large pages)
|
||||||
|
- Debounced updates
|
||||||
|
- Efficient state management
|
||||||
|
- Performance monitoring
|
||||||
|
|
||||||
|
### WB-066: Mobile Editor
|
||||||
|
- Responsive editor UI
|
||||||
|
- Touch-friendly controls
|
||||||
|
- Mobile canvas view
|
||||||
|
- Mobile property panel
|
||||||
|
- Mobile component palette
|
||||||
|
- Mobile gestures
|
||||||
|
|
||||||
|
### WB-067: Keyboard Shortcuts
|
||||||
|
- Comprehensive keyboard shortcuts
|
||||||
|
- Shortcut customization
|
||||||
|
- Shortcut help dialog
|
||||||
|
- Mac/Windows key differences
|
||||||
|
- Accessibility shortcuts
|
||||||
|
|
||||||
|
### WB-068: Accessibility
|
||||||
|
- WCAG 2.1 AA compliance
|
||||||
|
- Keyboard navigation
|
||||||
|
- Screen reader support
|
||||||
|
- ARIA labels
|
||||||
|
- Focus management
|
||||||
|
- Color contrast
|
||||||
|
- Alt text for images
|
||||||
|
|
||||||
|
### WB-069: Documentation
|
||||||
|
- User guide
|
||||||
|
- Video tutorials
|
||||||
|
- API documentation
|
||||||
|
- Component documentation
|
||||||
|
- Template documentation
|
||||||
|
- FAQ
|
||||||
|
- Troubleshooting guide
|
||||||
|
|
||||||
|
### WB-070: Testing
|
||||||
|
- Unit tests
|
||||||
|
- Integration tests
|
||||||
|
- E2E tests (Playwright/Cypress)
|
||||||
|
- Visual regression tests
|
||||||
|
- Performance tests
|
||||||
|
- Accessibility tests
|
||||||
|
- Browser compatibility tests
|
||||||
|
|
||||||
|
### WB-071: Bug Fixes and Refinements
|
||||||
|
- Bug triage and fixing
|
||||||
|
- UI/UX refinements
|
||||||
|
- Performance improvements
|
||||||
|
- Security fixes
|
||||||
|
- Code cleanup
|
||||||
|
- Documentation updates
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
**Total Features:** 71 features across 8 phases
|
||||||
|
**Estimated Timeline:** 32 weeks (8 months)
|
||||||
|
**Team Size:** 2-3 developers recommended
|
||||||
|
**Priority:** High (core BOSA functionality)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Document Version:** 1.0
|
||||||
|
**Last Updated:** December 21, 2025
|
||||||
|
**Status:** Ready for Linear Issue Creation
|
||||||
1659
docs/BP_WB_LINEAR_ISSUES.md
Normal file
1659
docs/BP_WB_LINEAR_ISSUES.md
Normal file
File diff suppressed because it is too large
Load diff
6543
docs/DEVELOPER_GUIDE.md
Normal file
6543
docs/DEVELOPER_GUIDE.md
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue