1. Project Overview & Quickstart (suitenumerique/docs)
File: README.md
La Suite Docs: Collaborative Text Editing
Docs, where your notes can become knowledge through live collaboration.
Docs is an open-source collaborative editor that helps teams write, organize, and share knowledge together - in real time.
What is Docs?
Docs is an open-source alternative to tools like Notion or Google Docs, focused on:
- Real-time collaboration
- Clean, structured documents
- Knowledge organization
- Data ownership & self-hosting
Built for public organizations, companies, and open communities.
Why use Docs?
Writing
- Rich-text & Markdown editing
- Slash commands & block system
- Beautiful formatting
- Offline editing
- Optional AI writing helpers (rewrite, summarize, translate, fix typos)
Collaboration
- Live cursors & presence
- Comments & sharing
- Granular access control
Knowledge management
- Subpages & hierarchy
- Searchable content
Presentations
- Simple structure, based on delimiter (
---) - Full screen option
- PDF exports
- Keyboard navigation
- Start presention from a block
- Presentation link
Export/Import
- Import to
.docxand.md - Export to
.docx,.odt,.pdf
AI features
Docs has optional AI features.
They're model agnostic and gateway agnostic.
You can either run your own or just use your AI provider.
The config only requires an API key and a URL.
V1: You select, AI replaces
This version features a simple select and replace workflow.
Your selection is the context and the instruction for the model.
The AI feedback replaces your selection and is designed is optimized for Docs formatting.
V2: AI toolbar, AI cursor (beta)
This version uses BlockNote AI integration. It features:
- an AI toolbar at selection in which you can prompt, accept, reject and iterate AI feedback
- an AI cursor, which interacts with the document, just as another collaborator in your document
- document context is used on top of the selection
Interoperability
Docs comes with a resource server API and a server to server API which allows for awesome integrations.
A concrete example: [Meet](https://github.com/suitenumerique/meet/)'s transcriptions
If you're running a Meet instance, with simple config (DJANGO_SERVER_TO_SERVER_API_TOKENS) you can push your meeting transcript to Docs and give access to the user who requested it.
Try Docs
Experience Docs instantly - no installation required.
Self-hosting
Docs supports Kubernetes, Docker Compose, and community-provided methods such as Nix and YunoHost.
Get started with self-hosting: Installation guide
[!WARNING]
Some advanced features (for example:Export as PDF) rely on XL packages from Blocknote.
These packages are licensed under GPL and are not MIT-compatibleYou can run Docs without these packages by building with:
bashPUBLISH_AS_MIT=trueThis builds an image of Docs without non-MIT features.
More details can be found in environment variables
Local Development (for contributors)
Run Docs locally for development and testing.
[!WARNING]
This setup is intended for development and testing only.
It uses Minio as an S3-compatible storage backend, but any S3-compatible service can be used.
Prerequisites
- Docker
- Docker Compose
- GNU Make
Verify installation:
docker -v
docker compose versionIf you encounter permission errors, you may need to use
sudo, or add your user to thedockergroup.
Bootstrap the project
The easiest way to start is using GNU Make:
make bootstrap FLUSH_ARGS='--no-input'This builds the app-dev and frontend-dev containers, installs dependencies, runs database migrations, and compiles translations.
It is recommended to run this command after pulling new code.
Start services:
make runDefault credentials (development only):
username: impress
password: impressFrontend development mode
For frontend work, running outside Docker is often more convenient:
make frontend-development-install
make run-frontend-developmentBackend only
Starting all services except the frontend container:
make run-backendTests & Linting
make frontend-test
make frontend-lintBackend tests can be run without docker. This is useful to configure PyCharm or VSCode to do it.
Removing docker for testing requires to overwrite some URL and port values that are different in and out of
Docker. env.d/development/common contains all variables, some of them having to be overwritten by those inenv.d/development/common.test.
Demo content
Create a basic demo site:
make demoMore Make targets
To check all available Make rules:
make helpDjango admin
Create a superuser:
make superuserAdmin UI: http://localhost:8071/admin
Contributing
This project is community-driven and PRs are welcome.
Roadmap
Curious where Docs is headed?
Explore upcoming features, priorities and long-term direction on our public roadmap.
License ๐
This work is released under the MIT License (see LICENSE).
While Docs is a public-driven initiative, our license choice is an invitation for private sector actors to use, sell and contribute to the project.
Credits โค๏ธ
Stack
Docs is built on top of Django Rest Framework, Next.js, ProseMirror, BlockNote.js, HocusPocus, and Yjs. We thank the contributors of all these projects for their awesome work!
We are proud sponsors of BlockNotejs and Yjs.
Gov โค๏ธ open source
Docs is the result of a joint initiative led by the French ๐ซ๐ท (DINUM) Government and German ๐ฉ๐ช government (ZenDiS).
We are always looking for new public partners (we are currently onboarding the Netherlands ๐ณ๐ฑ), feel free to contact us if you are interested in using or contributing to Docs.
File: src/helm/impress/README.md
Impress helm chart
Parameters
General configuration
| Name | Description | Value |
|---|---|---|
image.repository |
Repository to use to pull impress's container image | lasuite/impress-backend |
image.tag |
impress's container tag | latest |
image.pullPolicy |
Container image pull policy | IfNotPresent |
image.credentials.username |
Username for container registry authentication | |
image.credentials.password |
Password for container registry authentication | |
image.credentials.registry |
Registry url for which the credentials are specified | |
image.credentials.name |
Name of the generated secret for imagePullSecrets | |
nameOverride |
Override the chart name | "" |
fullnameOverride |
Override the full application name | "" |
ingress.enabled |
whether to enable the Ingress or not | false |
ingress.className |
IngressClass to use for the Ingress | nil |
ingress.host |
Host for the Ingress | impress.example.com |
ingress.path |
Path to use for the Ingress | / |
ingress.hosts |
Additional host to configure for the Ingress | [] |
ingress.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingress.tls.secretName |
Secret name for TLS config | nil |
ingress.tls.additional[].secretName |
Secret name for additional TLS config | |
ingress.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingress.customBackends |
Add custom backends to ingress | [] |
ingressCollaborationWS.enabled |
whether to enable the Ingress or not | false |
ingressCollaborationWS.className |
IngressClass to use for the Ingress | nil |
ingressCollaborationWS.host |
Host for the Ingress | impress.example.com |
ingressCollaborationWS.path |
Path to use for the Ingress | /collaboration/ws/ |
ingressCollaborationWS.hosts |
Additional host to configure for the Ingress | [] |
ingressCollaborationWS.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressCollaborationWS.tls.secretName |
Secret name for TLS config | nil |
ingressCollaborationWS.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressCollaborationWS.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressCollaborationWS.customBackends |
Add custom backends to ingress | [] |
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/enable-websocket |
true |
|
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/proxy-read-timeout |
86400 |
|
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/proxy-send-timeout |
86400 |
|
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/upstream-hash-by |
$arg_room |
|
ingressRedirects.enabled |
whether to enable the Ingress Redirects or not | false |
ingressRedirects.className |
IngressClass to use for the Ingress Redirects | nil |
ingressRedirects.host |
Host for the Ingress Redirects | impress.example.com |
ingressRedirects.tls.enabled |
Whether to enable TLS for the Ingress Redirects | true |
ingressRedirects.tls.secretName |
Secret name for TLS config | nil |
ingressRedirects.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressRedirects.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressRedirects.rules |
Rules for the Ingress Redirects | [] |
ingressCollaborationApi.enabled |
whether to enable the Ingress or not | false |
ingressCollaborationApi.className |
IngressClass to use for the Ingress | nil |
ingressCollaborationApi.host |
Host for the Ingress | impress.example.com |
ingressCollaborationApi.path |
Path to use for the Ingress | /collaboration/api/ |
ingressCollaborationApi.hosts |
Additional host to configure for the Ingress | [] |
ingressCollaborationApi.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressCollaborationApi.tls.secretName |
Secret name for TLS config | nil |
ingressCollaborationApi.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressCollaborationApi.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressCollaborationApi.customBackends |
Add custom backends to ingress | [] |
ingressCollaborationApi.annotations.nginx.ingress.kubernetes.io/upstream-hash-by |
$arg_room |
|
ingressAdmin.enabled |
whether to enable the Ingress or not | false |
ingressAdmin.className |
IngressClass to use for the Ingress | nil |
ingressAdmin.host |
Host for the Ingress | impress.example.com |
ingressAdmin.path |
Path to use for the Ingress | /admin |
ingressAdmin.hosts |
Additional host to configure for the Ingress | [] |
ingressAdmin.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressAdmin.tls.secretName |
Secret name for TLS config | nil |
ingressAdmin.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressAdmin.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressMedia.enabled |
whether to enable the Ingress or not | false |
ingressMedia.className |
IngressClass to use for the Ingress | nil |
ingressMedia.host |
Host for the Ingress | impress.example.com |
ingressMedia.path |
Path to use for the Ingress | /media/(.*) |
ingressMedia.hosts |
Additional host to configure for the Ingress | [] |
ingressMedia.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressMedia.tls.secretName |
Secret name for TLS config | nil |
ingressMedia.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressMedia.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressMedia.annotations.nginx.ingress.kubernetes.io/auth-url |
https://impress.example.com/api/v1.0/documents/media-auth/ |
|
ingressMedia.annotations.nginx.ingress.kubernetes.io/auth-response-headers |
Authorization, X-Amz-Date, X-Amz-Content-SHA256 |
|
ingressMedia.annotations.nginx.ingress.kubernetes.io/upstream-vhost |
minio.impress.svc.cluster.local:9000 |
|
ingressMedia.annotations.nginx.ingress.kubernetes.io/configuration-snippet |
`add_header Content-Security-Policy "default-src 'none'" always; | |
| ` | ||
serviceMedia.host |
Hostname of the media storage backend (S3/MinIO) used by the media ingress | minio.impress.svc.cluster.local |
serviceMedia.port |
Port of the media storage backend | 9000 |
serviceMedia.annotations |
Annotations to add to the media ExternalName Service | {} |
backend
| Name | Description | Value |
|---|---|---|
backend.command |
Override the backend container command | [] |
backend.args |
Override the backend container args | [] |
backend.replicas |
Amount of backend replicas | 3 |
backend.shareProcessNamespace |
Enable share process namespace between containers | false |
backend.sidecars |
Add sidecars containers to backend deployment | [] |
backend.migrateJobAnnotations |
Annotations for the migrate job | {} |
backend.jobs.ttlSecondsAfterFinished |
Period to wait before remove jobs | 30 |
backend.jobs.backoffLimit |
Numbers of jobs retries | 2 |
backend.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the backend container | false |
backend.securityContext.capabilities.drop |
List of capabilities to drop for the backend container | ["ALL"] |
backend.securityContext.runAsNonRoot |
Whether to run the backend container as a non-root user | true |
backend.securityContext.seccompProfile.type |
Seccomp profile type for the backend container | RuntimeDefault |
backend.envVars |
Configure backend container environment variables | undefined |
backend.envVars.BY_VALUE |
Example environment variable by setting value directly | |
backend.envVars.FROM_CONFIGMAP.configMapKeyRef.name |
Name of a ConfigMap when configuring env vars from a ConfigMap | |
backend.envVars.FROM_CONFIGMAP.configMapKeyRef.key |
Key within a ConfigMap when configuring env vars from a ConfigMap | |
backend.envVars.FROM_SECRET.secretKeyRef.name |
Name of a Secret when configuring env vars from a Secret | |
backend.envVars.FROM_SECRET.secretKeyRef.key |
Key within a Secret when configuring env vars from a Secret | |
backend.django.envVars |
Backend web deployment specific environment variables (not shared with celery worker) | |
backend.podAnnotations |
Annotations to add to the backend Pod | {} |
backend.dpAnnotations |
Annotations to add to the backend Deployment | {} |
backend.service.type |
backend Service type | ClusterIP |
backend.service.port |
backend Service listening port | 80 |
backend.service.targetPort |
backend container listening port | 8000 |
backend.service.annotations |
Annotations to add to the backend Service | {} |
backend.migrate.command |
backend migrate command | ["/bin/sh","-c","attempt=0\nuntil output=$(python manage.py check --database default 2>&1)\ndo\n attempt=$((attempt + 1))\n echo \"Database check failed (attempt $attempt), retrying in 2s:\"\n echo \"$output\"\n sleep 2\ndone\n\necho \"Database is ready\"\n\npython manage.py migrate --no-input\n"] |
backend.migrate.restartPolicy |
backend migrate job restart policy | Never |
backend.createsuperuser.command |
backend migrate command | ["/bin/sh","-c","attempt=0\nuntil output=$(python manage.py check --database default 2>&1)\ndo\n attempt=$((attempt + 1))\n echo \"Database check failed (attempt $attempt), retrying in 2s:\"\n echo \"$output\"\n sleep 2\ndone\n\necho \"Database is ready\"\n\npython manage.py createsuperuser --email $DJANGO_SUPERUSER_EMAIL --password $DJANGO_SUPERUSER_PASSWORD\n"] |
backend.createsuperuser.restartPolicy |
backend migrate job restart policy | Never |
backend.job |
job dedicated to run a random management command, for example after a deployment | |
backend.job.name |
The name to use to describe this job | "" |
backend.job.command |
The management command to execute | [] |
backend.job.restartPolicy |
The restart policy for the job. | Never |
backend.job.annotations |
Annotations to add to the job [default: argocd.argoproj.io/hook: PostSync] | |
backend.cronjobs |
Cronjob name, schedule, command | [] |
backend.probes.liveness.path |
Configure path for backend HTTP liveness probe | /__lbheartbeat__ |
backend.probes.liveness.targetPort |
Configure port for backend HTTP liveness probe | nil |
backend.probes.liveness.initialDelaySeconds |
Configure initial delay for backend liveness probe | 10 |
backend.probes.liveness.timeoutSeconds |
Configure timeout for backend liveness probe | nil |
backend.probes.startup.path |
Configure path for backend HTTP startup probe | |
backend.probes.startup.targetPort |
Configure port for backend HTTP startup probe | |
backend.probes.startup.initialDelaySeconds |
Configure initial delay for backend startup probe | |
backend.probes.startup.timeoutSeconds |
Configure timeout for backend startup probe | |
backend.probes.readiness.path |
Configure path for backend HTTP readiness probe | /__heartbeat__ |
backend.probes.readiness.targetPort |
Configure port for backend HTTP readiness probe | nil |
backend.probes.readiness.initialDelaySeconds |
Configure initial delay for backend readiness probe | 10 |
backend.probes.readiness.timeoutSeconds |
Configure timeout for backend readiness probe | nil |
backend.resources |
Resource requirements for the backend container | {} |
backend.nodeSelector |
Node selector for the backend Pod | {} |
backend.tolerations |
Tolerations for the backend Pod | [] |
backend.affinity |
Affinity for the backend Pod | {} |
backend.persistence |
Additional volumes to create and mount on the backend. Used for debugging purposes | {} |
backend.persistence.volume-name.size |
Size of the additional volume | |
backend.persistence.volume-name.type |
Type of the additional volume, persistentVolumeClaim or emptyDir | |
backend.persistence.volume-name.mountPath |
Path where the volume should be mounted to | |
backend.extraVolumeMounts |
Additional volumes to mount on the backend. | [] |
backend.extraVolumes |
Additional volumes to mount on the backend. | [] |
backend.pdb.enabled |
Enable pdb on backend | true |
backend.serviceAccountName |
Optional service account name to use for backend pods | nil |
backend.themeCustomization.enabled |
Enable theme customization | false |
backend.themeCustomization.file_content |
Content of the theme customization file. Must be a json object. | "" |
backend.themeCustomization.mount_path |
Path where the customization file will be mounted in the backend deployment. | /app/impress/configuration/theme |
backend.celery.replicas |
Amount of celery replicas | 1 |
backend.celery.command |
Override the celery container command | [] |
backend.celery.args |
Override the celery container args | ["celery","-A","impress.celery_app","worker","-l","INFO","-n","impress@%h"] |
backend.celery.resources |
Resource requirements for the celery container | {} |
backend.celery.probes.liveness.exec.command |
Override the celery container liveness probe command | ["/bin/sh","-c","celery -A impress.celery_app inspect ping -d impress@$HOSTNAME"] |
backend.celery.probes.liveness.initialDelaySeconds |
Initial delay for the celery container liveness probe | 60 |
backend.celery.probes.liveness.timeoutSeconds |
Timeout for the celery container liveness probe | 5 |
backend.celery.probes.readiness.exec.command |
Override the celery container readiness probe command | ["/bin/sh","-c","celery -A impress.celery_app inspect ping -d impress@$HOSTNAME"] |
backend.celery.probes.readiness.initialDelaySeconds |
Initial delay for the celery container readiness probe | 15 |
backend.celery.probes.readiness.timeoutSeconds |
Timeout for the celery container readiness probe | 5 |
backend.celery.envVars |
Celery worker specific environment variables (not shared with the backend web deployment) |
frontend
| Name | Description | Value |
|---|---|---|
frontend.image.repository |
Repository to use to pull impress's frontend container image | lasuite/impress-frontend |
frontend.image.tag |
impress's frontend container tag | latest |
frontend.image.pullPolicy |
frontend container image pull policy | IfNotPresent |
frontend.command |
Override the frontend container command | [] |
frontend.args |
Override the frontend container args | [] |
frontend.replicas |
Amount of frontend replicas | 3 |
frontend.shareProcessNamespace |
Enable share process namespace between containers | false |
frontend.sidecars |
Add sidecars containers to frontend deployment | [] |
frontend.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the frontend container | false |
frontend.securityContext.capabilities.drop |
List of capabilities to drop for the frontend container | ["ALL"] |
frontend.securityContext.runAsNonRoot |
Whether to run the frontend container as a non-root user | true |
frontend.securityContext.seccompProfile.type |
Seccomp profile type for the frontend container | RuntimeDefault |
frontend.envVars |
Configure frontend container environment variables | undefined |
frontend.envVars.BY_VALUE |
Example environment variable by setting value directly | |
frontend.envVars.FROM_CONFIGMAP.configMapKeyRef.name |
Name of a ConfigMap when configuring env vars from a ConfigMap | |
frontend.envVars.FROM_CONFIGMAP.configMapKeyRef.key |
Key within a ConfigMap when configuring env vars from a ConfigMap | |
frontend.envVars.FROM_SECRET.secretKeyRef.name |
Name of a Secret when configuring env vars from a Secret | |
frontend.envVars.FROM_SECRET.secretKeyRef.key |
Key within a Secret when configuring env vars from a Secret | |
frontend.podAnnotations |
Annotations to add to the frontend Pod | {} |
frontend.dpAnnotations |
Annotations to add to the frontend Deployment | {} |
frontend.service.type |
frontend Service type | ClusterIP |
frontend.service.port |
frontend Service listening port | 80 |
frontend.service.targetPort |
frontend container listening port | 8080 |
frontend.service.annotations |
Annotations to add to the frontend Service | {} |
frontend.probes |
Configure probe for frontend | {} |
frontend.probes.liveness.path |
Configure path for frontend HTTP liveness probe | |
frontend.probes.liveness.targetPort |
Configure port for frontend HTTP liveness probe | |
frontend.probes.liveness.initialDelaySeconds |
Configure initial delay for frontend liveness probe | |
frontend.probes.liveness.initialDelaySeconds |
Configure timeout for frontend liveness probe | |
frontend.probes.startup.path |
Configure path for frontend HTTP startup probe | |
frontend.probes.startup.targetPort |
Configure port for frontend HTTP startup probe | |
frontend.probes.startup.initialDelaySeconds |
Configure initial delay for frontend startup probe | |
frontend.probes.startup.initialDelaySeconds |
Configure timeout for frontend startup probe | |
frontend.probes.readiness.path |
Configure path for frontend HTTP readiness probe | |
frontend.probes.readiness.targetPort |
Configure port for frontend HTTP readiness probe | |
frontend.probes.readiness.initialDelaySeconds |
Configure initial delay for frontend readiness probe | |
frontend.probes.readiness.initialDelaySeconds |
Configure timeout for frontend readiness probe | |
frontend.resources |
Resource requirements for the frontend container | {} |
frontend.nodeSelector |
Node selector for the frontend Pod | {} |
frontend.tolerations |
Tolerations for the frontend Pod | [] |
frontend.affinity |
Affinity for the frontend Pod | {} |
frontend.persistence |
Additional volumes to create and mount on the frontend. Used for debugging purposes | {} |
frontend.persistence.volume-name.size |
Size of the additional volume | |
frontend.persistence.volume-name.type |
Type of the additional volume, persistentVolumeClaim or emptyDir | |
frontend.persistence.volume-name.mountPath |
Path where the volume should be mounted to | |
frontend.extraVolumeMounts |
Additional volumes to mount on the frontend. | [] |
frontend.extraVolumes |
Additional volumes to mount on the frontend. | [] |
frontend.pdb.enabled |
Enable pdb on frontend | true |
frontend.serviceAccountName |
Optional service account name to use for frontend pods | nil |
posthog
| Name | Description | Value |
|---|---|---|
posthog.ingress.enabled |
Enable or disable the ingress resource creation | false |
posthog.ingress.className |
Kubernetes ingress class name to use (e.g., nginx, traefik) | nil |
posthog.ingress.host |
Primary hostname for the ingress resource | impress.example.com |
posthog.ingress.path |
URL path prefix for the ingress routes (e.g., /) | / |
posthog.ingress.hosts |
Additional hostnames array to be included in the ingress | [] |
posthog.ingress.tls.enabled |
Enable or disable TLS/HTTPS for the ingress | true |
posthog.ingress.tls.additional |
Additional TLS configurations for extra hosts/certificates | [] |
posthog.ingress.customBackends |
Custom backend service configurations for the ingress | [] |
posthog.ingress.annotations |
Additional Kubernetes annotations to apply to the ingress | {} |
posthog.ingressAssets.enabled |
Enable or disable the ingress resource creation | false |
posthog.ingressAssets.className |
Kubernetes ingress class name to use (e.g., nginx, traefik) | nil |
posthog.ingressAssets.host |
Primary hostname for the ingress resource | impress.example.com |
posthog.ingressAssets.paths |
URL paths prefix for the ingress routes (e.g., /static) | ["/static","/array"] |
posthog.ingressAssets.hosts |
Additional hostnames array to be included in the ingress | [] |
posthog.ingressAssets.tls.enabled |
Enable or disable TLS/HTTPS for the ingress | true |
posthog.ingressAssets.tls.additional |
Additional TLS configurations for extra hosts/certificates | [] |
posthog.ingressAssets.customBackends |
Custom backend service configurations for the ingress | [] |
posthog.ingressAssets.annotations |
Additional Kubernetes annotations to apply to the ingress | {} |
posthog.service.type |
Service type (e.g. ExternalName, ClusterIP, LoadBalancer) | ExternalName |
posthog.service.externalName |
External service hostname when type is ExternalName | eu.i.posthog.com |
posthog.service.port |
Port number for the service | 443 |
posthog.service.annotations |
Additional annotations to apply to the service | {} |
posthog.assetsService.type |
Service type (e.g. ExternalName, ClusterIP, LoadBalancer) | ExternalName |
posthog.assetsService.externalName |
External service hostname when type is ExternalName | eu-assets.i.posthog.com |
posthog.assetsService.port |
Port number for the service | 443 |
posthog.assetsService.annotations |
Additional annotations to apply to the service | {} |
yProvider
| Name | Description | Value |
|---|---|---|
yProvider.image.repository |
Repository to use to pull impress's yProvider container image | lasuite/impress-y-provider |
yProvider.image.tag |
impress's yProvider container tag | latest |
yProvider.image.pullPolicy |
yProvider container image pull policy | IfNotPresent |
yProvider.command |
Override the yProvider container command | [] |
yProvider.args |
Override the yProvider container args | [] |
yProvider.replicas |
Amount of yProvider replicas | 3 |
yProvider.shareProcessNamespace |
Enable share process nameyProvider between containers | false |
yProvider.sidecars |
Add sidecars containers to yProvider deployment | [] |
yProvider.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the yProvider container | false |
yProvider.securityContext.capabilities.drop |
List of capabilities to drop for the yProvider container | ["ALL"] |
yProvider.securityContext.runAsNonRoot |
Whether to run the yProvider container as a non-root user | true |
yProvider.securityContext.seccompProfile.type |
Seccomp profile type for the yProvider container | RuntimeDefault |
yProvider.envVars |
Configure yProvider container environment variables | undefined |
yProvider.envVars.BY_VALUE |
Example environment variable by setting value directly | |
yProvider.envVars.FROM_CONFIGMAP.configMapKeyRef.name |
Name of a ConfigMap when configuring env vars from a ConfigMap | |
yProvider.envVars.FROM_CONFIGMAP.configMapKeyRef.key |
Key within a ConfigMap when configuring env vars from a ConfigMap | |
yProvider.envVars.FROM_SECRET.secretKeyRef.name |
Name of a Secret when configuring env vars from a Secret | |
yProvider.envVars.FROM_SECRET.secretKeyRef.key |
Key within a Secret when configuring env vars from a Secret | |
yProvider.podAnnotations |
Annotations to add to the yProvider Pod | {} |
yProvider.dpAnnotations |
Annotations to add to the yProvider Deployment | {} |
yProvider.service.type |
yProvider Service type | ClusterIP |
yProvider.service.port |
yProvider Service listening port | 443 |
yProvider.service.targetPort |
yProvider container listening port | 4444 |
yProvider.service.annotations |
Annotations to add to the yProvider Service | {} |
yProvider.probes.liveness.path |
Configure path for yProvider HTTP liveness probe | /ping |
yProvider.probes.liveness.initialDelaySeconds |
Configure initial delay for yProvider liveness probe | 10 |
yProvider.probes.liveness.targetPort |
Configure port for yProvider HTTP liveness probe | |
yProvider.probes.liveness.timeoutSeconds |
Configure timeout for yProvider liveness probe | |
yProvider.probes.startup.path |
Configure path for yProvider HTTP startup probe | |
yProvider.probes.startup.targetPort |
Configure port for yProvider HTTP startup probe | |
yProvider.probes.startup.initialDelaySeconds |
Configure initial delay for yProvider startup probe | |
yProvider.probes.startup.timeoutSeconds |
Configure timeout for yProvider startup probe | |
yProvider.probes.readiness.path |
Configure path for yProvider HTTP readiness probe | |
yProvider.probes.readiness.targetPort |
Configure port for yProvider HTTP readiness probe | |
yProvider.probes.readiness.initialDelaySeconds |
Configure initial delay for yProvider readiness probe | |
yProvider.probes.readiness.timeoutSeconds |
Configure timeout for yProvider readiness probe | |
yProvider.resources |
Resource requirements for the yProvider container | {} |
yProvider.nodeSelector |
Node selector for the yProvider Pod | {} |
yProvider.tolerations |
Tolerations for the yProvider Pod | [] |
yProvider.affinity |
Affinity for the yProvider Pod | {} |
yProvider.persistence |
Additional volumes to create and mount on the yProvider. Used for debugging purposes | {} |
yProvider.persistence.volume-name.size |
Size of the additional volume | |
yProvider.persistence.volume-name.type |
Type of the additional volume, persistentVolumeClaim or emptyDir | |
yProvider.persistence.volume-name.mountPath |
Path where the volume should be mounted to | |
yProvider.extraVolumeMounts |
Additional volumes to mount on the yProvider. | [] |
yProvider.extraVolumes |
Additional volumes to mount on the yProvider. | [] |
yProvider.pdb.enabled |
Enable pdb on yProvider | true |
yProvider.serviceAccountName |
Optional service account name to use for yProvider pods | nil |
docSpec
| Name | Description | Value |
|---|---|---|
docSpec.enabled |
Enable docSpec deployment | false |
docSpec.image.repository |
Repository to use to pull docSpec container image | ghcr.io/docspecio/api |
docSpec.image.tag |
docSpec container tag | 2.6.3 |
docSpec.image.pullPolicy |
docSpec container image pull policy | IfNotPresent |
docSpec.command |
Override the docSpec container command | [] |
docSpec.args |
Override the docSpec container args | [] |
docSpec.replicas |
Amount of docSpec replicas | 1 |
docSpec.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the docSpec container | false |
docSpec.securityContext.capabilities.drop |
List of capabilities to drop for the docSpec container | ["ALL"] |
docSpec.securityContext.runAsNonRoot |
Whether to run the docSpec container as a non-root user | true |
docSpec.securityContext.seccompProfile.type |
Seccomp profile type for the docSpec container | RuntimeDefault |
docSpec.envVars |
Configure docSpec container environment variables | {} |
docSpec.service.type |
docSpec Service type | ClusterIP |
docSpec.service.port |
docSpec Service listening port | 4000 |
docSpec.service.targetPort |
docSpec container listening port | 4000 |
docSpec.probes.liveness.path |
Configure path for docSpec HTTP liveness probe | /health |
docSpec.probes.readiness.path |
Configure path for docSpec HTTP readiness probe | /health |
docSpec.resources |
docSpec resources | {} |
docSpec.nodeSelector |
Node selector for the docSpec Pod | {} |
docSpec.tolerations |
Tolerations for the docSpec Pod | [] |
docSpec.affinity |
Affinity for the docSpec Pod | {} |
docSpec.extraVolumeMounts |
Additional volumes to mount on docSpec | [] |
docSpec.extraVolumes |
Additional volumes to mount on docSpec | [] |
File: src/frontend/apps/impress/README.md
This is a Next.js project bootstrapped with create-next-app.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Inter, a custom Google Font.
Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
2. Official Technical Reference & Guides (suitenumerique/docs)
File: README.md
La Suite Docs: Collaborative Text Editing
Docs, where your notes can become knowledge through live collaboration.
Docs is an open-source collaborative editor that helps teams write, organize, and share knowledge together - in real time.
What is Docs?
Docs is an open-source alternative to tools like Notion or Google Docs, focused on:
- Real-time collaboration
- Clean, structured documents
- Knowledge organization
- Data ownership & self-hosting
Built for public organizations, companies, and open communities.
Why use Docs?
Writing
- Rich-text & Markdown editing
- Slash commands & block system
- Beautiful formatting
- Offline editing
- Optional AI writing helpers (rewrite, summarize, translate, fix typos)
Collaboration
- Live cursors & presence
- Comments & sharing
- Granular access control
Knowledge management
- Subpages & hierarchy
- Searchable content
Presentations
- Simple structure, based on delimiter (
---) - Full screen option
- PDF exports
- Keyboard navigation
- Start presention from a block
- Presentation link
Export/Import
- Import to
.docxand.md - Export to
.docx,.odt,.pdf
AI features
Docs has optional AI features.
They're model agnostic and gateway agnostic.
You can either run your own or just use your AI provider.
The config only requires an API key and a URL.
V1: You select, AI replaces
This version features a simple select and replace workflow.
Your selection is the context and the instruction for the model.
The AI feedback replaces your selection and is designed is optimized for Docs formatting.
V2: AI toolbar, AI cursor (beta)
This version uses BlockNote AI integration. It features:
- an AI toolbar at selection in which you can prompt, accept, reject and iterate AI feedback
- an AI cursor, which interacts with the document, just as another collaborator in your document
- document context is used on top of the selection
Interoperability
Docs comes with a resource server API and a server to server API which allows for awesome integrations.
A concrete example: [Meet](https://github.com/suitenumerique/meet/)'s transcriptions
If you're running a Meet instance, with simple config (DJANGO_SERVER_TO_SERVER_API_TOKENS) you can push your meeting transcript to Docs and give access to the user who requested it.
Try Docs
Experience Docs instantly - no installation required.
Self-hosting
Docs supports Kubernetes, Docker Compose, and community-provided methods such as Nix and YunoHost.
Get started with self-hosting: Installation guide
[!WARNING]
Some advanced features (for example:Export as PDF) rely on XL packages from Blocknote.
These packages are licensed under GPL and are not MIT-compatibleYou can run Docs without these packages by building with:
bashPUBLISH_AS_MIT=trueThis builds an image of Docs without non-MIT features.
More details can be found in environment variables
Local Development (for contributors)
Run Docs locally for development and testing.
[!WARNING]
This setup is intended for development and testing only.
It uses Minio as an S3-compatible storage backend, but any S3-compatible service can be used.
Prerequisites
- Docker
- Docker Compose
- GNU Make
Verify installation:
docker -v
docker compose versionIf you encounter permission errors, you may need to use
sudo, or add your user to thedockergroup.
Bootstrap the project
The easiest way to start is using GNU Make:
make bootstrap FLUSH_ARGS='--no-input'This builds the app-dev and frontend-dev containers, installs dependencies, runs database migrations, and compiles translations.
It is recommended to run this command after pulling new code.
Start services:
make runDefault credentials (development only):
username: impress
password: impressFrontend development mode
For frontend work, running outside Docker is often more convenient:
make frontend-development-install
make run-frontend-developmentBackend only
Starting all services except the frontend container:
make run-backendTests & Linting
make frontend-test
make frontend-lintBackend tests can be run without docker. This is useful to configure PyCharm or VSCode to do it.
Removing docker for testing requires to overwrite some URL and port values that are different in and out of
Docker. env.d/development/common contains all variables, some of them having to be overwritten by those inenv.d/development/common.test.
Demo content
Create a basic demo site:
make demoMore Make targets
To check all available Make rules:
make helpDjango admin
Create a superuser:
make superuserAdmin UI: http://localhost:8071/admin
Contributing
This project is community-driven and PRs are welcome.
Roadmap
Curious where Docs is headed?
Explore upcoming features, priorities and long-term direction on our public roadmap.
License ๐
This work is released under the MIT License (see LICENSE).
While Docs is a public-driven initiative, our license choice is an invitation for private sector actors to use, sell and contribute to the project.
Credits โค๏ธ
Stack
Docs is built on top of Django Rest Framework, Next.js, ProseMirror, BlockNote.js, HocusPocus, and Yjs. We thank the contributors of all these projects for their awesome work!
We are proud sponsors of BlockNotejs and Yjs.
Gov โค๏ธ open source
Docs is the result of a joint initiative led by the French ๐ซ๐ท (DINUM) Government and German ๐ฉ๐ช government (ZenDiS).
We are always looking for new public partners (we are currently onboarding the Netherlands ๐ณ๐ฑ), feel free to contact us if you are interested in using or contributing to Docs.
File: src/helm/impress/README.md
Impress helm chart
Parameters
General configuration
| Name | Description | Value |
|---|---|---|
image.repository |
Repository to use to pull impress's container image | lasuite/impress-backend |
image.tag |
impress's container tag | latest |
image.pullPolicy |
Container image pull policy | IfNotPresent |
image.credentials.username |
Username for container registry authentication | |
image.credentials.password |
Password for container registry authentication | |
image.credentials.registry |
Registry url for which the credentials are specified | |
image.credentials.name |
Name of the generated secret for imagePullSecrets | |
nameOverride |
Override the chart name | "" |
fullnameOverride |
Override the full application name | "" |
ingress.enabled |
whether to enable the Ingress or not | false |
ingress.className |
IngressClass to use for the Ingress | nil |
ingress.host |
Host for the Ingress | impress.example.com |
ingress.path |
Path to use for the Ingress | / |
ingress.hosts |
Additional host to configure for the Ingress | [] |
ingress.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingress.tls.secretName |
Secret name for TLS config | nil |
ingress.tls.additional[].secretName |
Secret name for additional TLS config | |
ingress.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingress.customBackends |
Add custom backends to ingress | [] |
ingressCollaborationWS.enabled |
whether to enable the Ingress or not | false |
ingressCollaborationWS.className |
IngressClass to use for the Ingress | nil |
ingressCollaborationWS.host |
Host for the Ingress | impress.example.com |
ingressCollaborationWS.path |
Path to use for the Ingress | /collaboration/ws/ |
ingressCollaborationWS.hosts |
Additional host to configure for the Ingress | [] |
ingressCollaborationWS.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressCollaborationWS.tls.secretName |
Secret name for TLS config | nil |
ingressCollaborationWS.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressCollaborationWS.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressCollaborationWS.customBackends |
Add custom backends to ingress | [] |
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/enable-websocket |
true |
|
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/proxy-read-timeout |
86400 |
|
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/proxy-send-timeout |
86400 |
|
ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/upstream-hash-by |
$arg_room |
|
ingressRedirects.enabled |
whether to enable the Ingress Redirects or not | false |
ingressRedirects.className |
IngressClass to use for the Ingress Redirects | nil |
ingressRedirects.host |
Host for the Ingress Redirects | impress.example.com |
ingressRedirects.tls.enabled |
Whether to enable TLS for the Ingress Redirects | true |
ingressRedirects.tls.secretName |
Secret name for TLS config | nil |
ingressRedirects.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressRedirects.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressRedirects.rules |
Rules for the Ingress Redirects | [] |
ingressCollaborationApi.enabled |
whether to enable the Ingress or not | false |
ingressCollaborationApi.className |
IngressClass to use for the Ingress | nil |
ingressCollaborationApi.host |
Host for the Ingress | impress.example.com |
ingressCollaborationApi.path |
Path to use for the Ingress | /collaboration/api/ |
ingressCollaborationApi.hosts |
Additional host to configure for the Ingress | [] |
ingressCollaborationApi.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressCollaborationApi.tls.secretName |
Secret name for TLS config | nil |
ingressCollaborationApi.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressCollaborationApi.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressCollaborationApi.customBackends |
Add custom backends to ingress | [] |
ingressCollaborationApi.annotations.nginx.ingress.kubernetes.io/upstream-hash-by |
$arg_room |
|
ingressAdmin.enabled |
whether to enable the Ingress or not | false |
ingressAdmin.className |
IngressClass to use for the Ingress | nil |
ingressAdmin.host |
Host for the Ingress | impress.example.com |
ingressAdmin.path |
Path to use for the Ingress | /admin |
ingressAdmin.hosts |
Additional host to configure for the Ingress | [] |
ingressAdmin.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressAdmin.tls.secretName |
Secret name for TLS config | nil |
ingressAdmin.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressAdmin.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressMedia.enabled |
whether to enable the Ingress or not | false |
ingressMedia.className |
IngressClass to use for the Ingress | nil |
ingressMedia.host |
Host for the Ingress | impress.example.com |
ingressMedia.path |
Path to use for the Ingress | /media/(.*) |
ingressMedia.hosts |
Additional host to configure for the Ingress | [] |
ingressMedia.tls.enabled |
Whether to enable TLS for the Ingress | true |
ingressMedia.tls.secretName |
Secret name for TLS config | nil |
ingressMedia.tls.additional[].secretName |
Secret name for additional TLS config | |
ingressMedia.tls.additional[].hosts[] |
Hosts for additional TLS config | |
ingressMedia.annotations.nginx.ingress.kubernetes.io/auth-url |
https://impress.example.com/api/v1.0/documents/media-auth/ |
|
ingressMedia.annotations.nginx.ingress.kubernetes.io/auth-response-headers |
Authorization, X-Amz-Date, X-Amz-Content-SHA256 |
|
ingressMedia.annotations.nginx.ingress.kubernetes.io/upstream-vhost |
minio.impress.svc.cluster.local:9000 |
|
ingressMedia.annotations.nginx.ingress.kubernetes.io/configuration-snippet |
`add_header Content-Security-Policy "default-src 'none'" always; | |
| ` | ||
serviceMedia.host |
Hostname of the media storage backend (S3/MinIO) used by the media ingress | minio.impress.svc.cluster.local |
serviceMedia.port |
Port of the media storage backend | 9000 |
serviceMedia.annotations |
Annotations to add to the media ExternalName Service | {} |
backend
| Name | Description | Value |
|---|---|---|
backend.command |
Override the backend container command | [] |
backend.args |
Override the backend container args | [] |
backend.replicas |
Amount of backend replicas | 3 |
backend.shareProcessNamespace |
Enable share process namespace between containers | false |
backend.sidecars |
Add sidecars containers to backend deployment | [] |
backend.migrateJobAnnotations |
Annotations for the migrate job | {} |
backend.jobs.ttlSecondsAfterFinished |
Period to wait before remove jobs | 30 |
backend.jobs.backoffLimit |
Numbers of jobs retries | 2 |
backend.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the backend container | false |
backend.securityContext.capabilities.drop |
List of capabilities to drop for the backend container | ["ALL"] |
backend.securityContext.runAsNonRoot |
Whether to run the backend container as a non-root user | true |
backend.securityContext.seccompProfile.type |
Seccomp profile type for the backend container | RuntimeDefault |
backend.envVars |
Configure backend container environment variables | undefined |
backend.envVars.BY_VALUE |
Example environment variable by setting value directly | |
backend.envVars.FROM_CONFIGMAP.configMapKeyRef.name |
Name of a ConfigMap when configuring env vars from a ConfigMap | |
backend.envVars.FROM_CONFIGMAP.configMapKeyRef.key |
Key within a ConfigMap when configuring env vars from a ConfigMap | |
backend.envVars.FROM_SECRET.secretKeyRef.name |
Name of a Secret when configuring env vars from a Secret | |
backend.envVars.FROM_SECRET.secretKeyRef.key |
Key within a Secret when configuring env vars from a Secret | |
backend.django.envVars |
Backend web deployment specific environment variables (not shared with celery worker) | |
backend.podAnnotations |
Annotations to add to the backend Pod | {} |
backend.dpAnnotations |
Annotations to add to the backend Deployment | {} |
backend.service.type |
backend Service type | ClusterIP |
backend.service.port |
backend Service listening port | 80 |
backend.service.targetPort |
backend container listening port | 8000 |
backend.service.annotations |
Annotations to add to the backend Service | {} |
backend.migrate.command |
backend migrate command | ["/bin/sh","-c","attempt=0\nuntil output=$(python manage.py check --database default 2>&1)\ndo\n attempt=$((attempt + 1))\n echo \"Database check failed (attempt $attempt), retrying in 2s:\"\n echo \"$output\"\n sleep 2\ndone\n\necho \"Database is ready\"\n\npython manage.py migrate --no-input\n"] |
backend.migrate.restartPolicy |
backend migrate job restart policy | Never |
backend.createsuperuser.command |
backend migrate command | ["/bin/sh","-c","attempt=0\nuntil output=$(python manage.py check --database default 2>&1)\ndo\n attempt=$((attempt + 1))\n echo \"Database check failed (attempt $attempt), retrying in 2s:\"\n echo \"$output\"\n sleep 2\ndone\n\necho \"Database is ready\"\n\npython manage.py createsuperuser --email $DJANGO_SUPERUSER_EMAIL --password $DJANGO_SUPERUSER_PASSWORD\n"] |
backend.createsuperuser.restartPolicy |
backend migrate job restart policy | Never |
backend.job |
job dedicated to run a random management command, for example after a deployment | |
backend.job.name |
The name to use to describe this job | "" |
backend.job.command |
The management command to execute | [] |
backend.job.restartPolicy |
The restart policy for the job. | Never |
backend.job.annotations |
Annotations to add to the job [default: argocd.argoproj.io/hook: PostSync] | |
backend.cronjobs |
Cronjob name, schedule, command | [] |
backend.probes.liveness.path |
Configure path for backend HTTP liveness probe | /__lbheartbeat__ |
backend.probes.liveness.targetPort |
Configure port for backend HTTP liveness probe | nil |
backend.probes.liveness.initialDelaySeconds |
Configure initial delay for backend liveness probe | 10 |
backend.probes.liveness.timeoutSeconds |
Configure timeout for backend liveness probe | nil |
backend.probes.startup.path |
Configure path for backend HTTP startup probe | |
backend.probes.startup.targetPort |
Configure port for backend HTTP startup probe | |
backend.probes.startup.initialDelaySeconds |
Configure initial delay for backend startup probe | |
backend.probes.startup.timeoutSeconds |
Configure timeout for backend startup probe | |
backend.probes.readiness.path |
Configure path for backend HTTP readiness probe | /__heartbeat__ |
backend.probes.readiness.targetPort |
Configure port for backend HTTP readiness probe | nil |
backend.probes.readiness.initialDelaySeconds |
Configure initial delay for backend readiness probe | 10 |
backend.probes.readiness.timeoutSeconds |
Configure timeout for backend readiness probe | nil |
backend.resources |
Resource requirements for the backend container | {} |
backend.nodeSelector |
Node selector for the backend Pod | {} |
backend.tolerations |
Tolerations for the backend Pod | [] |
backend.affinity |
Affinity for the backend Pod | {} |
backend.persistence |
Additional volumes to create and mount on the backend. Used for debugging purposes | {} |
backend.persistence.volume-name.size |
Size of the additional volume | |
backend.persistence.volume-name.type |
Type of the additional volume, persistentVolumeClaim or emptyDir | |
backend.persistence.volume-name.mountPath |
Path where the volume should be mounted to | |
backend.extraVolumeMounts |
Additional volumes to mount on the backend. | [] |
backend.extraVolumes |
Additional volumes to mount on the backend. | [] |
backend.pdb.enabled |
Enable pdb on backend | true |
backend.serviceAccountName |
Optional service account name to use for backend pods | nil |
backend.themeCustomization.enabled |
Enable theme customization | false |
backend.themeCustomization.file_content |
Content of the theme customization file. Must be a json object. | "" |
backend.themeCustomization.mount_path |
Path where the customization file will be mounted in the backend deployment. | /app/impress/configuration/theme |
backend.celery.replicas |
Amount of celery replicas | 1 |
backend.celery.command |
Override the celery container command | [] |
backend.celery.args |
Override the celery container args | ["celery","-A","impress.celery_app","worker","-l","INFO","-n","impress@%h"] |
backend.celery.resources |
Resource requirements for the celery container | {} |
backend.celery.probes.liveness.exec.command |
Override the celery container liveness probe command | ["/bin/sh","-c","celery -A impress.celery_app inspect ping -d impress@$HOSTNAME"] |
backend.celery.probes.liveness.initialDelaySeconds |
Initial delay for the celery container liveness probe | 60 |
backend.celery.probes.liveness.timeoutSeconds |
Timeout for the celery container liveness probe | 5 |
backend.celery.probes.readiness.exec.command |
Override the celery container readiness probe command | ["/bin/sh","-c","celery -A impress.celery_app inspect ping -d impress@$HOSTNAME"] |
backend.celery.probes.readiness.initialDelaySeconds |
Initial delay for the celery container readiness probe | 15 |
backend.celery.probes.readiness.timeoutSeconds |
Timeout for the celery container readiness probe | 5 |
backend.celery.envVars |
Celery worker specific environment variables (not shared with the backend web deployment) |
frontend
| Name | Description | Value |
|---|---|---|
frontend.image.repository |
Repository to use to pull impress's frontend container image | lasuite/impress-frontend |
frontend.image.tag |
impress's frontend container tag | latest |
frontend.image.pullPolicy |
frontend container image pull policy | IfNotPresent |
frontend.command |
Override the frontend container command | [] |
frontend.args |
Override the frontend container args | [] |
frontend.replicas |
Amount of frontend replicas | 3 |
frontend.shareProcessNamespace |
Enable share process namespace between containers | false |
frontend.sidecars |
Add sidecars containers to frontend deployment | [] |
frontend.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the frontend container | false |
frontend.securityContext.capabilities.drop |
List of capabilities to drop for the frontend container | ["ALL"] |
frontend.securityContext.runAsNonRoot |
Whether to run the frontend container as a non-root user | true |
frontend.securityContext.seccompProfile.type |
Seccomp profile type for the frontend container | RuntimeDefault |
frontend.envVars |
Configure frontend container environment variables | undefined |
frontend.envVars.BY_VALUE |
Example environment variable by setting value directly | |
frontend.envVars.FROM_CONFIGMAP.configMapKeyRef.name |
Name of a ConfigMap when configuring env vars from a ConfigMap | |
frontend.envVars.FROM_CONFIGMAP.configMapKeyRef.key |
Key within a ConfigMap when configuring env vars from a ConfigMap | |
frontend.envVars.FROM_SECRET.secretKeyRef.name |
Name of a Secret when configuring env vars from a Secret | |
frontend.envVars.FROM_SECRET.secretKeyRef.key |
Key within a Secret when configuring env vars from a Secret | |
frontend.podAnnotations |
Annotations to add to the frontend Pod | {} |
frontend.dpAnnotations |
Annotations to add to the frontend Deployment | {} |
frontend.service.type |
frontend Service type | ClusterIP |
frontend.service.port |
frontend Service listening port | 80 |
frontend.service.targetPort |
frontend container listening port | 8080 |
frontend.service.annotations |
Annotations to add to the frontend Service | {} |
frontend.probes |
Configure probe for frontend | {} |
frontend.probes.liveness.path |
Configure path for frontend HTTP liveness probe | |
frontend.probes.liveness.targetPort |
Configure port for frontend HTTP liveness probe | |
frontend.probes.liveness.initialDelaySeconds |
Configure initial delay for frontend liveness probe | |
frontend.probes.liveness.initialDelaySeconds |
Configure timeout for frontend liveness probe | |
frontend.probes.startup.path |
Configure path for frontend HTTP startup probe | |
frontend.probes.startup.targetPort |
Configure port for frontend HTTP startup probe | |
frontend.probes.startup.initialDelaySeconds |
Configure initial delay for frontend startup probe | |
frontend.probes.startup.initialDelaySeconds |
Configure timeout for frontend startup probe | |
frontend.probes.readiness.path |
Configure path for frontend HTTP readiness probe | |
frontend.probes.readiness.targetPort |
Configure port for frontend HTTP readiness probe | |
frontend.probes.readiness.initialDelaySeconds |
Configure initial delay for frontend readiness probe | |
frontend.probes.readiness.initialDelaySeconds |
Configure timeout for frontend readiness probe | |
frontend.resources |
Resource requirements for the frontend container | {} |
frontend.nodeSelector |
Node selector for the frontend Pod | {} |
frontend.tolerations |
Tolerations for the frontend Pod | [] |
frontend.affinity |
Affinity for the frontend Pod | {} |
frontend.persistence |
Additional volumes to create and mount on the frontend. Used for debugging purposes | {} |
frontend.persistence.volume-name.size |
Size of the additional volume | |
frontend.persistence.volume-name.type |
Type of the additional volume, persistentVolumeClaim or emptyDir | |
frontend.persistence.volume-name.mountPath |
Path where the volume should be mounted to | |
frontend.extraVolumeMounts |
Additional volumes to mount on the frontend. | [] |
frontend.extraVolumes |
Additional volumes to mount on the frontend. | [] |
frontend.pdb.enabled |
Enable pdb on frontend | true |
frontend.serviceAccountName |
Optional service account name to use for frontend pods | nil |
posthog
| Name | Description | Value |
|---|---|---|
posthog.ingress.enabled |
Enable or disable the ingress resource creation | false |
posthog.ingress.className |
Kubernetes ingress class name to use (e.g., nginx, traefik) | nil |
posthog.ingress.host |
Primary hostname for the ingress resource | impress.example.com |
posthog.ingress.path |
URL path prefix for the ingress routes (e.g., /) | / |
posthog.ingress.hosts |
Additional hostnames array to be included in the ingress | [] |
posthog.ingress.tls.enabled |
Enable or disable TLS/HTTPS for the ingress | true |
posthog.ingress.tls.additional |
Additional TLS configurations for extra hosts/certificates | [] |
posthog.ingress.customBackends |
Custom backend service configurations for the ingress | [] |
posthog.ingress.annotations |
Additional Kubernetes annotations to apply to the ingress | {} |
posthog.ingressAssets.enabled |
Enable or disable the ingress resource creation | false |
posthog.ingressAssets.className |
Kubernetes ingress class name to use (e.g., nginx, traefik) | nil |
posthog.ingressAssets.host |
Primary hostname for the ingress resource | impress.example.com |
posthog.ingressAssets.paths |
URL paths prefix for the ingress routes (e.g., /static) | ["/static","/array"] |
posthog.ingressAssets.hosts |
Additional hostnames array to be included in the ingress | [] |
posthog.ingressAssets.tls.enabled |
Enable or disable TLS/HTTPS for the ingress | true |
posthog.ingressAssets.tls.additional |
Additional TLS configurations for extra hosts/certificates | [] |
posthog.ingressAssets.customBackends |
Custom backend service configurations for the ingress | [] |
posthog.ingressAssets.annotations |
Additional Kubernetes annotations to apply to the ingress | {} |
posthog.service.type |
Service type (e.g. ExternalName, ClusterIP, LoadBalancer) | ExternalName |
posthog.service.externalName |
External service hostname when type is ExternalName | eu.i.posthog.com |
posthog.service.port |
Port number for the service | 443 |
posthog.service.annotations |
Additional annotations to apply to the service | {} |
posthog.assetsService.type |
Service type (e.g. ExternalName, ClusterIP, LoadBalancer) | ExternalName |
posthog.assetsService.externalName |
External service hostname when type is ExternalName | eu-assets.i.posthog.com |
posthog.assetsService.port |
Port number for the service | 443 |
posthog.assetsService.annotations |
Additional annotations to apply to the service | {} |
yProvider
| Name | Description | Value |
|---|---|---|
yProvider.image.repository |
Repository to use to pull impress's yProvider container image | lasuite/impress-y-provider |
yProvider.image.tag |
impress's yProvider container tag | latest |
yProvider.image.pullPolicy |
yProvider container image pull policy | IfNotPresent |
yProvider.command |
Override the yProvider container command | [] |
yProvider.args |
Override the yProvider container args | [] |
yProvider.replicas |
Amount of yProvider replicas | 3 |
yProvider.shareProcessNamespace |
Enable share process nameyProvider between containers | false |
yProvider.sidecars |
Add sidecars containers to yProvider deployment | [] |
yProvider.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the yProvider container | false |
yProvider.securityContext.capabilities.drop |
List of capabilities to drop for the yProvider container | ["ALL"] |
yProvider.securityContext.runAsNonRoot |
Whether to run the yProvider container as a non-root user | true |
yProvider.securityContext.seccompProfile.type |
Seccomp profile type for the yProvider container | RuntimeDefault |
yProvider.envVars |
Configure yProvider container environment variables | undefined |
yProvider.envVars.BY_VALUE |
Example environment variable by setting value directly | |
yProvider.envVars.FROM_CONFIGMAP.configMapKeyRef.name |
Name of a ConfigMap when configuring env vars from a ConfigMap | |
yProvider.envVars.FROM_CONFIGMAP.configMapKeyRef.key |
Key within a ConfigMap when configuring env vars from a ConfigMap | |
yProvider.envVars.FROM_SECRET.secretKeyRef.name |
Name of a Secret when configuring env vars from a Secret | |
yProvider.envVars.FROM_SECRET.secretKeyRef.key |
Key within a Secret when configuring env vars from a Secret | |
yProvider.podAnnotations |
Annotations to add to the yProvider Pod | {} |
yProvider.dpAnnotations |
Annotations to add to the yProvider Deployment | {} |
yProvider.service.type |
yProvider Service type | ClusterIP |
yProvider.service.port |
yProvider Service listening port | 443 |
yProvider.service.targetPort |
yProvider container listening port | 4444 |
yProvider.service.annotations |
Annotations to add to the yProvider Service | {} |
yProvider.probes.liveness.path |
Configure path for yProvider HTTP liveness probe | /ping |
yProvider.probes.liveness.initialDelaySeconds |
Configure initial delay for yProvider liveness probe | 10 |
yProvider.probes.liveness.targetPort |
Configure port for yProvider HTTP liveness probe | |
yProvider.probes.liveness.timeoutSeconds |
Configure timeout for yProvider liveness probe | |
yProvider.probes.startup.path |
Configure path for yProvider HTTP startup probe | |
yProvider.probes.startup.targetPort |
Configure port for yProvider HTTP startup probe | |
yProvider.probes.startup.initialDelaySeconds |
Configure initial delay for yProvider startup probe | |
yProvider.probes.startup.timeoutSeconds |
Configure timeout for yProvider startup probe | |
yProvider.probes.readiness.path |
Configure path for yProvider HTTP readiness probe | |
yProvider.probes.readiness.targetPort |
Configure port for yProvider HTTP readiness probe | |
yProvider.probes.readiness.initialDelaySeconds |
Configure initial delay for yProvider readiness probe | |
yProvider.probes.readiness.timeoutSeconds |
Configure timeout for yProvider readiness probe | |
yProvider.resources |
Resource requirements for the yProvider container | {} |
yProvider.nodeSelector |
Node selector for the yProvider Pod | {} |
yProvider.tolerations |
Tolerations for the yProvider Pod | [] |
yProvider.affinity |
Affinity for the yProvider Pod | {} |
yProvider.persistence |
Additional volumes to create and mount on the yProvider. Used for debugging purposes | {} |
yProvider.persistence.volume-name.size |
Size of the additional volume | |
yProvider.persistence.volume-name.type |
Type of the additional volume, persistentVolumeClaim or emptyDir | |
yProvider.persistence.volume-name.mountPath |
Path where the volume should be mounted to | |
yProvider.extraVolumeMounts |
Additional volumes to mount on the yProvider. | [] |
yProvider.extraVolumes |
Additional volumes to mount on the yProvider. | [] |
yProvider.pdb.enabled |
Enable pdb on yProvider | true |
yProvider.serviceAccountName |
Optional service account name to use for yProvider pods | nil |
docSpec
| Name | Description | Value |
|---|---|---|
docSpec.enabled |
Enable docSpec deployment | false |
docSpec.image.repository |
Repository to use to pull docSpec container image | ghcr.io/docspecio/api |
docSpec.image.tag |
docSpec container tag | 2.6.3 |
docSpec.image.pullPolicy |
docSpec container image pull policy | IfNotPresent |
docSpec.command |
Override the docSpec container command | [] |
docSpec.args |
Override the docSpec container args | [] |
docSpec.replicas |
Amount of docSpec replicas | 1 |
docSpec.securityContext.allowPrivilegeEscalation |
Whether to allow privilege escalation for the docSpec container | false |
docSpec.securityContext.capabilities.drop |
List of capabilities to drop for the docSpec container | ["ALL"] |
docSpec.securityContext.runAsNonRoot |
Whether to run the docSpec container as a non-root user | true |
docSpec.securityContext.seccompProfile.type |
Seccomp profile type for the docSpec container | RuntimeDefault |
docSpec.envVars |
Configure docSpec container environment variables | {} |
docSpec.service.type |
docSpec Service type | ClusterIP |
docSpec.service.port |
docSpec Service listening port | 4000 |
docSpec.service.targetPort |
docSpec container listening port | 4000 |
docSpec.probes.liveness.path |
Configure path for docSpec HTTP liveness probe | /health |
docSpec.probes.readiness.path |
Configure path for docSpec HTTP readiness probe | /health |
docSpec.resources |
docSpec resources | {} |
docSpec.nodeSelector |
Node selector for the docSpec Pod | {} |
docSpec.tolerations |
Tolerations for the docSpec Pod | [] |
docSpec.affinity |
Affinity for the docSpec Pod | {} |
docSpec.extraVolumeMounts |
Additional volumes to mount on docSpec | [] |
docSpec.extraVolumes |
Additional volumes to mount on docSpec | [] |
File: src/frontend/apps/impress/README.md
This is a Next.js project bootstrapped with create-next-app.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Inter, a custom Google Font.
Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.