feat: contact form and more edits

This commit is contained in:
mohamad
2026-05-04 13:54:45 +03:30
parent 3c10f5c5ed
commit 744ef69942
49 changed files with 1073 additions and 179 deletions
+30 -8
View File
@@ -1,8 +1,8 @@
{% extends "base.html" %}
{% load static %}
{% block title %}What is Tecvico{% endblock %}
{% block meta_description %}Learn about Tecvico Corp and ViSERA — Visualized & Standardized Environment for Radiomics Analysis, developed at UBC and BC Cancer Research Institute.{% endblock %}
{% block title %}What is Radiuma{% endblock %}
{% block meta_description %}Learn about Radiuma and Radiuma — Visualized & Standardized Environment for Radiomics Analysis, developed at UBC and BC Cancer Research Institute.{% endblock %}
{% block content %}
@@ -10,11 +10,13 @@
<div class="page-hero-blobs" aria-hidden="true">
<div class="blob blob--1"></div>
<div class="blob blob--2"></div>
<img src="{% static 'images/blob-blue-2.svg' %}" class="blob-img blob-img--page-hero" alt="" />
<img src="{% static 'images/abstract-shapes-2.svg' %}" class="blob-img blob-img--page-corner" alt="" />
</div>
<div class="container">
<div class="page-hero-content">
<div class="section-badge">About</div>
<h1 class="page-hero-title" id="page-hero-heading">What is Tecvico?</h1>
<h1 class="page-hero-title" id="page-hero-heading">What is Radiuma?</h1>
<p class="page-hero-subtitle">
Visualized &amp; Standardized Environment for Radiomics Analysis
</p>
@@ -49,7 +51,7 @@
<div class="standard-badge">IBSI 1.0</div>
<h3 class="standard-title">Radiomic Feature Extraction</h3>
<p class="standard-desc">
ViSERA is a python-based open-source package that enables standardized and
Radiuma is a python-based open-source package that enables standardized and
reproducible radiomic feature extraction in compliance with the Image Biomarker
Standardization Initiative (IBSI 1.0).
</p>
@@ -67,7 +69,7 @@
<div class="standard-badge">Python</div>
<h3 class="standard-title">Open Source</h3>
<p class="standard-desc">
ViSERA is a major, entirely-revamped upgrade to the original SERA (Matlab-based),
Radiuma is a major, entirely-revamped upgrade to the original SERA (Matlab-based),
now built on Python for broader accessibility and community contribution.
</p>
</div>
@@ -75,7 +77,7 @@
<div class="standard-badge">End-to-End</div>
<h3 class="standard-title">Standardized Workflows</h3>
<p class="standard-desc">
ViSERA employs a number of popular image processing algorithms to create
Radiuma employs a number of popular image processing algorithms to create
end-to-end standardized workflows for consistent, reproducible research results.
</p>
</div>
@@ -83,6 +85,26 @@
</div>
</section>
<section class="section" aria-labelledby="screenshots-about-heading">
<div class="container">
<div class="section-header">
<div class="section-badge">Interface</div>
<h2 class="section-title" id="screenshots-about-heading">Radiuma in Action</h2>
</div>
<div class="about-screenshots-grid">
<div class="screenshot-item screenshot-item--featured fade-in">
<img src="{% static 'images/screenshot-11.jpg' %}" alt="Radiuma multi-modal viewer" loading="lazy" />
</div>
<div class="screenshot-item fade-in">
<img src="{% static 'images/screenshot-9.jpg' %}" alt="Radiuma settings panel" loading="lazy" />
</div>
<div class="screenshot-item fade-in">
<img src="{% static 'images/screenshot-10.jpg' %}" alt="Radiuma analysis results" loading="lazy" />
</div>
</div>
</div>
</section>
<section class="section" aria-labelledby="history-heading">
<div class="container">
<div class="history-block glass-card fade-in">
@@ -90,12 +112,12 @@
<div class="section-badge">History</div>
<h2 id="history-heading">Our Origins</h2>
<p>
Tecvico (formerly known as Visera) has been developing since 2021 by the
Radiuma has been developing since 2021 by the
Quantitative Radiomolecular Imaging and Therapy (Qurit) lab &amp; program at the
University of British Columbia &amp; BC Cancer Research Institute, Vancouver, BC, Canada.
</p>
<p>
Our mission is to bridge the gap between cutting-edge radiomics research and
Radiuma's mission is to bridge the gap between cutting-edge radiomics research and
practical clinical application by providing standardized, reproducible, and
user-friendly software tools.
</p>
+246 -47
View File
@@ -2,7 +2,7 @@
{% load static %}
{% block title %}Contact{% endblock %}
{% block meta_description %}Contact Tecvico Corp — support for ViSERA software and general inquiries.{% endblock %}
{% block meta_description %}Contact Radiuma — support for Radiuma software and general inquiries.{% endblock %}
{% block content %}
@@ -15,66 +15,265 @@
<div class="page-hero-content">
<div class="section-badge">Get in Touch</div>
<h1 class="page-hero-title" id="contact-heading">Contact Us</h1>
<p class="page-hero-subtitle">Support for ViSERA software is available via email and Discord.</p>
<p class="page-hero-subtitle">Have a question or want to reach the Radiuma team? Fill out the form or contact us directly below.</p>
</div>
</div>
</section>
<section class="section" aria-labelledby="contact-details-heading">
<section class="section" aria-labelledby="contact-form-heading">
<div class="container">
<h2 class="sr-only" id="contact-details-heading">Contact Details</h2>
<div class="contact-grid">
<div class="contact-layout">
<div class="contact-card glass-card fade-in">
<div class="contact-icon" aria-hidden="true">
<svg width="32" height="32" viewBox="0 0 32 32" fill="none">
<path d="M5 8C5 6.895 5.895 6 7 6H25C26.105 6 27 6.895 27 8V22C27 23.105 26.105 24 25 24H7C5.895 24 5 23.105 5 22V8Z" stroke="currentColor" stroke-width="1.5"/>
<path d="M5 9L16 16L27 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
</svg>
</div>
<h3 class="contact-card-title">Email Support</h3>
<p class="contact-card-desc">
For software support and general inquiries, reach us at:
</p>
<a href="mailto:support@tecvico.com" class="contact-email-link">
support@tecvico.com
</a>
<div class="contact-form-wrap glass-card fade-in">
<h2 class="contact-form-title" id="contact-form-heading">Send a Message</h2>
<form id="contactForm" novalidate action="{% url 'pages:contact' %}" method="post">
{% csrf_token %}
<div class="form-group">
<label for="id_name">Full Name <span class="required-star">*</span></label>
{{ form.name }}
<span class="form-field-error" data-field="name"></span>
</div>
<div class="form-group">
<label for="id_title">Subject / Title <span class="required-star">*</span></label>
{{ form.title }}
<span class="form-field-error" data-field="title"></span>
</div>
<div class="form-group">
<label for="id_description">Message <span class="required-star">*</span></label>
{{ form.description }}
<span class="form-field-error" data-field="description"></span>
</div>
<div class="form-group">
<label for="id_email">Email <span class="optional-label">(optional)</span></label>
{{ form.email }}
<span class="form-field-error" data-field="email"></span>
</div>
<div class="form-group form-group--captcha">
<label for="id_captcha">
Verification: what is <strong id="captchaQuestion">{{ captcha_question }}</strong>?
<span class="required-star">*</span>
</label>
<input type="number" name="captcha_answer" id="id_captcha"
placeholder="Answer" min="0" max="18" required
class="captcha-input" />
<span class="form-field-error" data-field="captcha"></span>
</div>
<button type="submit" class="btn-primary btn-submit" id="submitBtn">
<span class="btn-label">Send Message</span>
<span class="btn-spinner" hidden aria-hidden="true">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/>
</svg>
</span>
</button>
</form>
</div>
<div class="contact-card glass-card fade-in">
<div class="contact-icon" aria-hidden="true">
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057.1 18.08.114 18.1.133 18.11a19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/>
</svg>
<aside class="contact-sidebar">
<div class="contact-card glass-card fade-in">
<div class="contact-icon" aria-hidden="true">
<svg width="28" height="28" viewBox="0 0 32 32" fill="none">
<path d="M5 8C5 6.895 5.895 6 7 6H25C26.105 6 27 6.895 27 8V22C27 23.105 26.105 24 25 24H7C5.895 24 5 23.105 5 22V8Z" stroke="currentColor" stroke-width="1.5"/>
<path d="M5 9L16 16L27 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
</svg>
</div>
<h3 class="contact-card-title">Email Support</h3>
<p class="contact-card-desc">For direct software support:</p>
<a href="mailto:support@visera.ca" class="contact-email-link">support@visera.ca</a>
</div>
<h3 class="contact-card-title">Discord Community</h3>
<p class="contact-card-desc">
Join our Discord server for community support, feature discussions, and announcements.
</p>
<a href="https://discord.gg/9XxA6pV9hb" class="btn-primary" target="_blank" rel="noopener noreferrer">
Join Discord Forum
</a>
</div>
<div class="contact-card glass-card fade-in">
<div class="contact-icon" aria-hidden="true">
<svg width="32" height="32" viewBox="0 0 32 32" fill="none">
<path d="M16 3C11.029 3 7 7.029 7 12C7 19 16 29 16 29C16 29 25 19 25 12C25 7.029 20.971 3 16 3Z" stroke="currentColor" stroke-width="1.5"/>
<circle cx="16" cy="12" r="3" stroke="currentColor" stroke-width="1.5"/>
</svg>
<div class="contact-card glass-card fade-in">
<div class="contact-icon" aria-hidden="true">
<svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057.1 18.08.114 18.1.133 18.11a19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/>
</svg>
</div>
<h3 class="contact-card-title">Discord Community</h3>
<p class="contact-card-desc">Join for community support and announcements.</p>
<a href="https://discord.gg/9XxA6pV9hb" class="btn-primary btn--sm" target="_blank" rel="noopener noreferrer">Join Discord</a>
</div>
<h3 class="contact-card-title">Office Address</h3>
<address class="contact-address">
<p>BC Cancer Research Center</p>
<p>675 West 10th Ave</p>
<p>Office 6-112</p>
<p>Vancouver, BC, V5Z 1L3</p>
<p>Canada</p>
</address>
</div>
<div class="contact-card glass-card fade-in">
<div class="contact-icon" aria-hidden="true">
<svg width="28" height="28" viewBox="0 0 32 32" fill="none">
<path d="M16 3C11.029 3 7 7.029 7 12C7 19 16 29 16 29C16 29 25 19 25 12C25 7.029 20.971 3 16 3Z" stroke="currentColor" stroke-width="1.5"/>
<circle cx="16" cy="12" r="3" stroke="currentColor" stroke-width="1.5"/>
</svg>
</div>
<h3 class="contact-card-title">Office</h3>
<address class="contact-address">
<p>BC Cancer Research Center</p>
<p>675 West 10th Ave, Office 6-112</p>
<p>Vancouver, BC, V5Z 1L3</p>
<p>Canada</p>
</address>
</div>
</aside>
</div>
</div>
</section>
<div id="noEmailModal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="noEmailTitle" hidden>
<div class="modal-box glass-card">
<div class="modal-icon-wrap">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
</svg>
</div>
<h3 class="modal-title" id="noEmailTitle">No reply address</h3>
<p class="modal-body">You haven't provided an email address. Without it, we won't be able to respond to your message. Would you like to add one, or send without a reply address?</p>
<div class="modal-actions">
<button class="btn-ghost" id="modalAddEmail">Add Email</button>
<button class="btn-primary" id="modalSendAnyway">Send Without Email</button>
</div>
</div>
</div>
<div id="successModal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="successTitle" hidden>
<div class="modal-box glass-card">
<div class="modal-icon-wrap modal-icon-wrap--success">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M22 11.08V12a10 10 0 11-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/>
</svg>
</div>
<h3 class="modal-title" id="successTitle">Message Sent!</h3>
<p class="modal-body">Thank you for reaching out. We've received your message and will get back to you as soon as possible.</p>
<button class="btn-primary" id="successClose">Done</button>
</div>
</div>
<div id="errorModal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="errorTitle" hidden>
<div class="modal-box glass-card">
<div class="modal-icon-wrap modal-icon-wrap--error">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/>
</svg>
</div>
<h3 class="modal-title" id="errorTitle">Something Went Wrong</h3>
<p class="modal-body" id="errorModalMsg">Please check your answers and try again.</p>
<button class="btn-ghost" id="errorClose">Try Again</button>
</div>
</div>
{% endblock %}
{% block extra_js %}
<script>
(function () {
const form = document.getElementById('contactForm');
if (!form) return;
const emailField = form.querySelector('#id_email');
const submitBtn = form.querySelector('#submitBtn');
const btnLabel = submitBtn.querySelector('.btn-label');
const btnSpinner = submitBtn.querySelector('.btn-spinner');
function showModal(id) {
const el = document.getElementById(id);
if (el) { el.hidden = false; el.focus(); }
}
function hideModal(id) {
const el = document.getElementById(id);
if (el) el.hidden = true;
}
function clearErrors() {
form.querySelectorAll('.form-field-error').forEach(el => { el.textContent = ''; });
form.querySelectorAll('.form-group').forEach(el => el.classList.remove('has-error'));
}
function showErrors(errors) {
clearErrors();
Object.entries(errors).forEach(([field, msgs]) => {
const span = form.querySelector(`[data-field="${field}"]`);
if (span) {
span.textContent = msgs[0] || '';
span.closest('.form-group')?.classList.add('has-error');
}
});
}
function setLoading(on) {
submitBtn.disabled = on;
btnLabel.hidden = on;
btnSpinner.hidden = !on;
}
async function submitForm() {
clearErrors();
setLoading(true);
const formData = new FormData(form);
try {
const res = await fetch(form.action || window.location.href, {
method: 'POST',
body: formData,
headers: { 'X-Requested-With': 'XMLHttpRequest' },
});
const data = await res.json();
if (data.success) {
form.reset();
showModal('successModal');
} else {
if (data.errors) showErrors(data.errors);
if (data.errors?.captcha) {
document.getElementById('errorModalMsg').textContent = data.errors.captcha[0];
showModal('errorModal');
} else if (!res.ok) {
showModal('errorModal');
}
if (data.captcha_question) {
document.getElementById('captchaQuestion').textContent = data.captcha_question;
const captchaInput = form.querySelector('#id_captcha');
if (captchaInput) captchaInput.value = '';
}
}
} catch {
showModal('errorModal');
} finally {
setLoading(false);
}
}
form.addEventListener('submit', e => {
e.preventDefault();
if (!emailField.value.trim()) {
showModal('noEmailModal');
} else {
submitForm();
}
});
document.getElementById('modalAddEmail')?.addEventListener('click', () => {
hideModal('noEmailModal');
emailField.focus();
});
document.getElementById('modalSendAnyway')?.addEventListener('click', () => {
hideModal('noEmailModal');
submitForm();
});
document.getElementById('successClose')?.addEventListener('click', () => hideModal('successModal'));
document.getElementById('errorClose')?.addEventListener('click', () => hideModal('errorModal'));
document.querySelectorAll('.modal-overlay').forEach(overlay => {
overlay.addEventListener('click', e => {
if (e.target === overlay) overlay.hidden = true;
});
});
document.addEventListener('keydown', e => {
if (e.key === 'Escape') {
document.querySelectorAll('.modal-overlay').forEach(m => { m.hidden = true; });
}
});
})();
</script>
{% endblock %}
+10 -21
View File
@@ -2,7 +2,7 @@
{% load static %}
{% block title %}Downloads{% endblock %}
{% block meta_description %}Download ViSERA by Tecvico — available for Windows, macOS, and Linux.{% endblock %}
{% block meta_description %}Download Radiuma by Radiuma — available for Windows, macOS, and Linux.{% endblock %}
{% block content %}
@@ -10,12 +10,13 @@
<div class="page-hero-blobs" aria-hidden="true">
<div class="blob blob--1"></div>
<div class="blob blob--2"></div>
<img src="{% static 'images/modern-shape.svg' %}" class="blob-img blob-img--downloads" alt="" />
</div>
<div class="container">
<div class="page-hero-content">
<div class="section-badge">Software</div>
<h1 class="page-hero-title" id="downloads-heading">Downloads</h1>
<p class="page-hero-subtitle">Download the latest version of ViSERA for your platform.</p>
<p class="page-hero-subtitle">Download the latest version of Radiuma for your platform.</p>
</div>
</div>
</section>
@@ -27,9 +28,7 @@
<div class="download-card glass-card fade-in {% if not windows_items %}download-card--unavailable{% endif %}">
<div class="download-platform-icon" aria-hidden="true">
<svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"/>
</svg>
<img src="{% static 'images/icon-windows.svg' %}" alt="Windows" width="56" height="56" class="platform-icon" />
</div>
<h3 class="download-platform-name">Windows</h3>
<p class="download-platform-desc">Windows 10 and up (64-bit)</p>
@@ -40,9 +39,7 @@
{% if item.description %}<p class="download-item-desc">{{ item.description }}</p>{% endif %}
{% if item.download_url and item.download_url != '#' %}
<a href="{{ item.download_url }}" class="btn-primary download-btn" download>
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
<path d="M9 2V12M9 12L5 8M9 12L13 8M3 15H15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<img src="{% static 'images/icon-download.svg' %}" width="18" height="18" alt="" aria-hidden="true" class="btn-icon-img" />
Download
</a>
{% endif %}
@@ -55,9 +52,7 @@
<div class="download-card glass-card fade-in {% if not macos_items %}download-card--unavailable{% endif %}">
<div class="download-platform-icon" aria-hidden="true">
<svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor">
<path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.8-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"/>
</svg>
<img src="{% static 'images/icon-macos.svg' %}" alt="macOS" width="56" height="56" class="platform-icon" />
</div>
<h3 class="download-platform-name">macOS</h3>
<p class="download-platform-desc">macOS 11 Big Sur and up</p>
@@ -68,9 +63,7 @@
{% if item.description %}<p class="download-item-desc">{{ item.description }}</p>{% endif %}
{% if item.download_url and item.download_url != '#' %}
<a href="{{ item.download_url }}" class="btn-primary download-btn" download>
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
<path d="M9 2V12M9 12L5 8M9 12L13 8M3 15H15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<img src="{% static 'images/icon-download.svg' %}" width="18" height="18" alt="" aria-hidden="true" class="btn-icon-img" />
Download
</a>
{% endif %}
@@ -83,9 +76,7 @@
<div class="download-card glass-card fade-in {% if not linux_items %}download-card--unavailable{% endif %}">
<div class="download-platform-icon" aria-hidden="true">
<svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor">
<path d="M12.504 0c-.155 0-.315.008-.48.021-4.226.333-3.105 4.807-3.17 6.298-.076 1.092-.3 1.953-1.05 3.02-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489a.424.424 0 00-.11.135c-.26.268-.45.6-.663.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.68-.09.189-.136.394-.132.602 0 .199.027.4.055.536.058.399.116.728.04.97-.249.68-.28 1.145-.106 1.484.174.334.535.47.94.601.81.2 1.91.135 2.774.6.926.466 1.866.67 2.616.47.526-.116.97-.464 1.208-.946.587-.003 1.23-.EraseINIT.3.337.572.95.23 1.681-.078.277-.21.557-.303.815-.125.35-.169.63-.046.875.315.648 1.086.698 1.728.hyperparameter698.256 0 .504-.034.72-.046.372-.022.626.026.783.17.428.39.405 1.353.504 2.408.096.99.184 2.023.618 2.813.22.391.528.717.938.939.41.22.915.316 1.44.282.52-.033 1.092-.218 1.544-.668.296-.296.522-.723.58-1.226.029-.248.017-.51-.02-.77-.15-1.168.056-2.22.617-2.82.274-.294.548-.452.748-.606.238-.186.427-.41.554-.676.247-.517.194-1.107-.026-1.633-.11-.271-.238-.517-.324-.773-.148-.448-.172-.913.053-1.377.226-.467.67-.876 1.02-1.428a.424.424 0 00.11-.134c.25-.43.31-.915.245-1.395-.065-.476-.245-.937-.49-1.37-.245-.436-.54-.838-.807-1.278-.254-.428-.47-.903-.522-1.445-.1-.994.268-2.1.368-3.158.05-.53.04-1.046-.059-1.518-.097-.47-.3-.9-.616-1.24-.636-.68-1.608-.904-2.527-.974-.45-.035-.899-.026-1.334.026zm.042 1.174c.42-.047.852-.056 1.277-.022.812.062 1.59.262 2.047.758.228.245.37.554.44.918.073.366.08.78.03 1.233-.103 1.055-.486 2.198-.36 3.34.061.567.302 1.09.575 1.56.27.46.572.876.822 1.319.25.443.43.904.483 1.362.053.45.003.895-.2 1.269a.37.37 0 00-.099.11c-.35.56-.83.993-1.1 1.57-.28.587-.295 1.218-.12 1.822.088.3.215.585.33.869.217.526.253 1.015.066 1.4a1.088 1.088 0 01-.354.43c-.22.162-.502.322-.806.638-.7.742-.924 1.963-.756 3.254.028.207.038.414.013.605-.045.38-.19.688-.41.908-.33.335-.765.497-1.178.524-.414.027-.83-.054-1.14-.22-.315-.169-.54-.43-.691-.714-.358-.647-.445-1.572-.54-2.553-.1-1.012-.118-2.066-.67-2.593-.269-.247-.645-.345-1.117-.32-.232.014-.455.047-.677.047-.44 0-.836-.054-.97-.33-.065-.133-.073-.36.043-.688.1-.29.238-.586.292-.866.133-.676.05-1.313-.313-1.75-.364-.44-1.027-.604-1.718-.777-.69-.176-1.44-.396-1.582-.862-.092-.302-.06-.666.11-1.127.087-.23.097-.482.054-.727-.083-.499.053-.986.22-1.427.246-.66 1.463-2.382 2.39-3.479.87-1.044 1.15-2.02 1.22-3.167.063-1.26-.744-5.02 2.57-5.27z"/>
</svg>
<img src="{% static 'images/icon-linux.svg' %}" alt="Linux" width="56" height="56" class="platform-icon" />
</div>
<h3 class="download-platform-name">Linux</h3>
<p class="download-platform-desc">Ubuntu 20.04+ and compatible distributions</p>
@@ -96,9 +87,7 @@
{% if item.description %}<p class="download-item-desc">{{ item.description }}</p>{% endif %}
{% if item.download_url and item.download_url != '#' %}
<a href="{{ item.download_url }}" class="btn-primary download-btn" download>
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
<path d="M9 2V12M9 12L5 8M9 12L13 8M3 15H15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<img src="{% static 'images/icon-download.svg' %}" width="18" height="18" alt="" aria-hidden="true" class="btn-icon-img" />
Download
</a>
{% endif %}
@@ -118,7 +107,7 @@
<div class="info-block glass-card fade-in">
<h2 id="reinstall-heading">Installation Notes</h2>
<p>
If you have installed an older version of ViSERA, you can install the new version
If you have installed an older version of Radiuma, you can install the new version
over it without removing the previous installation. However, if you encounter any
problems, please remove the old version first before reinstalling.
</p>
+1 -1
View File
@@ -2,7 +2,7 @@
{% load static %}
{% block title %}FAQ{% endblock %}
{% block meta_description %}Frequently asked questions about ViSERA by Tecvico — licensing, citation, system requirements, and more.{% endblock %}
{% block meta_description %}Frequently asked questions about Radiuma by Radiuma — licensing, citation, system requirements, and more.{% endblock %}
{% block content %}
+57 -23
View File
@@ -2,7 +2,7 @@
{% load static %}
{% block title %}Home{% endblock %}
{% block meta_description %}Tecvico Corp — A Powerful Workflow Generator for Standardized Radiomics Analysis and Medical Image Visualization.{% endblock %}
{% block meta_description %}Radiuma — A Powerful Workflow Generator for Standardized Radiomics Analysis and Medical Image Visualization.{% endblock %}
{% block content %}
@@ -11,25 +11,33 @@
<div class="blob blob--1"></div>
<div class="blob blob--2"></div>
<div class="blob blob--3"></div>
<img src="{% static 'images/blob-blue-1.svg' %}" class="blob-img blob-img--hero-left" alt="" />
<img src="{% static 'images/abstract-shapes.svg' %}" class="blob-img blob-img--hero-right" alt="" />
</div>
<div class="container hero-content">
<div class="hero-badge">Developing since 2021</div>
<h1 class="hero-title" id="hero-heading">
Tecvico,
<br />
<span class="gradient-text">A Powerful Workflow Generator</span>
</h1>
<p class="hero-subtitle">
for Standardized Radiomics Analysis and Medical Image Visualization
</p>
<p class="hero-description">
ViSERA is a free, open-source software specialized for visualization, processing,
segmentation, registration, fusion and analysis of medical and biomedical images,
including radiomics and machine learning analysis.
</p>
<div class="hero-actions">
<a href="{% url 'pages:downloads' %}" class="btn-primary">Download Now</a>
<a href="{% url 'pages:about' %}" class="btn-ghost">About Tecvico</a>
<div class="hero-text">
<div class="hero-badge">Developing since 2021</div>
<h1 class="hero-title" id="hero-heading">
Radiuma,
<br />
<span class="gradient-text">A Powerful Workflow Generator</span>
</h1>
<p class="hero-subtitle">
for Standardized Radiomics Analysis and Medical Image Visualization
</p>
<p class="hero-description">
Radiuma is a free, open-source software specialized for visualization, processing,
segmentation, registration, fusion and analysis of medical and biomedical images,
including radiomics and machine learning analysis.
</p>
<div class="hero-actions">
<a href="{% url 'pages:downloads' %}" class="btn-primary">Download Now</a>
<a href="{% url 'pages:about' %}" class="btn-ghost">About Radiuma</a>
</div>
</div>
<div class="hero-app-preview fade-in">
<div class="hero-app-preview-glow" aria-hidden="true"></div>
<img src="{% static 'images/screenshot-1.jpg' %}" alt="Radiuma application — main workflow view" loading="eager" />
</div>
</div>
</section>
@@ -86,6 +94,32 @@
</div>
</section>
<section class="section screenshots-section" aria-labelledby="screenshots-heading">
<div class="container">
<div class="section-header">
<div class="section-badge">Gallery</div>
<h2 class="section-title" id="screenshots-heading">See Radiuma in Action</h2>
<p class="section-desc">
Explore Radiuma's powerful interface, workflow builder, and multi-modal image viewer.
</p>
</div>
<div class="screenshots-grid">
<div class="screenshot-item fade-in">
<img src="{% static 'images/screenshot-2.jpg' %}" alt="Radiuma full workflow interface" loading="lazy" />
</div>
<div class="screenshot-item fade-in">
<img src="{% static 'images/screenshot-3.png' %}" alt="Radiuma panel view" loading="lazy" />
</div>
<div class="screenshot-item fade-in">
<img src="{% static 'images/screenshot-5.png' %}" alt="Radiuma segmentation view" loading="lazy" />
</div>
<div class="screenshot-item fade-in">
<img src="{% static 'images/screenshot-8.jpg' %}" alt="Radiuma radiomics results" loading="lazy" />
</div>
</div>
</div>
</section>
{% if nav_main_products %}
<section class="section products-section" aria-labelledby="products-heading">
<div class="container">
@@ -123,14 +157,14 @@
<div class="container">
<div class="section-header">
<div class="section-badge">Value Proposition</div>
<h2 class="section-title" id="problems-heading">What Problems Does Tecvico Solve?</h2>
<h2 class="section-title" id="problems-heading">What Problems Does Radiuma Solve?</h2>
</div>
<div class="problems-grid">
<div class="problem-item glass-card fade-in">
<div class="problem-number" aria-hidden="true">01</div>
<h3 class="problem-title">Accessibility</h3>
<p class="problem-desc">
Tecvico provides a user-friendly interface and a wide range of tools, allowing
Radiuma provides a user-friendly interface and a wide range of tools, allowing
researchers to perform complex data analysis without extensive technical knowledge
or programming expertise.
</p>
@@ -139,7 +173,7 @@
<div class="problem-number" aria-hidden="true">02</div>
<h3 class="problem-title">Integrated Tools</h3>
<p class="problem-desc">
Tecvico integrates a vast collection of tools and resources from various domains
Radiuma integrates a vast collection of tools and resources from various domains
of healthcare and medical imaging research in a common, unified environment.
</p>
</div>
@@ -147,7 +181,7 @@
<div class="problem-number" aria-hidden="true">03</div>
<h3 class="problem-title">Flexibility</h3>
<p class="problem-desc">
Tecvico offers flexibility in terms of tool optimization and workflow customization
Radiuma offers flexibility in terms of tool optimization and workflow customization
to match your specific research requirements.
</p>
</div>
@@ -171,7 +205,7 @@
<div class="section-badge">Our Story</div>
<h2 class="section-title" id="about-strip-heading">More to Know</h2>
<p class="about-strip-text">
Tecvico has been developing since 2021 by the Quantitative Radiomolecular Imaging
Radiuma has been developing since 2021 by the Quantitative Radiomolecular Imaging
and Therapy (Qurit) lab &amp; program at the University of British Columbia &amp;
BC Cancer Research Institute, Vancouver, BC, Canada.
</p>