@model WriterDashboardViewModel @{ ViewData["Title"] = "Writer Workspace"; var message = TempData["WriterWorkspaceMessage"] as string; var error = TempData["WriterWorkspaceError"] as string; }

Today view

Writer Workspace

A practical control room for drafting, revision, polish, and story readiness.

Schedule Setup Schedule Preview
@if (!string.IsNullOrWhiteSpace(message)) {
@message
} @if (!string.IsNullOrWhiteSpace(error)) {
@error
}

Daily plan

Today's Writing

@Model.WritingSchedule.TodayTasks.Count tasks
@if (!Model.WritingSchedule.HasActivePlans) {

No writing schedule configured.

Create Writing Schedule } else { @if (!Model.WritingSchedule.TodayTasks.Any()) {

No writing tasks scheduled for today.

} else {
@foreach (var item in Model.WritingSchedule.TodayTasks) { }
Task Type Book Chapter Scene Priority Estimated Minutes Target Words Blocked Writing Plan
@item.TaskType @item.BookTitle Chapter @item.ChapterNumber: @item.ChapterTitle Scene @item.SceneNumber: @item.SceneTitle @(item.Priority?.ToString() ?? "-") @(item.EstimatedMinutes?.ToString() ?? "-") @(item.TargetWords?.ToString() ?? "-") @(item.IsBlocked ? "Yes" : "No") @item.PlanName
}

Upcoming work

Coming Up

@Model.WritingSchedule.UpcomingTasks.Count tasks
@if (!Model.WritingSchedule.UpcomingTasks.Any()) {

No upcoming writing tasks.

} else {
@foreach (var item in Model.WritingSchedule.UpcomingTasks) { }
Scheduled Date Task Type Book Chapter Scene Estimated Minutes Target Words
@item.ScheduledDate.ToString("dd MMM yyyy") @item.TaskType @item.BookTitle Chapter @item.ChapterNumber: @item.ChapterTitle Scene @item.SceneNumber: @item.SceneTitle @(item.EstimatedMinutes?.ToString() ?? "-") @(item.TargetWords?.ToString() ?? "-")
}

Schedule

Progress Summary

@if (!Model.WritingSchedule.HasActiveSchedule) {

No active schedule

}

Active Plans

@Model.WritingSchedule.ActivePlanCount

Total Planned Tasks

@Model.WritingSchedule.TotalPlannedTasks

Completed Tasks

@Model.WritingSchedule.CompletedTasks

Skipped Tasks

@Model.WritingSchedule.SkippedTasks

Remaining Tasks

@Model.WritingSchedule.RemainingTasks

Projected Finish Date

@(Model.WritingSchedule.ProjectedFinishDate?.ToString("dd MMM yyyy") ?? "-")
}

Write Next

Write Next

@Model.WriteNext.Count scenes

In progress

Continue Writing

@Model.ContinueWriting.Count scenes

Revision

Revision Queue

@Model.RevisionQueue.Count scenes

Final pass

Polishing Queue

@Model.PolishingQueue.Count scenes

Story health

Reminders

@Model.StoryHealthReminders.Count items
@foreach (var reminder in Model.StoryHealthReminders) {
@reminder.Category @reminder.Title @if (!string.IsNullOrWhiteSpace(reminder.Detail)) {

@reminder.Detail

} @if (reminder.SceneID.HasValue) { Open scene }
}