Skip to content
Snippets Groups Projects
README.md 5.36 KiB
Newer Older
Joey Kimsey's avatar
Joey Kimsey committed
# The Tempus Project
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
_Rapid Prototyping Framework built on PHP utilizing the MVC pattern with a Bootstrap front-end_
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
__Developer(s):__

Joey Kimsey's avatar
Joey Kimsey committed
- __Joey Kimsey__ - _Lead Developer_
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
The aim of this project is to provide a simple and stable platform from which to easily add functionality. The goal being the ability to quickly build and test new projects with a lightweight ecosystem to help.
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
**Notice: This code is in _still_ not production ready. This framework is provided as is, use at your own risk.**\
Joey Kimsey's avatar
Joey Kimsey committed
I am working very hard to ensure the system is safe and reliable enough for me to endorse its widespread use. Unfortunately, it still needs a lot of QA and improvements.
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
## Table of contents

Joey Kimsey's avatar
Joey Kimsey committed
[[_TOC_]]
Joey Kimsey's avatar
Joey Kimsey committed

## Find Us

Joey Kimsey's avatar
Joey Kimsey committed
* [DockerHub](https://hub.docker.com/repositories/thetempusproject)
Joey Kimsey's avatar
Joey Kimsey committed
* [Packagist](https://packagist.org/packages/thetempusproject/)
Joey Kimsey's avatar
Joey Kimsey committed
* [GitLab](https://git.thetempusproject.com/the-tempus-project/thetempusproject)
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
## Summary

Joey Kimsey's avatar
Joey Kimsey committed
The Tempus Project is a PHP application utilizing the MVC pattern to serve up simple pages and APIs with minimal effort. It requires a MySQL database to function and is designed to run equally well with nginx or apache powering the webserver. Most of the core functionality is developed in house and provided through dependencies. At this time, the frontend is driven on bootstrap 3 and FontAwesome for simplicity.
Joey Kimsey's avatar
Joey Kimsey committed
## Features
Administrator's avatar
Administrator committed

- A Plugin system that allows plug-and-play functionality
- A User management system
    - groups
    - permissions
    - preferences
    - registration and recovery
    (All Controlled dynamically via our plugin interface)
- Compatibility with both Apache and NGINX
- Built with Bootstrap with a focus on mobile compatibility
- Incredibly easy to set-up, deploy, and develop
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
## Installation
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
The preferred method for installation is [Composer](#composer) but special attention has been given to installation and usage [without Composer](#composer).
Administrator's avatar
Administrator committed

### Composer
Administrator's avatar
Administrator committed

The simplest method to start a new project is to use composer to create a new project and automatically clone all the necessary files:
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
#### via create-project

```
composer create-project thetempusproject/thetempusproject test-app
```
Administrator's avatar
Administrator committed

Joey Kimsey's avatar
Joey Kimsey committed
#### via clone & install

Joey Kimsey's avatar
Joey Kimsey committed
1. Clone the directory to wherever you want to install the framework.
Joey Kimsey's avatar
Joey Kimsey committed
`git clone https://git.thetempusproject.com/the-tempus-project/thetempusproject.git <test-app>`
1. Open your terminal to the directory you previously cloned the repository.
`cd <test-app>`
1. Install using composer:
Joey Kimsey's avatar
Joey Kimsey committed
`php composer.phar install`
Joey Kimsey's avatar
Joey Kimsey committed
1. Clone the directory to wherever you want to install the framework.
`git clone https://git.thetempusproject.com/the-tempus-project/thetempusproject.git <test-app>`
1. Open your terminal to the directory you previously cloned the repository.
`cd <test-app>/`
1. Clone the dependency directories to the vendor/ folder.
```
Joey Kimsey's avatar
Joey Kimsey committed
cd vendor/
Joey Kimsey's avatar
Joey Kimsey committed
git clone https://git.thetempusproject.com/the-tempus-project/bedrock.git bedrock
git clone https://git.thetempusproject.com/the-tempus-project/canary.git canary
git clone https://git.thetempusproject.com/the-tempus-project/hermes.git hermes
git clone https://git.thetempusproject.com/the-tempus-project/houdini.git houdini
```
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
__Note:__ The autoloader should automatically detect and use the dependencies, but they need to be sorted into the folders ans shown above.
Joey Kimsey's avatar
Joey Kimsey committed


Joey Kimsey's avatar
Joey Kimsey committed
## Docker
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
To enable quick deployment and collaboration The Tempus Project is distributed with the files to build your own docker images or stack with apache or nginx The included `docker-compose.yml` will load up an entire stack including apache and nginx, as well as a MySQL server with phpmyadmin.
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
You will need docker installed on your system then you can either download the latest images from DockerHud:
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
```
docker pull thetempusproject/ttp-apache
docker pull thetempusproject/ttp-nginx
```
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
Or you can build your own images from this repository. More information can be found in the included README files:
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
* [Apache Image](docker/ttp-apache/README.md)
* [Nginx Image](docker/ttp-nginx/README.md)
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
### Docker-Compose
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
The Docker stack included here will build new versions of the nginx and apache webserver and launch them in individual containers. It will also create 2 more containers; one for php, and one for phpmyadmin.
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
```
docker-compose -f docker-compose.yml up --build -d  --no-cache
```
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
__Note:__ If you cloned the repository from git, you will need to copy the `docker/.env.example` to `.env` in the root directory and update the contents before proceeding with docker-compose.
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
## Contributing
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
TheTempusProject is an open source project and welcomes community contributions. Please refer to the [Contributing file](CONTRIBUTING.md) for more details.
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
## License
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
See the [LICENSE](LICENSE) file for licensing information as it pertains to files in this repository.
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
## Known Issues

- [ ] The blog plugin should add a welcome post during the installResources step of the installer. It doesn't work right now.

Joey Kimsey's avatar
Joey Kimsey committed
## Currently being developed
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
- [ ] Adding documentation
- [ ] Unit testing
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
## Future updates
Joey Kimsey's avatar
Joey Kimsey committed

Joey Kimsey's avatar
Joey Kimsey committed
- [ ] Expansion of PDO to allow different database types
- [ ] Update installer to account for database deltas, allowing easy updating.
- [ ] Implement uniformity in terms of error reporting, exceptions, logging.
Joey Kimsey's avatar
Joey Kimsey committed
- [ ] I want to make an api that allows you to download and install new plugins from a centralized repository
- [ ] i want plugin instalation to be compatible with composer for easier management of added plugins.