This repository is archived and no longer actively maintained.
The project remains available here for reference, but there will be no new features, bug fixes, or support.
If you are looking for an active alternative, consider:
- Wekan for an open-source Trello-style Kanban board
- Kanboard for a lightweight self-hosted project management tool
- Taiga for agile project tracking with backlog and Kanban support
- Restyaboard for a collaborative board-based workflow
- Kanban task board with realtime updates
- Timeline view of tasks and projects
- BPMN diagrams
- Business model canvas sheet for project
- Projects grouped by organization
- Project weather like status
- Meeting reports
- Permissions per organization & per project
Demo server: https://latelier-demo.services2.jbl2024.com
Warning: do not store sensitive data, use at your own risk. Data is reset periodically.
Available credentials:
- username: user1@localhost / password: user1
Since v2.9.0, Docker images are available on docker hub: https://hub.docker.com/r/jbl2024/latelier .
A docker-compose.yml is also provided.
This application is built with Meteor framework.
See https://www.meteor.com/install for installation instructions.
The following external dependencies are required:
| Component | Usage | Reference |
|---|---|---|
| GraphicsMagick | Generate thumbnails | http://www.graphicsmagick.org/ |
| Pandoc | Export content to libreoffice & word formats | https://pandoc.org/ |
Copy settings-development.json.sample.json to settings-development.json and update values matching your configuration
Settings:
| Key | Type | Default value | Description |
|---|---|---|---|
| generateFixtures | boolean | false | If true, users fixtures are generated at startup |
| disableAccountCreation | boolean | false | If true account creation is forbidden |
| attachmentsPath | string | /tmp/ | Attachment storage path on fs |
| avatarsPath | string | attachmentsPath | Avatar storage path on fs |
| object | Email settings | ||
| roles.admin | [string] | [] | Users matching emails will have the admin role |
| public.seo.titlePrefix | string | l'atelier | window.title prefix |
| public.sso | object | {} | See below |
| public.emailVerificationNeeded | boolean | false | If false, no verification email is sent |
| public.disableAttachments | boolean | false | If true, attachments are disabled |
| public.tracking | object | {} | See below |
| public.tracking.matomo | object | {} | See https://github.com/AmazingDreams/vue-matomo#usage |
| public.tracking.matomo.enabled | boolean | false | If true, page and search keyword tracking are enabled |
| uploadTransport | string | ddp | http or ddp |
| notificationsPerUser | number | 50 | max number of notifications stored per user |
| users | object | {} | See below |
| digestsRetention | number | 60 | Number of days to keep in digest |
| storage | object | {} | Storage. If empty, fs is used |
| auth | object | {} | See below |
| coedition | object | {} | See below |
email:
| Key | Type | Default value | Description |
|---|---|---|---|
| from | string | noreply@localhost | From email when sending mail |
| prefix | string | Subject prefix |
users:
| Key | Type | Default value | Description |
|---|---|---|---|
| search | string ("admin", "all") | all | Who can search existing users |
| invite | string ("admin", "all") | all | Who can invite people |
sso:
| Key | Type | Default value | Description |
|---|---|---|---|
| enabled | boolean | false | If true, sso is enabled |
| string | null | email header to match user | |
| logoutUrl | string | null | Logout url |
storage:
| Key | Type | Default value | Description |
|---|---|---|---|
| type | string ("s3") | Storage type | |
| migrateFromFS | boolean | false | If true, files are moved from FS to storage system at startup (make sure you backup your data before!) |
| s3 | object | {} | s3 options |
s3
| Key | Type | Default value | Description |
|---|---|---|---|
| endpoint | string | Storage url (optional) | |
| key | string | key | |
| secret | string | secret | |
| region | string | region | |
| bucket | string | bucket |
auth:
| Key | Type | Default value | Description |
|---|---|---|---|
| oauth2 | object | {} | See below |
oauth2:
| Key | Type | Default value | Description |
|---|---|---|---|
| enabled | boolean | false | If true, oauth2 is enabled |
| title | string | OAuth2 | Button title |
| idMap | string | id map | |
| usernameMap | string | preferred_username | |
| fullnameMap | string | given_name | |
| emailMap | string | ||
| clientId | string | ||
| secret | string | " | |
| serverUrl | string | /auth | |
| authEndpoint | string | /realms//protocol/openid-connect/auth | |
| userInfoEndpoint | string | /realms//protocol/openid-connect/userinfo | |
| tokenEndpoint | string | /realms//protocol/openid-connect/token | |
| logoutUrl | string | /realms/l/protocol/openid-connect/logout | |
| logoutRedirectParameter | string | redirect_uri | |
| idTokenWhitelistFields | string | [] |
Note: tested only with keycloak.
coedition:
| Key | Type | Default value | Description |
|---|---|---|---|
| steps | integer | 500 | Number of steps to keep for coedit collab feature |
| daysToKeep | integer | 3 | previous edition steps are removed after daysToKeep |
Example:
{
"generateFixtures": false,
"disableAccountCreation": false,
"attachmentsPath": "/tmp/attachments/",
"notificationsPerUser": 50,
"users": {
"search": "admin",
"invite": "admin"
},
"email": {
"from": "noreply@localhost"
},
"roles": {
"admin": ["foo@bar.com"]
},
"public": {
"emailVerificationNeeded": false,
"seo": {
"titlePrefix": "l'atelier"
},
"sso": {
"enabled": true,
"email": "header-email"
},
"uploadTransport": "ddp"
}
}
If generateFixtures parameter is set to true, 50 users are created at startup (if user count is <= 2).
Default password for generated users is password.
meteor npm install
npm start
A Dockerfile and a docker-compose are provided to start a development environment.
$ docker-compose --file docker-compose.dev.yml up
will start in dev mode (autorestart, no production build):
- the app container with node & meteor
- mongodb (latest)
- mongoexpress (http://localhost:8081)
- maildev (http://localhost:1080)
When all containers are running, open another terminal to start meteor application:
$ docker-compose --file docker-compose.dev.yml exec app npm run start-dev
After a few minutes, the app will be available at http://localhost
Note: do not forget to create a settings-development.json file.
Apache License 2.0









