# About TYPEMILL

TYPEMILL is a lightweight flat file cms for micro-publishers. You can use it for documentations, manuals, special interest websites, and any other information-driven web-project. You can also enhance Typemill with plugins and generate professional e-books in pdf-format with it. The website http://typemill.net runs with Typemill.

![TYPEMILL Screenshot](https://typemill.net/media/tm-demo.gif)

# Typemill V2

This is the repository of Typemill V1. Typemill is compatible with PHP 7.4 and PHP 8.0. 

We are working on a version 2 that will run with PHP 8.0 and higher. Alpha-release is planned for July 2023. 

Join the [newsletter](https://typemill.net/news) to get updates and check the branch [tm2-dev](https://github.com/typemill/typemill/tree/tm2-dev) if you want to help and contribute.

## Features

* Website with markdown-files.
* Visual markdown editor (VUE.js) and raw markdown mode.
* Flexible drag & drop navigation.
* Markdown extras with table of contents (TOC), tables, footnotes, abbreviations, definition lists, notices, figures with captions
* Media library with images and files.
* System configurations.
* User management.
* Flexible form management with YAML-files.
* Flexible access rights.
* [Themes](https://themes.typemill.net) (with TWIG).
* [Plugins](https://plugins.typemill.net) (with symfony event dispatcher).

## Requirements

* PHP 7.4 or PHP 8.0 (Typemill V1 does NOT run with PHP 8.1)
* Apache server
* mod_rewrite and htaccess

If you run a linux system, then please double check that mod_rewrite and htaccess are active!!!

## Installation

### ZIP-Version

Download TYPEMILL from the [TYPEMILL website](http://typemill.net), unzip the files and you are done.

The zipped version has a minimal size without developer files.

### GitHub + Composer

If you are a developer, you can clone this repository. To do so, open your command line, go to your project folder (e.g. `htdocs`) and type:

```
git clone git://github.com/typemill/typemill.git
```

The GitHub-version has no vendor-folder, so you have to update and include all libraries and dependencies with composer. To do so, open your command line, go to your TYPEMILL folder and type:

```
composer update
```

If you did not use composer before, please go to the [composer website](http://getcomposer.org) and start to learn.

### Run Live

To run TYPEMILL on a **live** system, simply upload the files to your server.

### Make Folders Writable.

Make sure that the following folders and all their files are writable (permission `774` recursively):

* `cache`
* `content`
* `media`
* `settings`

You can use your ftp-software for that.

### Setup

If you visit your website first, then you will be redirected to the `/setup` page. Please create an initial user and configure your system in the author panel. 

### Login

You can find your login screen under `/tm/login` or simply go to `/setup` and you will be redirected to the login-page, if the setup has been finished. 

## Docker

> :warning: This image does not provide TLS support. It's perfect either for local use or behind your own proxy, you're advised.

Clone and edit the `config.example.php` you find in this repository and move it as `config.php`

```
git clone git://github.com/trendschau/typemill.git
cd typemill
```

Build your image locally

```
docker build -t typemill:local .
```

Run the docker image without persistence on port 8080

```
docker run -d --name typemill -p 8080:80 typemill:local
```

Run typemill with persistence

```
docker run -d \
    --name=typemill \
    -p 8080:80 \
    -v $(pwd)/typemill_data/settings/:/var/www/html/settings/ \
    -v $(pwd)/typemill_data/media/:/var/www/html/media/ \
    -v $(pwd)/typemill_data/cache/:/var/www/html/cache/ \
    -v $(pwd)/typemill_data/plugins/:/var/www/html/plugins/ \
    -v $(pwd)/typemill_data/content/:/var/www/html/content/ \
    -v $(pwd)/typemill_data/themes/:/var/www/html/themes/ \
    typemill:local
```

A simple `docker-compose.yml` file could look like this

```yml
version: "2.0"

services:
  typemill:
    image: typemill:local
    volumes:
      - /volume2/docker/typemill-test/settings/:/var/www/html/settings/
      - /volume2/docker/typemill-test/media/:/var/www/html/media/
      - /volume2/docker/typemill-test/cache/:/var/www/html/cache/
      - /volume2/docker/typemill-test/plugins/:/var/www/html/plugins/
      - /volume2/docker/typemill-test/content/:/var/www/html/content/
      - /volume2/docker/typemill-test/themes/:/var/www/html/themes/
    ports:
      - 8080:80
```

### Volumes

- `settings` : persists users profiles, site configuration, etc. (empty by default)
- `media` : persists media files (empty by default)
- `cache` : persists cache files for performance purpose (optional and empty by default)
- `plugins` : persists installed plugins (optional and empty by default)
- `content` : persists content published (will be initialized with default examples if the binded volume is empty)
- `themes` : persists installed themes (will be initialized with default examples if the binded volume is empty)


## Kubernetes with helm chart

If you are interested in Kubernetes, then you can cooperate with OLED1 and use his [helm-chart for Typemill](https://github.com/OLED1/oleds-helm-charts/tree/main/helm-development/typemill).

For questions, please open an issue in his [repository](https://github.com/OLED1/oleds-helm-charts/tree/main/helm-development/typemill).

## Documentation

You can read the full documentation for writers, for theme developers, and for plugin developers on the [TYPEMILL website](http://typemill.net).

## Licence

TYPEMILL is published under MIT licence. Please check the licence of the included libraries, too.

## Contributors & Supporters

A lot of [contributors](https://github.com/typemill/typemill/graphs/contributors) are helping Typemill with translations, translation-logic, docker-support, kybernetes, documentation, various plugins, various themes, and a lot of fixes.

## IMPORTANT: How to Contribute

Contributions are highly welcome. Please follow these rules:

* If you plan bigger changes, then please create an issue first so we can discuss it.
* Fork the `develop` branch from typemill. Never use the master branch, because it is protected and only contains tested releases.
* Do your changes.
* After that pull the recent develop branch again to get the latest changes. 
* Then make a pull request for the `develop` branch.

You can check the [roadmap for Typemill](https://github.com/typemill/typemill/issues/35) and scroll through the issues. I will mark issues in future that are easy to start with or where help is highly appreciated.

Here are some contribution-ideas for non-coder:

* Share Typemill with social media.
* Write about Typemill.
* Improve the documentation.
* Find bugs and errors (open a new issue on github for it).
* Describe some missing features and explain, why they are important for other users.

Some ideas for devs:

* Fix a bug.
* Create or port a theme, especially for documentations, knowlegde bases or web-books.
* Create a fancy plugin.
* An auto-update functionality for the core system, for plugins and for themes is highly welcome.
* Improve the accessibility of html and css.
* Write autotests with Cypress.

For hints, questions, problems and support, please open up a new issue on GitHub.

## Donate and support

Donations are welcome: https://www.paypal.me/typemill

If you need professional help, please head over to [Trendschau Digital](https://trendschau.net).

## Follow

Twitter: https://twitter.com/typemill