Before building your effort estimation you want to determine the size of the project. This can be determined by function points or lines of code. I find defining the size by function points to be the best method.
Your function points are going to be your use cases ie. your user actions in which you will need to define. In defining your use cases, you will need to know the input and the output, any validations or additional logic and any dependencies. You will also want to know your test environments.
Once you have this information, you should be in a decent spot to start building your estimate with Quick FPA. Quick FPA will take this information and ask additional questions such as what is the implementation platform you are using, what kind of set up will be needed, what implementation type does your use case fit into, how is the effort distributed between your input and output and is there any additional complexity or reuse factors we need to consider. It is easy to use once you jump in there and use it.
To build an effective estimate I tend to use a top down approach. I start with high level functionality and get only as granular as I need to. I also will prioritize my features by identifying which are ‘required’ and which are ‘nice to haves’.