Hi @m3nt0r,
I would look at existing marketplaces which likely have a wide audience to see if this was suitable for your use case e.g. OpenSea, rather than creating your own sale contract.
You would need to create an exchange/sale contract. You could look at the OpenZeppelin Contracts Crowdsale contracts for some ideas: https://docs.openzeppelin.com/contracts/4.x/crowdsales
Your sale contract would need to hold the token (or be granted an allowance), assuming that the tokens have already been minted.
I recommend only including functionality required for the life of the contract. When selling tokens, if the sale has a limited life, then I would make this separate from the token. This separates the concerns.