@structa/cli
v0.8.7
Published
Structa Framework CLI - TypeScript API framework compiler
Readme
Structa Framework
A TypeScript-like API framework built with Rust. Write .structa files that compile to JavaScript.
██████╗ ███████╗███████╗██╗███╗ ██╗██╗ ██╗███████╗
██╔══██╗██╔════╝██╔════╝██║████╗ ██║██║ ██║██╔════╝
██████╔╝█████╗ █████╗ ██║██╔██╗ ██║██║ ██║███████╗
██╔══██╗██╔══╝ ██╔══╝ ██║██║╚██╗██║██║ ██║╚════██║
██║ ██║███████╗███████╗██║██║ ╚████║╚██████╔╝███████║
╚═╝ ╚═╝╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝Features
- Rust Compiler - Fast compilation of
.structafiles - Hot Reload - Development server with auto-recompilation
- Dependency Injection - Built-in DI container
- Modular Packages - HTTP, ORM, Validation, Cache, Queue, Mail
- Matrix-style CLI - Beautiful terminal interface
Quick Start
# Build CLI
cargo build --release
# Create project
structa init my-api
cd my-api
# Install dependencies
structa install
# Run development server
structa dev --port 3000CLI Commands
structa init <name> # Initialize new project
structa dev [--port] # Run development server
structa build [--release] # Build project
structa install # Install dependencies
structa add <package> # Add npm package
structa remove <package> # Remove package
structa generate <type> <name> # Generate code
structa orm <command> # Database operationsPackages
| Package | Version | Description |
|---------|---------|-------------|
| @structa/http | 0.8.1 | HTTP server with routing and middleware |
| @structa/orm | 0.8.1 | Database ORM (MySQL, PostgreSQL, SQLite) |
| @structa/validation | 0.8.1 | Input validation with decorators |
| @structa/cache | 0.8.1 | Caching (Memory, Redis, File) |
| @structa/queue | 0.8.1 | Job queues with retry support |
| @structa/mail | 0.8.1 | Email sending (SMTP, SendGrid) |
| @structa/swagger | 0.8.1 | OpenAPI documentation |
| @structa/websockets | 0.8.1 | WebSocket support |
| @structa/graphql | 0.8.1 | GraphQL integration |
| @structa/testing | 0.8.1 | Testing utilities |
DSL Syntax
controller UserController {
path: "/users"
@Inject("UserService")
userService
@Get("/")
async getAll() {
return await this.userService.findAll()
}
@Get("/:id")
async getById(id) {
return await this.userService.findById(id)
}
@Post("/")
async create(data) {
return await this.userService.create(data)
}
@Delete("/:id")
async delete(id) {
return await this.userService.delete(id)
}
}
service UserService {
@Inject("UserRepository")
userRepo
async findAll() {
return await this.userRepo.findAll()
}
async findById(id) {
return await this.userRepo.findById(id)
}
async create(data) {
return await this.userRepo.save(data)
}
async delete(id) {
return await this.userRepo.delete(id)
}
}
repository UserRepository {
async findAll() {
return [
{ id: 1, name: "John", email: "[email protected]" },
{ id: 2, name: "Jane", email: "[email protected]" }
]
}
async findById(id) {
return { id, name: "John", email: "[email protected]" }
}
async save(data) {
return { id: Date.now(), ...data }
}
async delete(id) {
return { success: true }
}
}Architecture
┌─────────────────────────────────────────────────────────┐
│ Structa CLI │
│ init | dev | build | generate | install | orm │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Rust Compiler │
│ ┌─────────┐ ┌─────────┐ ┌───────────────────┐ │
│ │ Lexer │ → │ Parser │ → │ Code Generator │ │
│ └─────────┘ └─────────┘ └───────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ JavaScript Output (Runtime) │
│ Controllers, Services, Repositories, DTOs │
└─────────────────────────────────────────────────────────┘Project Structure
structa/
├── crates/
│ └── structa/ # CLI (commands: structa init, structa dev, etc.)
├── packages/ # npm packages
│ ├── http/
│ ├── orm/
│ ├── validation/
│ ├── cache/
│ ├── queue/
│ ├── mail/
│ ├── swagger/
│ ├── websockets/
│ ├── graphql/
│ └── testing/
└── docs/ # DocumentationDocumentation
- Getting Started
- CLI Commands
- DSL Syntax
- HTTP Package
- ORM Package
- Validation Package
- Cache Package
- Queue Package
- Mail Package
License
MIT
