PHPackages                             tdt/start - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tdt/start

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

tdt/start
=========

If you want to start working on The DataTank, start here! This is an installer, a config reader and a router.

v1.2.4(12y ago)41153[2 issues](https://github.com/tdt/start/issues)AGPLv3PHPPHP &gt;=5.3.0

Since Jan 15Pushed 12y ago3 watchersCompare

[ Source](https://github.com/tdt/start)[ Packagist](https://packagist.org/packages/tdt/start)[ Docs](http://thedatatank.com)[ RSS](/packages/tdt-start/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (19)Used By (0)

tdt/start
=========

[](#tdtstart)

[![Build Status](https://camo.githubusercontent.com/bed86d0e69c47b725fffe99799d3edc296ebf3f12eed8aaf4148debc3809fdb5/68747470733a2f2f7472617669732d63692e6f72672f7464742f73746172742e706e67)](https://travis-ci.org/tdt/start)

If you want to start working on The DataTank, start here! This is an installer, a config reader and a router. If you have an empty LAMP stack, this is the right way to go. If you already have a Symfony, Drupal, WordPress, Zend... system installed, you might want to look into the separate packages.

---

Installation
------------

[](#installation)

### Composer

[](#composer)

We use composer to install all The Datatank's dependencies. Composer is a PHP package manager and installs necessary dependencies for you, instead of having to download those dependencies yourself. These dependencies are described in the composer.json file along with some additional meta-data. For more information about composer, check out their project website.

Open a terminal, and install [composer](http://getcomposer.org/download/):

```
$ curl -s https://getcomposer.org/installer | php

# Move composer to a directory in your $PATH (for easy access)
$ sudo mv composer.phar /usr/local/bin/composer
```

### Create-project

[](#create-project)

If you have composer installed, you can get your copy of tdt/start by running:

```
$ composer create-project tdt/start -s dev
```

After that a composer update: `composer update` is adviced.

### Alternative

[](#alternative)

Clone this git repository to your machine, you can checkout to a certain tag (version) too. After that use composer to get all dependencies.

```
$ composer update
```

---

Getting started
---------------

[](#getting-started)

There are two folders in this repository: public/ and app/. Public contains all the publicly accessible files, such as html, javascript and css files. App contains all the bootstrap code which configures and initiates the correct packages.

### index.php

[](#indexphp)

Copy the example index.php file from public/index.example.php → public/index.php. Change the environment setting if desired. The default environment setting is production, but if you're looking to develop or test the software you want to change the environment setting to *development* or *testing* respectively.

### Configuration

[](#configuration)

Copy the config example files in app/config/ (e.g. app/config/general.example.json → app/config/general.json)

Below we cover each of the configuration files and what their configuration parameters are:

#### general.json

[](#generaljson)

1. hostname - The hostname of the server it's installed on e.g.  .
2. subdir - The subdirectory of the host where you installed The DataTank. Mostly this is the filestructure relative to your *www* folder. Don't forget the trailing slash if you're filling this in!
3. timezone - The timezone you're in.
4. defaultlanguage - The abbreviation of your language e.g. en, nl,...
5. defaultformat - The default format in which queried data will be presented in if no format is specified with the request.
6. accesslogapache - The absolute path to the apache log access file. This will be used to perform some statistical queries.
7. cache - Contains three parameters to perform caching:
    - system - Choose from NoCache or MemCache. If you opt for MemCache, be sure that Memcached is installed.
    - host - The host that the caching system is running on. Note that if NoCache has been used, host and port don't really matter.
    - port - The port to which we have to connect in order to communicate with the caching system.
8. logging - Contains parameters to log actions that happen within the software:
    - enabled - true/false.
    - path - The absolute path to a directory where we can put the logging files. Make sure PHP has write access to this directory!

#### db.json

[](#dbjson)

1. system - The system name of the database. MySQL is strongly advised, although we use an ORM that handles different kinds of databases, we have not tested this thoroughly enough.
2. host - The host on which the database runs. e.g. localhost
3. user - The username to connect to the database. Make sure this user has write privileges.
4. name - The name of the database you want to use to let The DataTank write its meta-data in.
5. password - The password for the user to connect to the database.

#### cores.json

[](#coresjson)

This file will contain the regular expressions that will route an HTTP-request to the correct destination. Uncomment the routes in the *core* entry of the json file, and that should get you going.

#### auth.json

[](#authjson)

This file will contains your user(s) for the autheticated parts of The DataTank. Username and password are required. These users are used in combination with routes, serveral routes in the example cores file require the user `tdtadmin` for example, but here are some more:

\#####Example routes

```
// Normal route
"HTTP_METHOD | URI" : "CONTROLLER"
// Single user
"HTTP_METHOD | URI | @username" : "CONTROLLER"
// Multiple users
"HTTP_METHOD | URI | @username, @user2, @user3" : "CONTROLLER"
```

### Virtual host

[](#virtual-host)

- Make the *public/* folder the root of a virtual host.

Below are some examples but you can use any webserver you want.

#### Nginx

[](#nginx)

```
server{
    # Listen to a certain ip/port (e.g. IPV4 and IPV6 on port 80)
    listen [::]:80;

    # This example runs the datatank on a subdomain
    server_name     data.domain.ext;

    # Point your root to the correct folder
    root            /path/to/tdt/start/public;

    # Rewrite for clean URLs
    location / {
        rewrite ^/(.*)$ /index.php?$1 last;
    }

    # Other directives here
}
```

#### Apache

[](#apache)

Rewrites are done by the included .htaccess file

```

    # Point your root to the correct folder
    DocumentRoot /path/to/tdt/start/public

    # This example runs the datatank on a subdomain
    ServerName     data.domain.ext

    # Other directives here

```

Updating tdt/start
------------------

[](#updating-tdtstart)

Updating tdt/start isn't something you can do with composer (for now). However you can still upgrade by pulling the latest version with GIT:

```
git init
git remote add origin https://github.com/tdt/start.git
git pull
```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~13 days

Recently: every ~30 days

Total

16

Last Release

4667d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ea7deaa6beab35e56598e71e03d8ca3560856815c7aff95269f85eb572f3c8ac?d=identicon)[coreation](/maintainers/coreation)

---

Top Contributors

[![coreation](https://avatars.githubusercontent.com/u/361244?v=4)](https://github.com/coreation "coreation (15 commits)")[![pietercolpaert](https://avatars.githubusercontent.com/u/347073?v=4)](https://github.com/pietercolpaert "pietercolpaert (10 commits)")[![dive-michiel](https://avatars.githubusercontent.com/u/2650975?v=4)](https://github.com/dive-michiel "dive-michiel (6 commits)")

### Embed Badge

![Health badge](/badges/tdt-start/health.svg)

```
[![Health](https://phpackages.com/badges/tdt-start/health.svg)](https://phpackages.com/packages/tdt-start)
```

###  Alternatives

[composer/composer

Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.

29.4k187.2M2.6k](/packages/composer-composer)[ergebnis/composer-normalize

Provides a composer plugin for normalizing composer.json.

1.1k37.3M2.1k](/packages/ergebnis-composer-normalize)[getdkan/dkan

DKAN Open Data Catalog

385135.4k2](/packages/getdkan-dkan)[e0ipso/shaper

Lightweight library to handle in and out transformations in PHP.

157.8M4](/packages/e0ipso-shaper)[nfephp-org/sped-esocial

e-Social library

18030.7k](/packages/nfephp-org-sped-esocial)[optimizely/optimizely-sdk

Optimizely PHP SDK for Optimizely Feature Experimentation, Optimizely Full Stack (legacy), and Optimizely Rollouts

191.8M1](/packages/optimizely-optimizely-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
