Would using the "Software Licence Tracker" be any use? Just treat the contract as a licence.

Or, not sure if this will work for you, but I did similar for tracking Security certificates.

I created a new Asset type under Configuration/Asset Mapping/Add Asset Type. in your case, you could call it "Contract"I then created a new asset state under Configurations/Asset Pages/Add Asset State. in your case, perhaps you could have "Pending", "Active", "Expired"

When adding the asset, I use the "Purchased" field as the start date of the contract, and the "Warranty" field as the expiry date.

You can then use all the usual contact info fields as your supplier contacts info.

If you want to you can also create a static group for each contract type. maybe "Contracts - Infrastructure" / "Contracts - Human Resources" etc. and add the appropriate contracts to each group. of course, you could also create dynamic groups to suite whatever criteria you set.

Kinda depends on which way you want to add it. Ian's post is good if you need a lot of information.

You could also just add a few asset custom fields and add the info there. That would also allow you to report on it just like Ian's proposal. Or simply add a document to the asset if that suffices. It really depends on your goal.