2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30
2026-06-21 17:54:19 +03:30

Tecvico Website

Django MVT informational website for Tecvico, showcasing products and solutions from tecvico.com.

Tech Stack

Layer Technology
Backend Django 5.1 (MVT)
Database PostgreSQL 16
Static files WhiteNoise (with Brotli compression)
Application server Gunicorn
Containerization Docker + Docker Compose
Frontend Vanilla HTML/CSS/JS (no framework)

Project Structure

tecvico_website/
├── config/                     # Django project configuration
│   └── settings/
│       ├── base.py             # Shared settings
│       ├── development.py      # Dev settings (DEBUG=True, dotenv)
│       └── production.py      # Production settings (security headers)
├── apps/
│   ├── core/                   # Context processors, management commands
│   │   └── management/commands/seed_content.py
│   ├── products/               # MainProduct, SubProduct, Article, ArticleSection
│   └── pages/                  # FAQEntry, DownloadItem; static pages
├── templates/                  # Global templates
│   ├── base.html
│   ├── partials/
│   └── pages/ & products/
├── static/
│   ├── css/main.css            # Full design system (Tecvico light theme)
│   └── js/main.js              # Navbar, FAQ accordion, scroll effects
├── Dockerfile
├── docker-compose.yml          # Production compose
├── docker-compose.override.yml # Development compose overrides
└── entrypoint.sh               # DB wait + migrate on container start

URL Map

URL View Description
/ HomeView Landing page
/about/ AboutView About Tecvico
/products/ ProductOverviewView All main products
/products/<main-slug>/ MainProductDetailView Main product + sub-products
/products/<main-slug>/<sub-slug>/ SubProductDetailView Sub-product + articles
/downloads/ DownloadsView Download items by platform
/faq/ FAQView FAQ entries
/contact/ ContactView Contact info
/admin/ Django Admin Admin panel

Data Model

MainProduct
 └── SubProduct (FK → MainProduct)
      └── Article (FK → SubProduct)
           └── ArticleSection (FK → Article)  ← key/value metadata

FAQEntry          ← admin-managed FAQ items
DownloadItem      ← admin-managed download links per platform

Local Development (with Docker)

Prerequisites

  • Docker Desktop (or Docker Engine + Compose plugin)

1. Clone & configure

git clone <repo-url> tecvico_website
cd tecvico_website
cp .env.example .env

Edit .env and set at minimum:

DJANGO_SECRET_KEY=your-very-secure-random-key
POSTGRES_PASSWORD=choose-a-strong-password

2. Start services (development mode)

The docker-compose.override.yml automatically activates when you run docker compose up, mounting the source code and using the development settings.

docker compose up --build

The app is available at http://localhost:8000

3. Create a superuser

docker compose exec web python manage.py createsuperuser

4. Seed initial content

Populate the database with content scraped and adapted from visera.ca:

docker compose exec web python manage.py seed_content

To flush and re-seed from scratch:

docker compose exec web python manage.py seed_content --flush

Local Development (without Docker)

Prerequisites

  • Python 3.12+
  • PostgreSQL 14+

1. Set up virtual environment

python -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install -r requirements-dev.txt

2. Configure environment

cp .env.example .env

Edit .env:

DJANGO_SECRET_KEY=your-key
POSTGRES_DB=tecvico
POSTGRES_USER=your_pg_user
POSTGRES_PASSWORD=your_pg_password
POSTGRES_HOST=localhost
POSTGRES_PORT=5432

3. Create the database

createdb tecvico

4. Run migrations & seed

python manage.py migrate
python manage.py seed_content
python manage.py createsuperuser

5. Start development server

python manage.py runserver

Running Tests

With Django test runner

python manage.py test apps

With pytest (requires requirements-dev.txt)

pytest

With coverage report

coverage run -m pytest
coverage report -m
coverage html       # Generates htmlcov/index.html

Production Deployment

1. Build and start production containers

Remove docker-compose.override.yml (or don't override it) and pass production environment variables:

DJANGO_SETTINGS_MODULE=config.settings.production \
docker compose -f docker-compose.yml up --build -d

2. Production .env checklist

Variable Notes
DJANGO_SECRET_KEY Use python -c "import secrets; print(secrets.token_urlsafe(50))"
DEBUG Must be False
ALLOWED_HOSTS Comma-separated: yourdomain.com,www.yourdomain.com
CSRF_TRUSTED_ORIGINS https://yourdomain.com
POSTGRES_PASSWORD Strong random password
SECURE_SSL_REDIRECT True when behind TLS termination

Place an Nginx or Caddy reverse proxy in front of Gunicorn for TLS termination and serving static files (or let WhiteNoise handle statics directly).


Admin Panel

Access Django Admin at /admin/ with superuser credentials.

What you can manage

Model Description
Main Products Top-level products with nested sub-products inline
Sub Products Modules within a main product; articles editable inline
Articles Article entries with section key/values inline
Article Sections Individual key-value metadata rows
FAQ Entries Accordion FAQ items (order, active toggle)
Download Items Platform download links (Windows/macOS/Linux)

Seed Content

The seed_content command populates:

  • Tecvico (MainProduct) with 5 sub-products:
    • Image Processing
    • Radiomics Features
    • Medical Image Visualization
    • Format Conversion
    • Workflow Management
  • Articles and sections for each sub-product
  • 6 FAQ entries
  • 3 download items (Windows active, macOS/Linux coming soon)

Content is adapted from the original visera.ca website.


Design System

The website uses a custom dark-glass design combining:

  • visera.ca aesthetic — dark background, organic blob animations, blue/teal accents
  • Apple visionOS Ice aesthetic — frosted glass panels (backdrop-filter: blur), translucent cards, soft gradients

Key CSS custom properties are in static/css/main.css under :root.


License

Content is adapted from visera.ca under CC BY-NC-SA. Software code is proprietary to Tecvico.

S
Description
No description provided
Readme 4.2 MiB
Languages
Python 59.3%
HTML 19.9%
CSS 17.7%
JavaScript 2.9%
Shell 0.1%
Other 0.1%