diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 000000000..3644d90c3 --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,117 @@ +# Paperless NGX Development Environment + +## Overview + +Welcome to the Paperless NGX development environment! This setup uses VSCode DevContainers to provide a consistent and seamless development experience. + +### What are DevContainers? + +DevContainers are a feature in VSCode that allows you to develop within a Docker container. This ensures that your development environment is consistent across different machines and setups. By defining a containerized environment, you can eliminate the "works on my machine" problem. + +### Advantages of DevContainers + +- **Consistency**: Same environment for all developers. +- **Isolation**: Separate development environment from your local machine. +- **Reproducibility**: Easily recreate the environment on any machine. +- **Pre-configured Tools**: Include all necessary tools and dependencies in the container. + +## DevContainer Setup + +The DevContainer configuration provides up all the necessary services for Paperless NGX, including: + +- Redis +- Gotenberg +- Tika + +Data is stored using Docker volumes to ensure persistence across container restarts. + +## Configuration Files + +The setup includes debugging configurations (`launch.json`) and tasks (`tasks.json`) to help you manage and debug various parts of the project: + +- **Backend Debugging:** + - `manage.py runserver` + - `manage.py document-consumer` + - `celery` +- **Maintenance Tasks:** + - Create superuser + - Run migrations + - Recreate virtual environment (`.venv` with pipenv) + - Compile frontend assets + +## Getting Started + +### Step 1: Running the DevContainer + +To start the DevContainer: + +1. Open VSCode. +2. Open the project folder. +3. Open the command palette: + - **Windows/Linux**: `Ctrl+Shift+P` + - **Mac**: `Cmd+Shift+P` +4. Type and select `Dev Containers: Rebuild and Reopen in Container`. + +VSCode will build and start the DevContainer environment. + +### Step 2: Initial Setup + +Once the DevContainer is up and running, perform the following steps: + +1. **Compile Frontend Assets**: + + - Open the command palette: + - **Windows/Linux**: `Ctrl+Shift+P` + - **Mac**: `Cmd+Shift+P` + - Select `Tasks: Run Task`. + - Choose `Frontend Compile`. + +2. **Run Database Migrations**: + + - Open the command palette: + - **Windows/Linux**: `Ctrl+Shift+P` + - **Mac**: `Cmd+Shift+P` + - Select `Tasks: Run Task`. + - Choose `Migrate Database`. + +3. **Create Superuser**: + - Open the command palette: + - **Windows/Linux**: `Ctrl+Shift+P` + - **Mac**: `Cmd+Shift+P` + - Select `Tasks: Run Task`. + - Choose `Create Superuser`. + +### Debugging and Running Services + +You can start and debug backend services either as debugging sessions via `launch.json` or as tasks. + +#### Using `launch.json`: + +1. Press `F5` or go to the **Run and Debug** view in VSCode. +2. Select the desired configuration: + - `Runserver` + - `Document Consumer` + - `Celery` + +#### Using Tasks: + +1. Open the command palette: + - **Windows/Linux**: `Ctrl+Shift+P` + - **Mac**: `Cmd+Shift+P` +2. Select `Tasks: Run Task`. +3. Choose the desired task: + - `Runserver` + - `Document Consumer` + - `Celery` + +### Additional Maintenance Tasks + +Additional tasks are available for common maintenance operations: + +- **Recreate .venv**: For setting up the virtual environment using pipenv. +- **Migrate Database**: To apply database migrations. +- **Create Superuser**: To create an admin user for the application. + +## Let's Get Started! + +Follow the steps above to get your development environment up and running. Happy coding!