Basic GUI for the SIr model

Manipulate[
Module[{sol,max},
sol=NDSolveValue[
{
S'[t]==-(R/Tinf) S[t]ℐ[t],S[0]==1-I0,
ℐ'[t]==(R/Tinf) S[t]ℐ[t]-(1/Tinf) ℐ[t],ℐ[0]==I0},
{S[t],ℐ[t],1-S[t]-ℐ[t]},{t,0,T}];
max=1.1NMaximize[{sol[[2]],0<t<T},t][[1]];
Plot[Evaluate[sol],{t,0,T},PlotRange->{All,{0,1}},PlotLegends->Placed[LineLegend[("  "<>#1<>"     "&)/@{"Susceptible, S","Infectious, I","Removed, R"},LegendLayout->(Row[Flatten[#1]]&)],{Center,Below}],PlotRange->{{0,1},All},Frame->True,PlotRangePadding->None,ImageSize->Large,PlotStyle->Thickness[0.01],Exclusions->None,PerformanceGoal->"Quality",FrameLabel->{"time (days)","% of population"}]],

Style["Virus parameters:",Bold,14],
{{R,1.5`,(Style[#1,12]&)["Replication number, R (β/γ)"]},0,10,},
{{Tinf,7,(Style[#1,12]&)["Infectious period (days),1/γ"]},0,60,},Delimiter,Spacer[1],

Style["Additional parameters:",Bold,14],
{{T,100,(Style[#1,12]&)["Duration of run (days), T"]},1,1000,Appearance->{"Labeled","UpArrow"},ImageSize->Small,ContinuousAction->True},
{{I0,0.01`,(Style[#1,12]&)["Initial infected (fraction of population) \!\(\*SubscriptBox[\(I\), \(0\)]\)"]},0,1,},
Sequence[ControlPlacement->Left, SaveDefinitions->True,TrackedSymbols:>Manipulate]]