1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# W-CMS
**W** was first a tool, based on my way of thinking, as a protesis, to write on ideas and create a self explorating text point n' click game.
It's a mix between a drive, wikipedia and a personnal blog. You can create articles very quickly and share them with other people or keep them for you and restricted people.
There is no boundaries beetween taking notes and creating a website. When you create a article, you create a space in internet, a place, that can be public or private. Then, you decide to link it or not with the others places you've created before.
There is a lots of possibilites of creations, for people who need to create multi-aspect labyrinth websites, to use a half public/private mindmap, or even interactives fictions.
## Highlights
- The user can never see the whole map of the website : yo can create specific auto-menu for each page if you want.
- Each page, of group of pages can be like a single website, with it's own style. (You can create your mini internet on internet)
- The pages load very quickly as they can be rendered
- Editor interface, the only place where where you can see the master-plan.
[User manual](MANUAL.md)
Overview
--------
You can access your home following the root folder you've instaled **W**. After connecting, you can see your editor interface.

Quickly edit pages as if you where taking notes. You need to connect as editor, then just type `../edit` at the end of the page you want to edit ot use the menu.

Then you can se the result.

There is lot more you can by altering the `BODY`.

[Old webpage of the project (in french)](http://vincent.club1.fr/w/?id=w)
# Technology
- almost pure PHP.
- Use MarkDown to edit pages quickly.
- Easy to manage Json 'flat file' database.
using [James Moss's Flywheel Database](https://github.com/jamesmoss/flywheel), [Michel Fortin's Markdown Extra](https://github.com/michelf/php-markdown) and [Plates](https://github.com/thephpleague/plates) as lightweight template engine.
# Development informations
If you want to contribute to the project.
## Prerequisites
- PHP >=7.2.0
- PHP extensions : curl mbstring
- [Composer](https://getcomposer.org/)
- _Optionally_ [NPM](https://www.npmjs.com/get-npm)
### Debian and derivatives
sudo apt install php php-curl php-mbstring composer nodejs
## Install from sources
1. Clone the git repository.
2. Install PHP dependencies.
make vendor
3. _Optionnally_ install and build JS dependencies to get UI enhancements.
make build
The last two commands can be run at once using only `make`.
There are 3 different build environments that `make` can use:
- **`dev`** _when developing the application._
It installs every dependencies and builds big but easy-to-debug js bundles.
- **`prod`** _when installing from sources a deployed production application._
It installs every dependencies and builds minified js bundles.
- **`dist`** _to create the releases' distribution zip._
It strips all the development dependencies and the error reporting module and the sourcemaps of the js bundles are hidden. It can also be used for a production environment if the error reports are not used.
The build environment can be set either for each `make` command by changing it in the `.env` file or on a per command basis by adding it at the end of the command (e.g. `make build ENV=prod`).
## JS development
While developing the JS sources it is useful to run webpack in watch mode so that the bundles get built at each file change. To do so, use the following command:
make watch
## Publish a new release
The release process uses [release-it](https://github.com/release-it/release-it) and uploads sourcemaps to [Sentry](https://sentry.io/). So to create and publish a new release you will need two access tokens:
- a [GitHub personnal access token](https://github.com/settings/tokens) with `repository` access
- a [Sentry authentification token](https://sentry.io/settings/account/api/auth-tokens/) with `project:read`, `project:releases` and `org:read` access
saved in a `.env` file like so:
```bash
# .env
GITHUB_TOKEN='<github token value>'
SENTRY_AUTH_TOKEN='<sentry token value>'
```
Then, to make the release, run the following command:
make release
To only build the release zip, simply run `make dist`. This will create a zip file in `dist/` of the current version.
To Do
=====
- Locking page system by super editor to prevent editing by the wrong person
|