2025-01-28 13:55:43 +01:00
{% extends 'services/base.html' %}
2025-03-03 14:30:05 +01:00
{% load static %}
{% load contact_tags %}
2025-01-28 13:55:43 +01:00
2025-02-27 17:19:51 +01:00
{% block title %}Service Providers{% endblock %}
2025-03-03 15:57:08 +01:00
{% block meta_description %}Discover cloud providers on Servala offering reliable infrastructure and innovative cloud computing solutions for businesses of all sizes.{% endblock %}
2025-02-27 17:19:51 +01:00
2025-01-28 13:55:43 +01:00
{% block content %}
2025-02-25 11:22:21 +01:00
< section class = "section bg-primary-subtle" >
< div class = "container mx-auto px-20 px-lg-0 pt-40 pb-60" >
< header class = "section-primary__header text-center" >
< h2 class = "section-h1 fs-40 fs-lg-64 mb-24" > Cloud Providers< / h2 >
< div class = "text-gray-300 w-lg-37 mx-auto" >
2025-02-25 17:19:57 +01:00
< p class = "mb-0" > Explore all available Cloud Providers on Servala, with new ones added regularly.< / p >
2025-01-28 13:55:43 +01:00
< / div >
2025-02-25 11:22:21 +01:00
< / header >
2025-01-28 13:55:43 +01:00
< / div >
2025-02-25 11:22:21 +01:00
< / section >
2025-01-28 13:55:43 +01:00
2025-02-25 11:22:21 +01:00
< section class = "section" >
< div class = "container-xl mx-auto px-3 px-lg-0 pt-60 pt-lg-80 pb-40" >
< div x-data = "{ open: window.innerWidth > 1024 }"
@resize.window="open = window.innerWidth > 1024 ? open : true" class="d-lg-flex">
<!-- Filters -->
< div class = "w-lg-20 flex-none" >
<!-- Mobile Menu -->
< div class = "page-action d-lg-none mb-40" >
< button @ click = "open = !open"
class="btn btn-outline-primary btn-md w-100 d-flex justify-content-center align-items-center"
type="button">
< svg width = "24" height = "24" viewBox = "0 0 24 24" fill = "none"
xmlns="http://www.w3.org/2000/svg">
< mask id = "mask0_115_3182" style = "mask-type:alpha" maskUnits = "userSpaceOnUse" x = "0"
y="0" width="24" height="24">
< rect width = "24" height = "24" fill = "#D9D9D9" / >
< / mask >
< g mask = "url(#mask0_115_3182)" >
< path d = "M7 18V16H17V18H7ZM5 13V11H19V13H5ZM3 8V6H21V8H3Z" fill = "#9A63EC" / >
< / g >
< / svg >
< span class = "ms-2" > Filters< / span >
< / button >
< / div >
<!-- Desktop View -->
< div x-cloak x-show = "open || window.innerWidth >= 1024" class = "w-lg-85" x-collapse >
< div class = "d-flex d-lg-none justify-content-between align-items-center mb-24"
role="button">
< h3 class = "sidebar-dropdown__title mb-0" > Filters< / h3 >
< span @ click = "open = false" >
< svg width = "24" height = "25" viewBox = "0 0 24 25" fill = "none"
xmlns="http://www.w3.org/2000/svg">
< mask id = "mask0_115_3177" style = "mask-type:alpha" maskUnits = "userSpaceOnUse"
x="0" y="0" width="24" height="25">
< rect y = "0.5" width = "24" height = "24" fill = "#D9D9D9" / >
< / mask >
< g mask = "url(#mask0_115_3177)" >
< path d = "M6.4 19.5L5 18.1L10.6 12.5L5 6.9L6.4 5.5L12 11.1L17.6 5.5L19 6.9L13.4 12.5L19 18.1L17.6 19.5L12 13.9L6.4 19.5Z"
fill="#160037" />
< / g >
< / svg >
< / span >
< / div >
2025-01-28 13:55:43 +01:00
2025-02-25 11:22:21 +01:00
< div class = "search-form position-relative mb-24" >
< form method = "get" >
<!-- Search -->
< div class = "mb-24" >
< label for = "search" class = "d-none" > Search< / label >
< input type = "text" id = "search" class = "input-search" placeholder = "Search" name = "search" value = "{{ request.GET.search }}" >
< button class = "search-button position-absolute top-0 start-0 d-flex justify-content-center align-items-center border-0 bg-transparent p-0"
type="button" title="search">
< svg width = "24" height = "24" viewBox = "0 0 24 24" fill = "none" xmlns = "http://www.w3.org/2000/svg" >
< path d = "M17.5 17.5L22 22" stroke = "#9A63EC" stroke-width = "1.5" stroke-linecap = "round" stroke-linejoin = "round" / >
< path d = "M20 11C20 6.02944 15.9706 2 11 2C6.02944 2 2 6.02944 2 11C2 15.9706 6.02944 20 11 20C15.9706 20 20 15.9706 20 11Z"
stroke="#9A63EC" stroke-width="1.5" stroke-linejoin="round" />
< / svg >
< / button >
2025-01-28 13:55:43 +01:00
< / div >
2025-02-25 11:22:21 +01:00
<!-- Filter Actions -->
< div class = "d-flex gap-2" >
< a href = "{% url 'services:provider_list' %}" class = "btn btn-outline-secondary btn-sm" > Clear< / a >
2025-01-28 13:55:43 +01:00
< / div >
2025-02-25 11:22:21 +01:00
< / form >
< / div >
< / div >
< / div >
<!-- Providers Listing -->
< div class = "section__grid flex-1" >
< div class = "row" >
{% for provider in providers %}
< div class = "col-12 col-md-6 col-lg-4 mb-30" >
< div class = "card h-100 d-flex flex-column" >
< div class = "card__content d-flex flex-column flex-grow-1" >
< div class = "card__header" >
2025-02-26 10:35:48 +01:00
< div class = "d-flex align-items-start" style = "height: 100px; margin-bottom: 1rem;" >
< div class = "me-3 d-flex align-items-center" style = "height: 100%;" >
2025-02-25 11:22:21 +01:00
< a href = "{{ provider.get_absolute_url }}" >
< img src = "{{ provider.logo.url }}"
alt="{{ provider.name }}"
2025-02-26 10:35:48 +01:00
style="max-height: 180px; max-width: 250px; object-fit: contain;">
2025-02-25 11:22:21 +01:00
< / a >
< / div >
< / div >
< / div >
2025-02-26 10:35:48 +01:00
< div class = "card__desc rich-text-content" style = "align-self: flex-start;" >
{{ provider.description|safe|truncatewords_html:50 }}
2025-02-25 11:22:21 +01:00
< / div >
2025-01-28 13:55:43 +01:00
2025-02-25 11:22:21 +01:00
< div class = "card__footer mt-3" >
< div class = "d-flex gap-2" >
{% if provider.website %}
< a href = "{{ provider.website }}" class = "btn btn-primary btn-sm" target = "_blank" > Visit Website< / a >
{% endif %}
< / div >
< / div >
2025-01-28 13:55:43 +01:00
< / div >
< / div >
< / div >
2025-02-25 11:22:21 +01:00
{% empty %}
< div class = "col-12" >
< div class = "alert alert-info" >
No cloud providers found matching your criteria.
< / div >
2025-01-28 13:55:43 +01:00
< / div >
2025-02-25 11:22:21 +01:00
{% endfor %}
2025-01-28 13:55:43 +01:00
< / div >
2025-02-25 11:22:21 +01:00
< / div >
2025-01-28 13:55:43 +01:00
< / div >
< / div >
2025-02-25 11:22:21 +01:00
< / section >
2025-03-03 14:30:05 +01:00
< section class = "section bg-primary-subtle" >
< div class = "section-wrapper container mx-auto px-20 px-lg-0 pt-80 pb-120" >
< div class = "row" >
< div class = "col-12 col-lg-4 mb-30 mb-lg-0" >
< div class = "section-logo mx-auto" >
< img class = "img-fluid" src = "{% static " img / section-logo . png " % } " alt = "Sir Vala mascot" >
< / div >
< / div >
< div class = "col-12 col-lg-8" >
< header class = "section-primary__header" >
< h2 class = "section-h1 fs-40 fs-lg-60" > Missing a Cloud Provider?< / h2 >
< div class = "section-primary__desc" >
< p > You miss a cloud provider on this list? Let us know which one and we'll get in touch with you!< / p >
< / div >
< div >
{% embedded_contact_form source="Missing Cloud Provider" %}
< / div >
< / header >
< / div >
< / div >
< / div >
< / section >
2025-01-28 13:55:43 +01:00
{% endblock %}