Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .devcontainer/devcontainer-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"features": {
"ghcr.io/devcontainers/features/git:1": {
"version": "1.3.5",
"resolved": "ghcr.io/devcontainers/features/git@sha256:27905dc196c01f77d6ba8709cb82eeaf330b3b108772e2f02d1cd0d826de1251",
"integrity": "sha256:27905dc196c01f77d6ba8709cb82eeaf330b3b108772e2f02d1cd0d826de1251"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "1.7.1",
"resolved": "ghcr.io/devcontainers/features/node@sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6",
"integrity": "sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6"
},
"ghcr.io/devcontainers/features/php:1": {
"version": "1.1.4",
"resolved": "ghcr.io/devcontainers/features/php@sha256:33409d4db3373dcd159dd7e9c1a8bcf2a508263fa53abf9c209873d8681f7f1c",
"integrity": "sha256:33409d4db3373dcd159dd7e9c1a8bcf2a508263fa53abf9c209873d8681f7f1c"
}
}
}
102 changes: 102 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"name": "Notetify",
"dockerComposeFile": [
"../docker-compose.dev.yaml",
"docker-compose.devcontainer.yaml"
],
"service": "devcontainer",
"workspaceFolder": "/workspaces/Notetify",
"remoteUser": "vscode",

"features": {
"ghcr.io/devcontainers/features/php:1": {
"version": "8.4",
"installComposer": true
},
"ghcr.io/devcontainers/features/node:1": {
"version": "22"
},
"ghcr.io/devcontainers/features/git:1": {}
},

"customizations": {
"vscode": {
"extensions": [
// PHP / Laravel
"bmewburn.vscode-intelephense-client",
"xdebug.php-debug",
"devsense.composer-php-vscode",
"devsense.profiler-php-vscode",
// TypeScript / React
"dsznajder.es7-react-js-snippets",
"burkeholland.simple-react-snippets",
"jawandarajbir.react-vscode-extension-pack",
"jasonnutter.search-node-modules",
"yoavbls.pretty-ts-errors",
"wix.vscode-import-cost",
// Tailwind / CSS
"bradlc.vscode-tailwindcss",
"zignd.html-css-class-completion",
// Linting / formatting
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"usernamehw.errorlens",
"streetsidesoftware.code-spell-checker",
// Editor quality-of-life
"formulahendry.auto-close-tag",
"formulahendry.auto-rename-tag",
"christian-kohler.path-intellisense",
"christian-kohler.npm-intellisense",
"aaron-bond.better-comments",
"oderwat.indent-rainbow",
"mikestead.dotenv",
"pflannery.vscode-versionlens",
// Git
"eamodio.gitlens",
"mhutchie.git-graph",
"donjayamanne.githistory",
"waderyan.gitblame",
"github.vscode-pull-request-github",
// Docker
"ms-azuretools.vscode-docker",
"ms-azuretools.vscode-containers",
// Testing
"vitest.explorer",
"ms-playwright.playwright",
// Misc
"redhat.vscode-yaml",
"pkief.material-icon-theme",
"github.github-vscode-theme",
"gruntfuggly.todo-tree",
"editorconfig.editorconfig",
"davidanson.vscode-markdownlint",
"yzhang.markdown-all-in-one",
"kisstkondoros.vscode-gutter-preview"
],
"settings": {
"php.validate.executablePath": "/usr/local/bin/php",
"php.executablePath": "/usr/local/bin/php",
"intelephense.environment.phpVersion": "8.4.0",
"js/ts.tsdk.path": "client/node_modules/typescript/lib",
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
}
}
}
},

"forwardPorts": [8000, 5173, 8025, 5341, 9001],
"portsAttributes": {
"8000": { "label": "API" },
"5173": { "label": "Client" },
"8025": { "label": "Mailpit" },
"5341": { "label": "Seq" },
"9001": { "label": "RustFS Console" }
},

"postCreateCommand": "bash .devcontainer/postCreate.sh",

"shutdownAction": "stopCompose"
}
24 changes: 24 additions & 0 deletions .devcontainer/docker-compose.devcontainer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
services:
devcontainer:
image: mcr.microsoft.com/devcontainers/base:ubuntu
container_name: notetify-devcontainer
networks:
- notetify-net
volumes:
- .:/workspaces/Notetify:cached
- pnpm-store:/home/vscode/.pnpm-store
command: sleep infinity
user: vscode
environment:
- COMPOSER_HOME=/home/vscode/.composer
deploy:
resources:
limits:
cpus: "2.0"
memory: 2g
reservations:
cpus: "0.25"
memory: 256m

volumes:
pnpm-store:
22 changes: 22 additions & 0 deletions .devcontainer/postCreate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -euo pipefail

cd /workspaces/Notetify

# Fix ownership of the pnpm store volume (created as root by Docker)
sudo chown -R vscode:vscode /home/vscode/.pnpm-store

# Keep the pnpm store inside the container, not the mounted workspace
pnpm config set store-dir /home/vscode/.pnpm-store

if [ ! -f .env ]; then
cp .env.example .env
echo ".env created from .env.example — fill in any required secrets before starting the stack."
fi

echo "✓ Dev environment ready."
echo " API: http://localhost:8000"
echo " Client: http://localhost:5173"
echo " Mailpit: http://localhost:8025"
echo " Seq: http://localhost:5341"
echo " RustFS: http://localhost:9001"
Loading