If the values are included in your layer:
you can call them in the printcomposer by going to tab 'Atlas generation'. In the section 'Output' you can define the outputname. In your example it would be:
"Projectcode" ||'_' || "Title" || '_' || day(now())|| '-' || month(now()) || '-' || year(now())
Which gives the result Projectcode_Title_15-01-2019
You can even automaticly add those features in your textboxes by choosing 'insert an expression' in the itemproperties of the textbox.
If the values ar NOT included in a layer:
Add project-variables: go to project > projectproperties (or press Ctrl+Shift+P)
In the section 'variables' add 2 new entries by clicking the green '+' in the right corner. Give them the name 'Projectcode' and 'Title'. Add a value for both.
Now you can call those variables everywhere in your project, also in the composer.
Add the desired textboxes and add following expressions:
[% @Projectcode %] and
For the outputfilename it gives you folowing expression:
@Projectcode ||'_' || @Title || '_' || day(now())|| '-' || month(now()) || '-' || year(now())