{#- 프로젝트 한 장. 두 등급뿐이다: 랜딩이거나 브리프거나. 중간 등급을 만들면 어느 프로젝트가 어디에 속하는지 매번 새로 판단해야 한다. 등급은 `tier` 가 정하지만 블록의 유무는 데이터가 정한다 — features 가 [] 면 그 섹션이 없다. 빈 배열이 이미 "없음"이라 플래그를 따로 두지 않는다. 별 개수는 tools/stars.py 가 front matter 에 구워 둔 값이다. 렌더 중에 네트워크를 부르면 재현되는 빌드가 아니게 되고, 브라우저에서 부르면 익명 API 한도(IP 당 60/시간)에 걸린다. 0 이어도 보여 준다 — 그게 사실이고, 없는 항목만 숫자가 빠지면 줄이 어긋난다. #} {% extends "base.html" %} {% from "partials/icons.html" import i_out, i_arrow %} {% from "partials/lang.html" import lang_switch %} {% block content %}
{%- if page.section %} {{ page.section.title }} {%- endif %}
{%- if page.extra.eyebrow %}

{{ page.extra.eyebrow }}

{%- endif %} {#- 이름 옆의 작은 마크가 명패의 시작이다. 없으면 이름만 선다. #}

{%- if page.extra.mark %} {%- elif page.extra.logo %} {%- endif %} {{ page.title }}

{%- if page.extra.tagline %}

{{ page.extra.tagline }}

{%- endif %}
    {%- if page.extra.lang %}
  • {{ page.extra.lang }}
  • {% endif %} {%- if page.extra.license %}
  • {{ page.extra.license }}
  • {% endif %} {%- if page.extra.version %}
  • {{ page.extra.version }}
  • {% endif %} {%- if page.extra.platform %}
  • {{ page.extra.platform }}
  • {% endif %} {%- if page.extra.repo %}
  • {{ page.extra.stars }} ★
  • {% endif %}
{{ lang_switch(page) }} {%- if page.extra.actions %}
{%- for a in page.extra.actions %} {{ a.label }}{{ i_out() }} {%- endfor %}
{%- endif %}
{#- 옆칸은 규격이 하나다. 마크 → 로고 → "그림 없음". 좁은 화면에서는 지우지 않고 위로 올린다 — 지우면 그 프로젝트만 그림이 없는 것처럼 보인다. #}
{%- if page.extra.facts %}
{%- for f in page.extra.facts %}
{{ f.value }} {{ f.label }}
{%- endfor %}
{%- endif %} {%- if page.content %}
{{ page.content | safe }}
{%- endif %} {%- if page.extra.features %}
{%- if page.extra.features_eyebrow %}

{{ page.extra.features_eyebrow }}

{% endif %} {%- if page.extra.features_title %}

{{ page.extra.features_title }}

{% endif %} {%- if page.extra.features_intro %}

{{ page.extra.features_intro }}

{% endif %}
{%- for f in page.extra.features %}
{#- 번호는 저자가 적지 않는다. 순서가 곧 번호이므로 루프가 만든다. #}

{{ f.title }}

{{ f.desc }}

{%- endfor %}
{%- endif %} {%- if page.extra.session_lines %}
{%- if page.extra.session_eyebrow %}

{{ page.extra.session_eyebrow }}

{% endif %} {%- if page.extra.session_title %}

{{ page.extra.session_title }}

{% endif %}
{{ page.extra.session_shell }}
{%- for l in page.extra.session_lines %}
{{ l.text }}
{%- endfor %}
{%- if page.extra.session_caption %}

{{ page.extra.session_caption }}

{%- endif %}
{%- endif %} {%- if page.extra.cta_title %}

{{ page.extra.cta_title }}

{%- if page.extra.cta_text %}

{{ page.extra.cta_text }}

{% endif %} {%- if page.extra.cta_actions %}
{%- for a in page.extra.cta_actions %} {{ a.label }}{{ i_arrow() }} {%- endfor %}
{%- endif %}
{%- endif %}
{% endblock %}