First commite

This commit is contained in:
Pavel Sobolev
2025-11-12 23:49:00 +03:00
commit c4bb087aaf
28 changed files with 2090 additions and 0 deletions

125
cv/templates/index.html Normal file
View File

@@ -0,0 +1,125 @@
{% load static %}
{% load media %}
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>{{ profile.full_name }}</title>
<meta name="description" content="Персональный сайт-резюме — {{ profile.full_name }}">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{% static 'cv/css/style.css' %}">
</head>
<body class="container">
<header class="site">
<div class="header-left">
</div>
<div class="header-right">
<a class="btn outline" href="{% url 'cv:resume-pdf' %}" download>PDF</a>
<a class="btn outline" href="{% url 'cv:resume-docx' %}" download>DOCX</a>
</div>
</header>
<main>
<section class="hero">
<div class="hero__avatar" aria-hidden="true">
{% if profile.photo %}
<img src="{% media profile.photo %}" alt="{{ profile.full_name }}">
{% else %}
{{ profile.full_name|slice:":1" }}
{% endif %}
</div>
<div class="hero__content">
<h2>Привет, я {{ profile.full_name }}</h2>
{% if profile.role %}<p class="lead">{{ profile.role }} • {{ profile.location }}</p>{% endif %}
<p class="lead" style="margin-top:12px">{{ profile.summary }}</p>
</div>
</section>
<div class="grid">
<div>
<section id="experience" class="card">
<h3>Опыт работы</h3>
<div class="timeline" style="margin-top:10px">
{% for job in profile.experience.all %}
<article class="job">
<div class="company"><span style="opacity:.9">{{ job.company }}</span></div>
<div class="period">
{% with sd=job.start_date ed=job.end_date %}
{% if sd %}{{ sd|date:"F Y" }}{% endif %}{% if ed %} — {{ ed|date:"F Y" }}{% else %} — настоящее время
{% endif %}
{% endwith %}
</div>
{% if job.summary %}<div style="margin-top:8px;color:var(--muted)">{{ job.summary }}</div>{% endif %}
{% if job.achievements %}
<ul>
{% for a in job.achievements %}
<li>{{ a }}</li>
{% endfor %}
</ul>
{% endif %}
</article>
{% empty %}
<div class="job muted">Нет записей об опыте.</div>
{% endfor %}
</div>
</section>
</div>
<aside>
<section id="skills" class="card">
<h3>Навыки</h3>
<div style="margin-top:10px">
{% for group in profile.skills_map.all %}
<div style="margin-bottom:10px">
<div style="font-weight:700">{{ group.group }}</div>
<div style="margin-top:8px;display:flex;flex-wrap:wrap;gap:8px">
{% for s in group.items %}<span class="pill">{{ s }}</span>{% endfor %}
</div>
</div>
{% empty %}<div class="muted">Нет данных по навыкам.</div>{% endfor %}
</div>
</section>
<section id="contacts" class="card" style="margin-top:18px">
<h3>Контакты</h3>
<div style="margin-top:10px;display:flex;flex-direction:column;gap:10px">
{% if profile.email %}
<div>
<strong>Email:</strong>
<a href="mailto:{{ profile.email }}">{{ profile.email}}</a>
</div>
{% endif %}
{% if profile.phone %}
<div>
<strong>Телефон:</strong>
{{ profile.phone }}
</div>
{% endif %}
{% if profile.telegram %}
<div><strong>Telegram:</strong>
<a href="https://t.me/{{ profile.telegram|cut:'@' }}" target="_blank" rel="noreferrer">
{{profile.telegram}}
</a>
</div>
{% endif %}
{% if profile.git %}
<div>
<strong>Git:</strong>
<a href="{{ profile.git }}" target="_blank" rel="noreferrer">
{{ profile.git }}
</a>
</div>
{% endif %}
</div>
</section>
</aside>
</div>
</main>
</body>
</html>