W is a lightweight CMS tool, meant to help you design a website using a unique approach. It's targeting artists, or experimental projects.
To have a better idea of what W can do, you can check out the User manual, or dicover the ideas behind this specific tool.
If tou want to try it out, you can :
- follow the install instructions to host your own instance of W.
- be hosted for free by club1.fr as an official tester (please contact vincent@club1.fr for more info).
- install from sources, if you want to contribute to the code.
W is a free and open source tool under the AGPLv3 License. The project was initiated in 2018 by Vincent Peugnet.
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, a wiki and a personnal blog. You can create page 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 page, 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.
W try to help you create pages more spontaneously.
- Very lightweight page loading and editor
- Use standards to edit your pages : markdown, HTML, CSS and Javascript
- Media manager
- Multi-users
- Geolocalisation : generate map using page's coordinates (BETA)
- Flat file database
- Great website architecture design freedom
- url based command interface
- 100% functionnal even without javascript
Homepage, showing your pages database.
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.
Edit metadata on the left panel.
Manage your assets using the media manager.
You can even view a graph of links.
W page rendering is document through this diagram.
An API exist but is experimental for now (v0). Find more info in the API documentation
W is a project created and maintained by Vincent Peugnet, an amateur computer science enthousiast who can only code in PHP. It now includes Nicolas Peugnet (his brother) as JS developer, technical advisor and every challenges that are too complicated for Vincent. We can also mention Guilhem Prévost Leygonie as legendary number one user and now as an issue writer too.
- James Moss's Flywheel Database
- Michel Fortin's Markdown Extra
- Plates as template engine.
- Nicolas Peugnet for the technical support
Server requirements
- apache server
- PHP >=7.4.0 and the following extensions:
curl mbstring xml
W don't need any database manager as it use a "flat file" system.
Simply download the latest realease from github, and unzip it in your hosted folder. You can put W at the root of your domain, or in subfolders. Then access the adress in your browser and follow the differents steps.
W will ask you for the path you've installed it, if you installed it at the root, leave this field blank, otherwise, indiquate the subfolders like path/to/wcms
.
If you have a SSH access to your server, you can install W from sources by following thoses three steps.
To update, type git pull
to update Git files from repo, then type make
to build the JS files.
If you want to contribute to the project.
sudo apt install php php-curl php-mbstring php-xml composer nodejs npm
-
Clone the git repository.
-
Install PHP dependencies.
make vendor
-
Optionally install and build JS dependencies to get UI enhancements.
make build
The last two commands can be run at once using only make
.
You can easily run a dev server using the serve
target:
make serve
There is an error reporting debug mode using Whoops. It can be enabled by setting the value of debug
in config.json
to one of editors supported by Whoops.
While developing JS code 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
To run both the php dev server and webpack in watch mode, it is possible to run:
make dev
Multiple tools are used to perform checks on the source code:
-
phpcs to lint PHP code
make lint
-
phpunit to run unit test on PHP code
make test
All checks can be run with a single command
make check [--keep-going]
The release process uses GitHub's CLI so you will need to have it installed (sudo apt install gh
).
It also uploads sourcemaps to Sentry.
So to create and publish a new release you will need two access tokens:
- a GitHub personnal access token with
repository
access - a Sentry authentification token with
project:read
,project:releases
andorg:read
access
saved in a .env
file like so:
# .env
GITHUB_TOKEN='<github token value>'
SENTRY_AUTH_TOKEN='<sentry token value>'
Then, to make the release, run one of the following command:
make release-patch
make release-minor
make release-major
To only build the release zip, simply run make dist
. This will create a zip file in dist/
of the current version.