{"size": 532, "ext": "scrbl", "max_stars_repo_path": "design.scrbl", "max_stars_repo_name": "samdphillips/mushell", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "design.scrbl", "max_issues_repo_name": "samdphillips/mushell", "max_issues_repo_issues_event_min_datetime": "2021-02-27T07:13:48.000Z", "max_issues_repo_issues_event_max_datetime": "2021-03-01T08:26:58.000Z", "max_forks_repo_path": "design.scrbl", "max_forks_repo_name": "samdphillips/mushell", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": 1, "max_forks_count": null, "avg_line_length": 15.2, "max_line_length": 61, "alphanum_fraction": 0.7443609023}
#lang scribble/base

@title{mushell Design}

Basically Model View Presenter architecture

@section{Model}
@subsection{mushell-core%}
@para{
  Ties the other model parts together.
}

@subsection{player%}
@para{
  Interface to gstreamer.
}

@subsection{playlist%}

@subsection{track-library%}

@subsection{make-track-scanner}
@para{
  Scans a path and it's subdirectories for tracks.  Returns a
  stream of @tt{track}.
}

@section{Presenter}
@subsection{mushell-repl%}

@section{View}
Basic view pieces...

@subsection{mushell-view%}
