{% extends "base.html" %} {% from "_macros.html" import modal %} {% block extra_head %} {% endblock %} {% block content %} {% set project_url = "/projects/" ~ (project['slug'] or project['uid']) %} {% set cover = attachments | selectattr('uid', 'equalto', project.get('cover_attachment_uid', '')) | selectattr('is_image') | list | first %} {% set logo = attachments | selectattr('uid', 'equalto', project.get('logo_attachment_uid', '')) | selectattr('is_image') | list | first %} {% set hero_uids = [(cover or {}).get('uid'), (logo or {}).get('uid')] %} {% set gallery = attachments | selectattr('is_image') | rejectattr('uid', 'in', hero_uids) | list %} {% set other_attachments = attachments | rejectattr('is_image') | list %} {% set cover_src = (cover or {}).get('url') or ((gallery | first or {}).get('url')) %}
← Back to Projects
{% if cover_src %} {{ project['title'] }} cover image {% endif %}
{% if logo %} {% endif %}

{{ render_title(project['title'], author_is_admin=is_admin(author)) }}

● {{ project.get('status', 'In Development') }}
{{ project.get('project_type', 'software').replace('_', ' ') }} {% for plat in platforms %} {{ plat.strip() }} {% endfor %} {% if is_private %}Private{% endif %} {% if read_only %}Read-only{% endif %}
{% set _size = 32 %}{% set _size_class = "sm" %}{% set _user = author %}{% include "_avatar_link.html" %}
{% set _user = author %}{% set _class = none %}{% include "_user_link.html" %} · Level {{ author.get('level', 1) if author else 1 }}
{% if project.get('created_at') %} 🌱 Started {{ dt_ago(project['created_at']) }} {% endif %}
{% if project.get('website_url') %} {% endif %}
{% if project.get('release_date') or project.get('demo_date') or forked_from %}
{% if project.get('release_date') %} 📅 Released: {{ format_date(project['release_date']) }} {% endif %} {% if project.get('demo_date') %} 🎭 Demo: {{ format_date(project['demo_date']) }} {% endif %} {% if forked_from %} ⑂ Forked from {{ render_title(forked_from['title']) }} {% endif %}
{% endif %}
📁 Files ({{ file_count }} files) {% if workspace_editor_url %} {% set _url = workspace_editor_url %} {% set _uid = project['uid'] %} {% set _class = "project-star-btn" %} {% set _icon = "💻"|safe %} {% set _mode = workspace_editor_mode %} {% set _width = workspace_editor_width %} {% set _height = workspace_editor_height %} {% set _label = "Editor" %} {% include "_editor_open.html" %} {% endif %} {% if user %} {% set _type = "project" %}{% set _uid = project['uid'] %}{% set _my_vote = my_vote %}{% set _count = star_count %}{% set _btn_class = "project-star-btn" %}{% include "_star_vote.html" %} {% endif %} {% set _type = "project" %}{% set _uid = project['uid'] %}{% set _bookmarked = bookmarked %}{% include "_bookmark_button.html" %} {% set _type = "project" %}{% set _uid = project['uid'] %}{% set _reactions = reactions %}{% include "_reaction_bar.html" %} {% set _type = "project" %}{% set _uid = project['uid'] %}{% set _owner = project['user_uid'] %}{% set _owner_name = (author or {}).get('username', '') %}{% set _class = "project-star-btn" %}{% include "_report_button.html" %}
{% if maturity_hidden(maturity, user) %} {% set _level = maturity %}{% include "_maturity_gate.html" %} {% else %}
{{ render_content(project.get('description', ''), author_is_admin=is_admin(author)) }}
{% endif %} {% if other_attachments %} {% set attachments = other_attachments %} {% include "_attachment_display.html" %} {% endif %}
{{ devlog_count }} update{{ '' if devlog_count == 1 else 's' }} {% if is_owner %} {% endif %}
{% if devlog_posts %} {% for item in devlog_posts %} {% set _author = item.author %}{% set _time = item.time_ago %}{% set _show_share = false %}{% set _show_comment_form = false %}{% include "_post_card.html" %} {% endfor %} {% set next_cursor = devlog_next_cursor %}{% include "_load_more.html" %} {% else %}

No devlog posts yet.{% if is_owner %} Share your first update to give this project a public build log.{% endif %}

{% endif %}
{% if gallery %}
{% for shot in gallery[:12] %} {{ project['title'] }} screenshot {{ loop.index }} {% endfor %}
{% if gallery | length > 12 %}

Showing 12 of {{ gallery | length }} screenshots.

{% endif %}
{% endif %}
{% with target_uid=project['uid'], target_type="project" %} {% include "_comment_section.html" %} {% endwith %}
{% if is_owner %} {% call modal('create-post-modal', 'Post an update') %} {% set _composer_topic = 'devlog' %}{% set _composer_project = project['uid'] %}{% include "_post_composer_form.html" %} {% endcall %} {% call modal('add-screenshots-modal', 'Add screenshots') %}
{% include "_attachment_form.html" %} Images appear in the Screenshots gallery; other files list under About.
{% endcall %} {% call modal('edit-project-modal', 'Edit Project') %}
{% for t in [('game', 'Game'), ('game_asset', 'Game Asset'), ('software', 'Software'), ('mobile_app', 'Mobile App'), ('website', 'Website')] %} {% endfor %}
{% for p in ['PC', 'Windows', 'Mac', 'Linux', 'iOS', 'Android', 'Web', 'Console'] %} {% endfor %}
{% endcall %} {% endif %}
{% endblock %} {% block extra_js %} {% endblock %}