Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ deploy.*

# Ignore configuration files
/config/*
!/config/api_sample.php
!/config/_example.php

# PHPUnit
/phpunit.xml
Expand Down
178 changes: 16 additions & 162 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,173 +1,27 @@
<p align="center">
<a href="https://directus.io" target="_blank" rel="noopener noreferrer">
<img src="https://user-images.githubusercontent.com/522079/43096167-3a1b1118-8e86-11e8-9fb2-7b4e3b1368bc.png" width="140" alt="Directus Logo"/>
</a>
</p>
<h1>
<img src="https://user-images.githubusercontent.com/522079/43096167-3a1b1118-8e86-11e8-9fb2-7b4e3b1368bc.png" width="40" alt="Directus Logo"/>&nbsp;&nbsp;Directus API</h1>

<p>&nbsp;</p>
> Looking for the full Directus suite? Checkout [the `directus/directus` repo](https://github.com/directus/directus)!

<h1 align="center">
The All-New Directus 7<br>Future-Proof Headless CMS
</h1>
## Description

<h3 align="center">
<a href="https://directus.io">Website</a> •
<a href="https://docs.directus.io">Docs</a> •
<a href="https://docs.directus.io/api/reference.html">API Reference</a> •
<a href="https://docs.directus.io/guides/user-guide.html">User Guide</a> •
<a href="https://directus.app">Demo</a> •
<a href="https://docs.directus.io/getting-started/supporting-directus.html">Contribute</a> •
<a href="https://twitter.com/directus">Twitter</a>
</h3>
The Directus API is a PHP powered REST / GraphQL API that acts as a layer on top of a relational database.

<p>&nbsp;</p>
## Installation / Usage

> _The Directus 7 App has been rebuilt from the ground-up in Vue.js and decoupled from our new "versionless" API. Both can easily be customized and extended to suit your project's needs._
**NOTE**: Unless you're contributing to the project, you shouldn't build the API from source. Use [`directus/directus`](/directus/directus) instead.

<p>&nbsp;</p>
1. Clone the repo
2. Install the depencencies using `composer`: `composer install`
3. Run the application using any local server, like MAMP, DDEV, Docker, or any other (preferably) Apache installation.

## 🐰 Introduction
## Core Team

Directus is an open-source suite of software that provides an instant API wrapper for SQL databases and an intuitive Admin App for non-technical users to manage that content. It's like a safe, friendly, and super-powered "database client" (eg: _PHP-my-Admin_ or _Sequel Pro_). Created in 2004, our premium platform powers hundreds-of-thousands of data-driven applications around the world. With our JSON API, webhooks, and complete control over where and how your content is used — what will you build with Directus?
* [Ben Haynes](https://github.com/benhaynes) _(Project Lead)_
* [Rijk van Zanten](https://github.com/rijkvanzanten) _(Tech Lead)_

* **[Directus API](https://github.com/directus/api)** — Wraps any new or existing SQL database with RESTful JSON endpoints for connecting content anywhere: websites, native apps, wearables, IoT devices, kiosks, or anything else!
* **[Directus Admin App](https://github.com/directus/app)** — A friendly admin interface built with Vue.js that works in conjunction with our API to allow non-technical users to manage database content and digital assets.
* **[Directus Suite](https://github.com/directus/directus)** A package that combines our API, Admin App, and all dependencies for quick and easy installation on most servers.
[Advisors, Sponsors, Partners, and Key Contributors](https://directus.io/organization.html#the-team)

<p>&nbsp;</p>
## License

## ✨ Key Concepts

### Database-First

Directus follows a database-first approach, storing all of your data _unaltered_ in pure SQL databases with that can be completely customized.

#### Access and Optimization

Directus mirrors _your_ actual database so it will automatically stay in sync with any changes made directly to the database! With the full power of SQL unlocked, you can:

1. Architect your actual database with meaningful table and column names
2. Infinitely optimize with indexing, datatypes, lengths, defaults, keys, encoding, etc
3. Update your database schema at any point and Directus will instantly reflect changes
4. Create, update, and delete content directly from the database

#### Direct Access

This database-first approach means that you have the option to completely bypass Directus if needed. Connecting your application _directly_ to the database means Directus is completely bypassed, removing even the slightest possiblility of a bottleneck, and giving you the unbridled power of complex SQL queries.

#### Portability and Transparency

Directus is _not_ a black-box system. There is nothing proprietary or opinionated about how Directus stores your content so you're never locked-in or locked out. Import existing SQL to get started quickly, and rest assured that you can also export your unaltered content as vanilla SQL at any point. You can also self-host the entire suite on your own servers if needed or use our hosted Cloud service.

#### Complex Relationships

Whether you need many-to-one, one-to-many, many-to-many, or something completely different... Directus has you covered. You can interrelate database fields, then fetch deeply nested data using our robust dot-notation parameters.

### Simple, Modular and Extensible

We've intentionally kept our codebase as simple and lightweight as possible. Every aspect of Directus has been modularized, with many options for extending, overriding, or even bypassing the core system. Choose your auth providers, storage adapters, content interfaces, data presentation, and more. We also have webhooks, event hooks, API response filters, custom endpoints, CSS/JS override files, and much more.

Furthermore, because the codebase has been internally decoupled, Directus supports full multitenancy. You can use a single Directus App to manage multiple Directus API instances, and each API instance can manage multiple databases (projects or environments).

### Internationalization and Accessibility

Directus allows you to manage multilingual content in as many languages as your project needs. And no matter what language(s) your organization requires, our Admin App supports a growing number of locales. We've also paid close attention to our Admin App's interface to ensure it is as clear and accessible as possible for all users.

<p>&nbsp;</p>

## 📖 Documentation

* [What is Directus?](https://docs.directus.io/getting-started/introduction.html#what-is-directus)
* [Installing the Directus Suite](https://docs.directus.io/getting-started/installation.html)
* [Extending Directus](https://docs.directus.io/extensions/)
* Directus App
* [App Docs](https://docs.directus.io/advanced/app/standalone.html)
* [User Guide](https://docs.directus.io/guides/user-guide.html)
* [Install the App](https://docs.directus.io/advanced/app/standalone.html#installation)
* Directus API
* [API Docs](https://docs.directus.io/advanced/api/standalone.html)
* [API Reference](https://docs.directus.io/api/reference.html)
* [Install the API](https://docs.directus.io/advanced/api/standalone.html#installation)
* Tutorials
* [Tutorials](https://medium.com/directus)
* [Videos](https://www.youtube.com/playlist?list=PLD--x9rY3ZL31stRPkA4FdGC4idIM-8-d)

<p>&nbsp;</p>

## 🤲 Help & Resources

### Technical Support

* **Community Support** — For help with open-source instances please post questions with the `directus` tag on [Stack Overflow](https://stackoverflow.com/questions/tagged/directus) or chat with members of our online community.
* **Premium Support** — Directus Cloud customers, Patreon Sponsors, and those paying for hourly support all have access to our Live support over our [Live Chat](https://directus.io) or [Email](mailto:support@directus.io).

### Community

* **[Slack](https://directus.chat)** — Come join over a thousand members discussing the future of Directus. Our helpful members are also quick to offer advice for simple questions you may have while getting started.
* **[Twitter](https://twitter.com/directus)** — Follow us on Twitter to be the first to hear about product updates, see sneak peeks of new features, and vote on polls regarding the future of our platform.

### GitHub Tickets

* **Reporting Bugs** — If you believe you've found a bug in the Directus Core codebase, please submit new tickets to either the [App](https://github.com/directus/app/issues/new?template=Bug_report.md) or the [API](https://github.com/directus/api/issues/new?template=Bug_report.md). **For all security related issues, please chat with us directly through [directus.io](https://directus.io/).**
* **Requesting Features** — Feature requests are managed as GitHub issues within the appropriate Directus repository. Before making a new submission, first [browse existing feature requests](https://github.com/directus/app/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement) using the `enhancement` label. If you find a similar request, simply vote for it using the :+1: or :-1: reactions and add any additional context in the comments. If _not_, [add a new feature request](https://github.com/directus/app/issues/new?template=Feature_request.md) by completing the provided template.

### Online Demos

We have two online demos available so you can easily check out Directus in action. These demos are public and is therefore susceptible to trolls who think it's funny to write offensive things or change the master user password. The entire database is reset each hour to mitigate this. The login credentials for both demos: `admin@example.com` and `password`

* **[Stable](https://directus.app)** — This demo showcases the [latest release](https://github.com/directus/directus/releases/latest) of the Directus suite.
* **[Nightly](https://nightly.directus.app)** — This demo uses the [latest commits](https://github.com/directus/directus/commits/master) from the `master` branch.

<p>&nbsp;</p>

## ❤️ Supporting Directus

Directus is a GPLv3-licensed open source project with development made possible by support from our core team, contributors, and sponsors. It's not easy building premium open-source software; if you would like to help ensure Directus stays free, please consider becoming a sponsor.

* [Become a backer or sponsor through Patreon](https://www.patreon.com/directus)
* [One-time donation through PayPal](https://www.paypal.me/supportdirectus)
* [Other ways to help](https://docs.directus.io/getting-started/supporting-directus.html)


### Contributing

We love pull-requests! To work on Directus you'll need to install it locally from source by following the instructions below. Submit all pull-requests to the `develop` branch of our `api` and `app` repositories.

* [Setup API Development Environment](https://docs.directus.io/advanced/source.html#api-source)
* [Setup App Development Environment](https://docs.directus.io/advanced/source.html#application-source)

If you want to dive right into the code and skip the manual setup of your development environment you can also spin up fully functional browser based development environments with a single click:

* [Start API Gitpod Workspace](https://gitpod.io/#https://github.com/directus/api)
* [Start APP Gitpod Workspace](https://gitpod.io/#https://github.com/directus/app)

### Sponsors

[RANGER Studio](http://rangerstudio.com), Bas Jansen

### Core Team

<table>
<tr>
<td>
<a href="https://github.com/benhaynes"><img width="160px" src="https://user-images.githubusercontent.com/522079/42234532-dfa61084-7ec2-11e8-96df-23aa48c6d450.jpg"><br>
Ben Haynes</a><br>
<i>Project Lead</i>
</td>
<td>
<a href="https://github.com/rijkvanzanten"><img width="160px" src="https://github.com/rijkvanzanten.png"><br>
Rijk van Zanten</a><br>
<i>App Lead</i>
</td>
</tr>
</table>

**[Advisors, Sponsors, Partners, and Key Contributors](https://directus.io/organization.html#the-team)**

<p>&nbsp;</p>

----

<p align="center">
Directus is released under the <a href="http://www.gnu.org/copyleft/gpl.html">GPLv3</a> license. <a href="http://rangerstudio.com">RANGER Studio LLC</a> owns all Directus trademarks and logos on behalf of our project's community. Copyright © 2006-2018, <a href="http://rangerstudio.com">RANGER Studio LLC</a>.
</p>
Directus is released under the [GPLv3](http://www.gnu.org/copyleft/gpl.html) license. [RANGER Studio LLC](https://rangerstudio.com) owns all Directus trademarks and logos on behalf of our project's community. Copyright © 2006-2019, [RANGER Studio LLC](https://rangerstudio.com).
170 changes: 170 additions & 0 deletions config/_example.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
<?php

// Directus Project Config Example

// Directus config files control everything that the API needs to know in order to run a project.
// This includes database credentials, where to save files, and what social providers to allow

return [
'database' => [
'type' => 'mysql', // Only mysql is supported
'host' => 'localhost',
'port' => 3306,
'name' => 'directus',
'username' => 'root',
'password' => 'root',
'engine' => 'InnoDB',
'charset' => 'utf8mb4',
// 'socket' => '', // Path to socket. Remove the `host` key above when using sockets
// 'driver_options' => [ // Other MYSQL_PDO options. Can be used to connect to the database
// // over an encrypted connection. For more information, see
// // https://www.php.net/manual/en/ref.pdo-mysql.php#pdo-mysql.constants
// PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs',
// ]
],

'cors' => [
'enabled' => true, // Enable or disable all CORS headers
'origin' => ['*'], // Access-Control-Allow-Origin
'methods' => [ // Access-Control-Allow-Methods
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'HEAD',
],
'headers' => [], // Access-Control-Allow-Headers
'exposed_headers' => [], // Access-Control-Expose-Headers
'max_age' => null, // Access-Control-Allow-Max-Age
'credentials' => false, // Access-Control-Allow-Credentials
],

'rate_limit' => [
'enabled' => false, // Enable or disable all rate limiting
'limit' => 100, // Number of requests allowed...
'interval' => 60, // ...during this interval (in seconds)
'adapter' => 'redis', // Where to save the rate limit tmp data
'host' => '127.0.0.1',
'port' => 6379,
'timeout' => 10 // Timeout from API to rate limit storage adapter
],

'storage' => [
'adapter' => 'local', // What storage adapter to use for files
// Defaults to the local filesystem. Other natively supported
// options include: Amazon S3, Aliyun OSS
// You'll need to require the correct flysystem adapters through Composer
// See https://docs.directus.io/extensions/storage-adapters.html#using-aws-s3

'root' => 'public/uploads/project-name/originals', // Where files are stored on disk
'thumb_root' => 'public/uploads/project-name/generated', // Where thumbnails are stored on disk
'root_url' => '/uploads/project-name/originals', // Where files are accessed over the web

'proxy_downloads' => false, // Use an internal proxy for downloading all files

// S3
////////////////////////////////////////
// 'key' => 's3-key',
// 'secret' => 's3-secret',
// 'region' => 's3-region',
// 'version' => 's3-version',
// 'bucket' => 's3-bucket',
// 'options' => [
// 'ACL' => 'public-read',
// 'Cache-Control' => 'max-age=604800'
// ],
// 'endpoint' => 's3-endpoint',

// Aliyun OSS
////////////////////////////////////////
// 'OSS_ACCESS_ID' => 'aliyun-oss-id',
// 'OSS_ACCESS_KEY' => 'aliyun-oss-key',
// 'OSS_ENDPOINT' => 'aliyun-oss-endpoint',
// 'OSS_BUCKET' => 'aliyun-oss-bucket',
],

'mail' => [
'default' => [
'transport' => 'smtp', // How to send emails. Supports `smtp` and `sendmail`
'from' => 'no-reply@example.com', // The sender of the email

// SMTP
////////////////////////////////////////
'host' => 'smtp.example.com',
'port' => 25,
'username' => 'smtp-user',
'password' => 'd1r3ctu5',
'encryption' => 'tls'
],
],

'cache' => [
'enabled' => false, // Cache all API responses
'response_ttl' => 3600, // Keep the cache for n seconds
'pool' => [
'adapter' => 'apc', // What adapter to use to store the cache in
// Supports: apc, apcu, filesystem, memcached,
// memcache, redis

// Filesystem
////////////////////////////////////////
// 'path' => '../cache/',

// memcached, memcache, redis
////////////////////////////////////////
// 'host' => 'localhost',
// 'port' => 11211,
],
],

'auth' => [
'secret_key' => '1234', // Used in the oAuth flow
'public_key' => '9876',
'social_providers' => [
// 'okta' => [
// 'client_id' => '',
// 'client_secret' => '',
// 'base_url' => 'https://dev-000000.oktapreview.com/oauth2/default'
// ],
// 'github' => [
// 'client_id' => '',
// 'client_secret' => ''
// ],
// 'facebook' => [
// 'client_id' => '',
// 'client_secret' => '',
// 'graph_api_version' => 'v2.8',
// ],
// 'google' => [
// 'client_id' => '',
// 'client_secret' => '',
// 'hosted_domain' => '*',
// 'use_oidc_mode' => true,
// ],
// 'twitter' => [
// 'identifier' => '',
// 'secret' => ''
// ]
]
],

'hooks' => [ // https://docs.directus.io/extensions/hooks.html#creating-hooks
'actions' => [],
'filters' => [],
],

'tableBlacklist' => [], // What tables to globally ignore within Directus

'env' => 'production', // production, development, or staging
// Production silences stack traces and error details in API output

'logger' => [
'path' => '../logs', // Where to save warning and error logs for the API
],

'feedback' => [
'token' => '123', // Not currently used
'login' => true // Not currently used
],
];
Loading