== Getting Started ==

=== Basics ===

TaskJuggler uses one or more text files to describe a project. The
main project should be placed in a file with the .tjp extension. This
main project may include other files. Such included files must have
file names with a ''''.tji'''' extension.

The graphical user interface from the 2.x version has not been ported
to TaskJuggler 3.x yet. So all work with TaskJuggler needs to be done
in your favorite text editor and in a command shell.

The commandline version of TaskJuggler works like a compiler. You
provide the source files, it computes the contents and creates the
output files. Let's say you have a project file called
''''AcSo.tjp''''. It contains the tasks of your project and their
dependencies. To schedule the project and create report files you have
to ask TaskJuggler to process it.

 tj3 AcSo.tjp

TaskJuggler will try to schedule all tasks with the specified
conditions and generate the reports that were requested with the
[[taskreport]], [[resourcereport]] or other report properties
in the input file. The report files will be generated in the current
directory or relative to it.

If you specify file names in a project file, you need to use the
''''/'''' as directory separator. This way, projects are portable
across all operating systems. Do not use the ''''\'''' or '''':''''
that are used on some operating systems.

=== Structure of a TJP File ===

Each TaskJuggler project consists of one or more text files. There is
always a main project file that may [[include.properties|include]] other
files. The main file name should have a ''''.tjp'''' suffix, the
included files must have a ''''.tji'''' suffix.

Every project must start with a [[project|project header]]. The
project header must be in the main project file. All other elements
may be put into include files. The project header must then be
followed by any number of project properties such as [[account|
accounts]], [[resource|resources]], [[task|tasks]] and 
reports. Each project must have at least one task defined and should
have at least one report.  Properties don't have to be listed in a
particular order, but may have interdependencies that require such an
order. If you want to assign a resource to work on a task, this
resource needs to be defined first. It is therefor recommended to
define them in the following sequence.

* [[macro|macros]]
* [[flags]]
* [[account|accounts]]
* [[shift|shifts]]
* [[vacation|vacations]]
* [[resource|resources]]
* [[task|tasks]]
* [[accountreport|accountreports]]
* [[resourcereport|resourcereports]]
* [[taskreport|taskreports]]
* [[textreport|textreports]]
* [[export|exports]]

