Aexol Example: E Commerce Starter

# Complete E-Commerce System Example

type Product {
    id: string
    name: string
    price: number
    description: string
    stock: number
}

type Order {
    id: string
    customerId: string
    items: array
    status: OrderStatus
    total: number
    createdAt: datetime
}

type Review {
    id: string
    productId: string
    rating: number
    comment: string
    author: string
}

enum OrderStatus {
    pending
    processing
    shipped
    delivered
    cancelled
    refunded
}

enum UserRole {
    customer
    seller
    admin
    support
}

# Roles and Permissions
role CustomerRole {
    permission orders {
        create,
        read,
        cancel
    }
    permission products {
        read,
        search
    }
    permission reviews {
        create,
        read
    }
    permission account {
        read,
        update
    }
}

role SellerRole {
    permission products {
        create,
        read,
        update,
        delete
    }
    permission orders {
        read
    }
    permission analytics {
        read
    }
}

role AdminRole {
    permission users {
        create,
        read,
        update,
        delete
    }
    permission products {
        create,
        read,
        update,
        delete
    }
    permission orders {
        read,
        update,
        cancel
    }
    permission system {
        read,
        update,
        delete
    }
}

# Workflows
workflow OrderProcessing {
    initial pending
    state pending -> processing, cancelled
    state processing -> shipped, cancelled
    state shipped -> delivered
    state delivered -> completed
    state cancelled -> refunded
    state refunded -> completed
}

workflow ProductLifecycle {
    initial draft
    state draft -> active
    state active -> archived
    state archived -> draft, active
}

# Agents
agent OrderProcessor: AdminRole {
    fetchOrder
    validateOrder
    processPayment
    updateOrderStatus
    sendNotificationToCustomer
    handleRefunds
}

agent ProductCatalogManager: SellerRole {
    createProduct
    updateProductDetails
    manageInventory
    publishProduct
    archiveProduct
    viewAnalytics
}

agent CustomerSupportAgent: AdminRole {
    retrieveCustomer
    viewOrderHistory
    processRefund
    updateOrderStatus
    sendNotifications
}

# Visitor - Customer Journey
visitor {
    browse {
        searchProducts
        filterProducts
        viewProductDetails {
            viewImages
            readReviews
            checkAvailability
        }
    }
    account {
        register
        login {
            accessDashboard
            viewProfile
            updateProfile {
                changePassword
                updateContactInfo
                manageAddresses
            }
            viewOrderHistory {
                viewOrderDetails
                trackShipment
                requestRefund
            }
            manageCart {
                addToCart
                removeFromCart
                updateQuantity
                checkout
            }
        }
        logout
    }
    checkout {
        enterShippingAddress
        selectShippingMethod
        enterPaymentInfo
        reviewOrder
        placeOrder
    }
    review {
        writeProductReview
        rateProduct
        uploadImages
    }
    support {
        contactSupport
        viewFAQs
        reportIssue
    }
}

# Visitor - Seller Journey
visitor {
    manageStore {
        viewStoreDashboard
        manageInventory {
            addProducts
            updateStock
            setPrices
        }
        viewOrders {
            processOrders
            updateShipment
            handleReturns
        }
        viewAnalytics {
            viewSalesReport
            viewTrafficReport
            viewCustomerReport
        }
    }
    account {
        viewProfile
        updateProfile
        manageBilling
        viewTransactions
    }
}

# Visitor - Admin Journey
visitor {
    adminPanel {
        manageUsers {
            viewUsers
            createUser
            updateUser
            deleteUser
            assignRole
            suspendUser
        }
        manageContent {
            reviewProducts
            approveProducts
            removeProducts
            manageCategories
        }
        manageOrders {
            viewAllOrders
            updateOrderStatus
            processRefunds
            cancelOrders
        }
        manageSystem {
            viewLogs
            configureSettings
            manageIntegrations
            viewAnalytics {
                viewUserMetrics
                viewSalesMetrics
                viewSystemHealth
            }
        }
    }
}

✨ Edit in Studio