We want to migrate away from truffle for deploying the smart contract. What kind of approaches would be good to do this? Can deployment be done without truffle or similar tools, and done manually "pure" way?
For simple things, I think Remix online in remix.ethereum.org does a pretty good job and you have access to the debugger. Used together with Metamask make things even easier and this is always up to date with solidity new releases.
Combining your preferred text editor with Web3, in particular, web3py make things clean if you are familiar with python, but the wrapper for solidity is not up to date with the latest version.
You can also use web3 deploy to deploy your contract through a geth node (test/mainnet) by pasting your code into a browser with remix, then clicking the details tab. coping and pasting the web3 deploy script from the details tab into your terminal which has geth running. This will then deploy the contract to which ever network you are working on, don't forget to specify which EOA you wish to deploy from and the constructor arguments if there is any within your contract.
hope this helps