From 935143501e9331e6c15d18e6083ef09dfbbf6c07 Mon Sep 17 00:00:00 2001
From: Julien Maupetit
@@ -31,22 +32,27 @@
LaSuite Drive is an open-source tool focused on file storage, editing and sharing with granular access control.
## Why use Drive â
+
LaSuite Drive empowers teams to securely store, share, and collaborate on files while maintaining full control over their data through a user-friendly, open-source platform.
### Store
+
- Store your files securely in a centralized location
- Access your files from anywhere with our web-based interface
### Find
+
- Powerful search capabilities to quickly locate files and folders
- Organized file structure with intuitive navigation and filtering
### Collaborate
-- Share files and folders with your team members
+
+- Share files and folders with your team members
- Granular access control to ensure your information is secure and only shared with the right people
- Create workspaces to organize team collaboration and manage shared resources
#### Features
+
- File & folder upload with drag & drop support
- File preview for PDF, images, audio, and video directly in the browser
- Online document editing via WOPI protocol (compatible with Collabora, OnlyOffice)
@@ -62,9 +68,11 @@ LaSuite Drive empowers teams to securely store, share, and collaborate on files
## Getting started đ§
### Self-host
-* đ Easy to install, scalable and secure file storage solution
+
+- đ Easy to install, scalable and secure file storage solution
#### LaSuite Drive is easy to install on your own servers
+
We use Kubernetes for our [production instance](https://fichiers.numerique.gouv.fr/). Check out the [docs](https://github.com/suitenumerique/drive/blob/main/docs/installation/kubernetes.md) to get detailed instructions and examples.
For now we only have a documentation to install it on Kubernetes. We will be more than happy to improve this documentation with other methods. Feel free to make a PR !
@@ -72,14 +80,15 @@ For now we only have a documentation to install it on Kubernetes. We will be mor
**Questions?** Open an issue on [GitHub](https://github.com/suitenumerique/drive/issues/new?template=Bug_report.md) or join our [Matrix community](https://matrix.to/#/#drive-official:matrix.org).
#### Known instances
+
We hope to see many more, here is an incomplete list of public LaSuite Drive instances. Feel free to make a PR to add ones that are not listed belowđ
-| URL | Organisation | AccĂšs |
-|--------------------------------------|--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
-| [fichiers.numerique.gouv.fr](/) | DINUM | Réservé aux agents publics français travaillant pour l'administration centrale et la sphÚre publique élargie. Connexion via ProConnect requise. |
-| [fichiers.suite.anct.gouv.fr](/) | ANCT | Réservé aux agents publics français travaillant pour l'administration territoriale et la sphÚre publique élargie. Connexion via ProConnect requise. |
-| [fichiers.lasuite.coop](/) | lasuite.coop | Démonstration gratuite et ouverte à tous. Les contenus et comptes sont réinitialisés aprÚs un mois. |
-| [mosacloud.cloud](/) | mosa.cloud | Instance de démonstration de mosa.cloud, une entreprise néerlandaise proposant des services autour des applications La Suite. |
+| URL | Organisation | AccĂšs |
+| -------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [fichiers.numerique.gouv.fr](/) | DINUM | Réservé aux agents publics français travaillant pour l'administration centrale et la sphÚre publique élargie. Connexion via ProConnect requise. |
+| [fichiers.suite.anct.gouv.fr](/) | ANCT | Réservé aux agents publics français travaillant pour l'administration territoriale et la sphÚre publique élargie. Connexion via ProConnect requise. |
+| [fichiers.lasuite.coop](/) | lasuite.coop | Démonstration gratuite et ouverte à tous. Les contenus et comptes sont réinitialisés aprÚs un mois. |
+| [mosacloud.cloud](/) | mosa.cloud | Instance de démonstration de mosa.cloud, une entreprise néerlandaise proposant des services autour des applications La Suite. |
### Local Development (for contributors)
@@ -108,6 +117,7 @@ The easiest way to start working on the project is to use GNU Make:
```bash
$ make bootstrap
```
+
This command builds the `app-dev` and `frontend-dev` containers, installs dependencies, performs
database migrations and compile translations. It's a good idea to use this
command each time you are pulling code from the project repository to avoid
@@ -123,35 +133,65 @@ You will be prompted to log in. The default credentials are:
username: drive
password: drive
```
+
Note that if you need to run them afterward, you can use the eponym Make rule:
```bash
$ make run
```
+
You can check all available Make rules using:
```bash
$ make help
```
+#### Running end-to-end tests
+
+Prepare end-to-end test environment database and dependencies using:
+
+```bash
+$ make bootstrap-e2e
+```
+
+Run the backend configured for end-to-end testing along with the frontend:
+
+```bash
+$ make run-backend-e2e run-frontend-development
+```
+
+One also need to run the SDK-consumer that needs to be build first:
+
+```bash
+$ make build-frontend-sdk run-frontend-sdk-development
+```
+
+Once the backend and its dependencies are running, start testing using playwright _via_:
+
+```bash
+$ make run-tests-e2e
+```
+
#### Frontend development mode
â ïž For frontend work, it is often better to run the frontend in development mode locally.
To do so, install the frontend dependencies with the following command:
-```shellscript
+```bash
$ make frontend-development-install
```
+
And run the frontend locally in development mode with the following command:
-```shellscript
+```bash
$ make run-frontend-development
```
+
#### Backend only
To start all the services, except the frontend container, you can use the following command:
-```shellscript
+```bash
$ make run-backend
```
@@ -165,6 +205,7 @@ You first need to create a superuser account:
```bash
$ make superuser
```
+
You can then login with sub `admin@example.com` and password `admin`.
### Feedback
@@ -175,18 +216,19 @@ We'd love to hear your thoughts and hear about your experiments, so come and say
This project is community-driven and PRs are welcome. Do not hesitate to get in touch if you have any question related to our implementation or design decisions. We <3 contributions of any kind, big and small :
-* [Contribution guide](https://github.com/suitenumerique/drive/blob/main/CONTRIBUTING.md)
-* [Translations](https://crowdin.com/project/lasuite-drive)
-* [Chat with us!](https://matrix.to/#/#drive-official:matrix.org)
-* Open a PR (see our instructions on [developing La Suite Drive locally](https://github.com/suitenumerique/drive/blob/main/docs/installation/README.md))
-* Submit a [feature request](https://github.com/suitenumerique/drive/issues/new?assignees=&labels=enhancement&template=Feature_request.md) or [bug report](https://github.com/suitenumerique/drive/issues/new?assignees=&labels=bug&template=Bug_report.md)
+- [Contribution guide](https://github.com/suitenumerique/drive/blob/main/CONTRIBUTING.md)
+- [Translations](https://crowdin.com/project/lasuite-drive)
+- [Chat with us!](https://matrix.to/#/#drive-official:matrix.org)
+- Open a PR (see our instructions on [developing La Suite Drive locally](https://github.com/suitenumerique/drive/blob/main/docs/installation/README.md))
+- Submit a [feature request](https://github.com/suitenumerique/drive/issues/new?assignees=&labels=enhancement&template=Feature_request.md) or [bug report](https://github.com/suitenumerique/drive/issues/new?assignees=&labels=bug&template=Bug_report.md)
#### Gov â€ïž open source
-All features we develop will always remain open-source.
+
+All features we develop will always remain open-source.
Come help us make LaSuite Drive even better. We're growing fast and would love some help. We are always looking for new partners, feel free to [contact us](mailto:fichiers@numerique.gouv.fr) if you are interested in using or contributing to LaSuite Drive.Â
-
## Roadmap
+
Curious where LaSuite Drive is headed?
Explore upcoming features, priorities and long-term direction on our [public roadmap](https://docs.numerique.gouv.fr/docs/eacaabdb-d92b-465d-bedf-75d28b397221/).
@@ -194,13 +236,8 @@ Explore upcoming features, priorities and long-term direction on our [public roa
This work is released under the MIT License (see [LICENSE](./LICENSE)).
-While LaSuite Drive is a public driven initiative our licence choice is an invitation for private sector actors to use, sell and contribute to the project.
+While LaSuite Drive is a public driven initiative our licence choice is an invitation for private sector actors to use, sell and contribute to the project.
## Credits
LaSuite Drive is built on top of [Django Rest Framework](https://www.django-rest-framework.org/), [Next.js](https://nextjs.org/). We thank the contributors of all these projects for their awesome work!
-
-
-
-
-
diff --git a/compose.yaml b/compose.yaml
index 1122fbcf..29f941df 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -2,6 +2,7 @@ name: drive
services:
postgresql:
+ user: ${DOCKER_USER:-1000}
image: postgres:16
ports:
- "6434:5432"
@@ -163,8 +164,26 @@ services:
volumes:
- ./docker/files/development/etc/nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- - keycloak
- - app-dev
+ keycloak:
+ condition: service_healthy
+ restart: true
+ app-dev:
+ condition: service_started
+
+ # The static service is only used in the CI to serve the build
+ static:
+ image: nginx:1.25
+ ports:
+ - "3000:3000"
+ healthcheck:
+ test: curl -sf http://127.0.0.1:3000/ || exit 1
+ interval: 2s
+ timeout: 10s
+ retries: 30
+ start_period: 2s
+ volumes:
+ - ./src/frontend/apps/drive/out:/usr/share/nginx/html:ro
+ - ./src/frontend/apps/drive/conf/default.conf:/etc/nginx/conf.d/default.conf:ro
frontend-dev:
user: "${DOCKER_USER:-1000}"
@@ -177,8 +196,8 @@ services:
image: drive:frontend-development
volumes:
- ./src/frontend/:/home/frontend/
- - /home/frontend/node_modules
- - /home/frontend/apps/drive/node_modules
+ - ./src/frontend/node_modules:/home/frontend/node_modules
+ - ./src/frontend/apps/drive/node_modules:/home/frontend/apps/drive/node_modules
ports:
- "3000:3000"
@@ -224,6 +243,14 @@ services:
- --proxy=edge
- --hostname=http://localhost:8083
- --hostname-strict=false
+ - --health-enabled=true
+ - --metrics-enabled=true
+ healthcheck:
+ test: ['CMD-SHELL', 'exec 3<>/dev/tcp/localhost/9000; echo -e "GET /health/live HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n" >&3; grep "HTTP/1.1 200 OK" <&3']
+ start_period: 5s
+ interval: 1s
+ timeout: 2s
+ retries: 300
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
@@ -237,7 +264,9 @@ services:
ports:
- "8080:8080"
depends_on:
- - kc_postgresql
+ kc_postgresql:
+ condition: service_healthy
+ restart: true
networks:
- lasuite
- default