{% extends "base.html" %} {% import "partials/macros.html" as m %} {% block title %}{{ project.working_title }} -- ProducerOS{% endblock %} {% block page_heading %}{{ project.final_title or project.working_title }}{% endblock %} {% block content %}
{{ project.internal_code }} {{ m.stage_pill(project.state.value) }}
{{ m.cover(project, 'cover-large', media.artwork) }}

{{ project.final_title or project.working_title }}

{{ project.artist.name if project.artist else 'Independent project' }}

{{ m.player(media, project) }}

Overview

Identity

Musical information

Production information

Rights summary

Release information

Assets

Register a file path for each deliverable. Files stay in their original folder; they are not uploaded or copied. To preview audio or artwork, add its folder in Scanner or set your project root folder above. ProducerOS never modifies the file on disk -- it only records metadata about it.

{% for asset in assets %}

{{ asset.label }} ({{ asset.asset_type.value.replace("_"," ") }})

{% for v in asset_versions.get(asset.id, []) %} {% endfor %}
VersionFilenameApprovalCurrent
v{{ v.version_number }} {{ v.original_filename }} {{ m.approval_badge(v.approval_status.value) }} {% if v.is_current %}{{ m.checklist_badge("passed") }}{% else %}--{% endif %} {% if not v.is_current %}
{% endif %}
{% else %}

No assets registered yet.

{% endfor %}

Rights

Rights-share validation

{% if validations %} {% else %}

No rights shares recorded yet.

{% endif %}

Contributors

{% for c in contributors %}
{{ c.name }} ({{ c.role.value.replace("_"," ") }}) {% if c.approved %}{{ m.checklist_badge("passed") }}{% else %}
{% endif %}
{% else %}

No contributors yet.

{% endfor %}

Rights shares

{% for s in rights_shares %}
{{ s.holder_name }} ({{ s.share_type.value }})
{% else %}

No rights shares yet.

{% endfor %}

Clearances

{% for c in clearances %}
{{ c.description }} ({{ c.clearance_type.value }}) {{ m.checklist_badge("passed" if c.status.value == "cleared" else ("waived" if c.status.value == "not_applicable" else ("blocking" if c.status.value == "denied" else "warning"))) }}
{% else %}

No clearances tracked yet.

{% endfor %}

Tracks

{% for t in project.tracks %}
{{ t.title }}
{% else %}

Single-track project (no additional tracks added).

{% endfor %}
{% endblock %}