That seems obvious, but you need a reliable tool capable to help you with compilation, migration and smart contract testing. That tool is the Truffle framework.
Also, to run a blockchain locally for testing, you need a relevant client. Feel free to choose [TestRPC]. It's a standard client that makes a good choice for automated testing. All you need is to Install both mentioned above tools globally to use them across various projects:
$ npm install -g truffle ethereumjs-testrpc
Basic DApp structure
When it comes to the Truffle framework, it has a set of resources for developing smart contracts. As for now, you can start with creating the following files and directory structure for your precious DApp:
As you can see, we haven't created any project-specific files. The point is, the created structure, and the source code of these files are project-agnostic and can be used for almost any project of yours. Let's see what do directories and file source codes mean:
build/ is where Truffle will put our compiled contracts.
chain/ is where the data directory and all the blockchain files will live. You will need it only when using geth as the blockchain client.
scripts/ is where we later will put various utility scripts.
test/ is where we will keep our files for automated testing.
contracts/ is where the Solidity source code will live for all our contracts. The only contract so far is the required but project-agnostic Migrations.sol that Truffle is using to store the migration state for your project-specific contracts.
migrations/ is where we need to put deployment scripts for all contracts. Please, keep in mind that scripts have to be named as they are executed in numerical order and the first script in a list must be the required but project-agnostic 1_initial_migration.js which migrates Migrations.sol to the blockchain. Your project-specific deployment scripts must be named 2_example.js, 3_example.js etc. Luckily, the format of deployment script is quite easy to understand.
genesis.json contain information required to create the very first block in the blockchain known as the coinbase. This is only required when using geth as the blockchain client. The file itself contains information about the initial mining difficulty, transaction gas limits, etc.
truffle.js contain basic configuration for the Truffle framework to connect to your blockchain.
Give it a try: create your very first smart contract
Now when you are done with the basic DApp project structure, you can proceed to the next stage and create your very first, and very own smart contract.
In Ethereum, smart contracts are written in Solidity. To get more details about that language, feel free to check out the Solidity documentation.
As for your smart contract, try to make as simple as possible. Let it perform simple actions including adding transactions, getting the address of the trustee, etc.