Simple question, but answer can be really hard on this one.
Depending on the scope and complexity of application there are different approaches.
For simple needs as for posting it on a job board I would not go into too much details. Describe general working of the application, with ‘side notes’ for more complex situations.
Describe elements of the application (front end, back end, database, any 3rd party communication systems etc.).
Provide sufficient information regarding some specifics (i.e. creation of PDF, user login system with confirmation mail etc).
For the rest, leave it to the potentials programmers to ask you additional questions. Once you get in a close conversation with few (1-3) of them, then go into deep details.
I prefer to write app specs in ‘plain’ English so it is understandable for everyone. Afterwards, if needed I would create technical docs as well (which describe layout of database, used technologies, different connectivities and such - which is a great help for the end programmer).
Good luck 😊
Smilie