mirror of
https://github.com/makeplane/plane
synced 2025-08-07 19:59:33 +00:00
Compare commits
6 Commits
sequential
...
dev-docker
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd9cebc7af | ||
|
|
b77ddf9c95 | ||
|
|
4133798a81 | ||
|
|
761aefa73b | ||
|
|
fa403ef4ae | ||
|
|
3ce0aa8ebc |
@@ -4,7 +4,7 @@ module.exports = {
|
|||||||
extends: ["custom"],
|
extends: ["custom"],
|
||||||
settings: {
|
settings: {
|
||||||
next: {
|
next: {
|
||||||
rootDir: ["apps/*"],
|
rootDir: ["web/", "deploy/"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
85
app.json
85
app.json
@@ -1,85 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Plane",
|
|
||||||
"description": "Plane helps you track your issues, epics, and product roadmaps.",
|
|
||||||
"repository": "http://github.com/makeplane/plane",
|
|
||||||
"logo": "https://avatars.githubusercontent.com/u/115727700?s=200&v=4",
|
|
||||||
"website": "https://plane.so/",
|
|
||||||
"success_url": "/",
|
|
||||||
"stack": "heroku-22",
|
|
||||||
"keywords": [
|
|
||||||
"plane",
|
|
||||||
"project management",
|
|
||||||
"django",
|
|
||||||
"next"
|
|
||||||
],
|
|
||||||
"addons": [
|
|
||||||
"heroku-postgresql:mini",
|
|
||||||
"heroku-redis:mini"
|
|
||||||
],
|
|
||||||
"buildpacks": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/heroku/heroku-buildpack-python.git"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/heroku/heroku-buildpack-nodejs#v176"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"env": {
|
|
||||||
"EMAIL_HOST": {
|
|
||||||
"description": "Email host to send emails from",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"EMAIL_HOST_USER": {
|
|
||||||
"description": "Email host to send emails from",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"EMAIL_HOST_PASSWORD": {
|
|
||||||
"description": "Email host to send emails from",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"EMAIL_FROM": {
|
|
||||||
"description": "Email Sender",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"EMAIL_PORT": {
|
|
||||||
"description": "The default Email PORT to use",
|
|
||||||
"value": "587"
|
|
||||||
},
|
|
||||||
"AWS_REGION": {
|
|
||||||
"description": "AWS Region to use for S3",
|
|
||||||
"value": "false"
|
|
||||||
},
|
|
||||||
"AWS_ACCESS_KEY_ID": {
|
|
||||||
"description": "AWS Access Key ID to use for S3",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"AWS_SECRET_ACCESS_KEY": {
|
|
||||||
"description": "AWS Secret Access Key to use for S3",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"AWS_S3_BUCKET_NAME": {
|
|
||||||
"description": "AWS Bucket Name to use for S3",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"SENTRY_DSN": {
|
|
||||||
"description": "",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"WEB_URL": {
|
|
||||||
"description": "Web URL for Plane this will be used for redirections in the emails",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"GITHUB_CLIENT_SECRET": {
|
|
||||||
"description": "Github Client Secret",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"NEXT_PUBLIC_API_BASE_URL": {
|
|
||||||
"description": "Next Public API Base URL",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"SECRET_KEY": {
|
|
||||||
"description": "Django Secret Key",
|
|
||||||
"value": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
extends: ["custom"],
|
|
||||||
rules: {
|
|
||||||
"@next/next/no-img-element": "off",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
FROM node:18-alpine
|
|
||||||
RUN apk add --no-cache libc6-compat
|
|
||||||
# Set working directory
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
RUN yarn global add turbo
|
|
||||||
RUN yarn install
|
|
||||||
EXPOSE 3000
|
|
||||||
CMD ["yarn","dev"]
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "tsconfig/nextjs.json",
|
|
||||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
|
|
||||||
"exclude": ["node_modules"],
|
|
||||||
"compilerOptions": {
|
|
||||||
"baseUrl": ".",
|
|
||||||
"jsx": "preserve"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# Deploy the Plane image
|
|
||||||
FROM makeplane/plane
|
|
||||||
|
|
||||||
LABEL maintainer="engineering@plane.so"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
build:
|
|
||||||
docker:
|
|
||||||
web: deploy/heroku/Dockerfile
|
|
||||||
14
package.json
14
package.json
@@ -1,22 +1,16 @@
|
|||||||
{
|
{
|
||||||
|
"name": "plane",
|
||||||
"repository": "https://github.com/makeplane/plane.git",
|
"repository": "https://github.com/makeplane/plane.git",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"apps/*",
|
"web/",
|
||||||
|
"space/",
|
||||||
"packages/*"
|
"packages/*"
|
||||||
],
|
],
|
||||||
"scripts": {
|
|
||||||
"build": "turbo run build",
|
|
||||||
"dev": "turbo run dev",
|
|
||||||
"start": "turbo run start",
|
|
||||||
"lint": "turbo run lint",
|
|
||||||
"clean": "turbo run clean"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint-config-custom": "*",
|
"eslint-config-custom": "*",
|
||||||
"prettier": "latest",
|
"prettier": "latest"
|
||||||
"turbo": "latest"
|
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@1.22.19"
|
"packageManager": "yarn@1.22.19"
|
||||||
}
|
}
|
||||||
|
|||||||
56
space/Dockerfile.space
Normal file
56
space/Dockerfile.space
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
FROM node:18-alpine AS base
|
||||||
|
|
||||||
|
# Install dependencies only when needed
|
||||||
|
FROM base AS deps
|
||||||
|
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
|
||||||
|
RUN apk add --no-cache libc6-compat
|
||||||
|
WORKDIR /space
|
||||||
|
|
||||||
|
# Install dependencies based on the preferred package manager
|
||||||
|
COPY package.json yarn.lock* ./
|
||||||
|
RUN yarn
|
||||||
|
|
||||||
|
|
||||||
|
# Rebuild the source code only when needed
|
||||||
|
FROM base AS builder
|
||||||
|
WORKDIR /space
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
COPY --from=deps /space/node_modules ./node_modules
|
||||||
|
COPY --from=deps /space/yarn.lock .
|
||||||
|
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
RUN yarn build
|
||||||
|
|
||||||
|
# If using npm comment out above and use below instead
|
||||||
|
# RUN npm run build
|
||||||
|
|
||||||
|
# Production image, copy all the files and run next
|
||||||
|
FROM base AS runner
|
||||||
|
WORKDIR /space
|
||||||
|
|
||||||
|
ENV NODE_ENV production
|
||||||
|
# Uncomment the following line in case you want to disable telemetry during runtime.
|
||||||
|
# ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
RUN addgroup --system --gid 1001 nodejs
|
||||||
|
RUN adduser --system --uid 1001 nextjs
|
||||||
|
|
||||||
|
COPY --from=builder /space/public ./public
|
||||||
|
|
||||||
|
# Automatically leverage output traces to reduce image size
|
||||||
|
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||||
|
COPY --from=builder --chown=nextjs:nodejs /space/.next/standalone ./
|
||||||
|
COPY --from=builder --chown=nextjs:nodejs /space/.next/static ./.next/static
|
||||||
|
|
||||||
|
USER nextjs
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
ENV PORT 3000
|
||||||
|
# set hostname to localhost
|
||||||
|
ENV HOSTNAME "0.0.0.0"
|
||||||
|
|
||||||
|
CMD ["node", "space/server.js"]
|
||||||
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 566 B After Width: | Height: | Size: 566 B |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
51
turbo.json
51
turbo.json
@@ -1,51 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://turbo.build/schema.json",
|
|
||||||
"globalEnv": [
|
|
||||||
"NEXT_PUBLIC_GITHUB_ID",
|
|
||||||
"NEXT_PUBLIC_GOOGLE_CLIENTID",
|
|
||||||
"NEXT_PUBLIC_API_BASE_URL",
|
|
||||||
"NEXT_PUBLIC_DEPLOY_URL",
|
|
||||||
"API_BASE_URL",
|
|
||||||
"NEXT_PUBLIC_SENTRY_DSN",
|
|
||||||
"SENTRY_AUTH_TOKEN",
|
|
||||||
"NEXT_PUBLIC_SENTRY_ENVIRONMENT",
|
|
||||||
"NEXT_PUBLIC_GITHUB_APP_NAME",
|
|
||||||
"NEXT_PUBLIC_ENABLE_SENTRY",
|
|
||||||
"NEXT_PUBLIC_ENABLE_OAUTH",
|
|
||||||
"NEXT_PUBLIC_UNSPLASH_ACCESS",
|
|
||||||
"NEXT_PUBLIC_UNSPLASH_ENABLED",
|
|
||||||
"NEXT_PUBLIC_TRACK_EVENTS",
|
|
||||||
"TRACKER_ACCESS_KEY",
|
|
||||||
"NEXT_PUBLIC_CRISP_ID",
|
|
||||||
"NEXT_PUBLIC_ENABLE_SESSION_RECORDER",
|
|
||||||
"NEXT_PUBLIC_SESSION_RECORDER_KEY",
|
|
||||||
"NEXT_PUBLIC_EXTRA_IMAGE_DOMAINS",
|
|
||||||
"NEXT_PUBLIC_SLACK_CLIENT_ID",
|
|
||||||
"NEXT_PUBLIC_SLACK_CLIENT_SECRET",
|
|
||||||
"NEXT_PUBLIC_SUPABASE_URL",
|
|
||||||
"NEXT_PUBLIC_SUPABASE_ANON_KEY",
|
|
||||||
"NEXT_PUBLIC_PLAUSIBLE_DOMAIN"
|
|
||||||
],
|
|
||||||
"pipeline": {
|
|
||||||
"build": {
|
|
||||||
"dependsOn": ["^build"],
|
|
||||||
"outputs": [".next/**", "dist/**"]
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"dependsOn": ["^build"],
|
|
||||||
"outputs": []
|
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"outputs": []
|
|
||||||
},
|
|
||||||
"dev": {
|
|
||||||
"cache": false
|
|
||||||
},
|
|
||||||
"start": {
|
|
||||||
"cache": false
|
|
||||||
},
|
|
||||||
"clean": {
|
|
||||||
"cache": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
16
web/.eslintrc.js
Normal file
16
web/.eslintrc.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: ["next", "prettier"],
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
plugins: ["react", "@typescript-eslint"],
|
||||||
|
rules: {
|
||||||
|
"@next/next/no-html-link-for-pages": "off",
|
||||||
|
"react/jsx-key": "off",
|
||||||
|
"prefer-const": "error",
|
||||||
|
"no-irregular-whitespace": "error",
|
||||||
|
"no-trailing-spaces": "error",
|
||||||
|
"no-duplicate-imports": "error",
|
||||||
|
"arrow-body-style": ["error", "as-needed"],
|
||||||
|
"react/self-closing-comp": ["error", { component: true, html: true }],
|
||||||
|
"@next/next/no-img-element": "off",
|
||||||
|
},
|
||||||
|
};
|
||||||
60
web/Dockerfile.web
Normal file
60
web/Dockerfile.web
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
FROM node:18-alpine AS base
|
||||||
|
|
||||||
|
# Install dependencies only when needed
|
||||||
|
FROM base AS deps
|
||||||
|
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
|
||||||
|
RUN apk add --no-cache libc6-compat
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install dependencies based on the preferred package manager
|
||||||
|
COPY package.json yarn.lock .npmrc ./
|
||||||
|
RUN \
|
||||||
|
if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
|
||||||
|
elif [ -f package-lock.json ]; then npm ci; \
|
||||||
|
else echo "Lockfile not found." && exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Rebuild the source code only when needed
|
||||||
|
FROM base AS builder
|
||||||
|
RUN apk add --no-cache libc6-compat
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
COPY --from=deps /app/node_modules ./node_modules
|
||||||
|
COPY --from=deps /app/yarn.lock .
|
||||||
|
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
RUN yarn build
|
||||||
|
|
||||||
|
# If using npm comment out above and use below instead
|
||||||
|
# RUN npm run build
|
||||||
|
|
||||||
|
# Production image, copy all the files and run next
|
||||||
|
FROM base AS runner
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
ENV NODE_ENV production
|
||||||
|
# Uncomment the following line in case you want to disable telemetry during runtime.
|
||||||
|
# ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
RUN addgroup --system --gid 1001 nodejs
|
||||||
|
RUN adduser --system --uid 1001 nextjs
|
||||||
|
|
||||||
|
COPY --from=builder /app/public ./public
|
||||||
|
|
||||||
|
# Automatically leverage output traces to reduce image size
|
||||||
|
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||||
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||||
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||||
|
|
||||||
|
USER nextjs
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
ENV PORT 3000
|
||||||
|
# set hostname to localhost
|
||||||
|
ENV HOSTNAME "0.0.0.0"
|
||||||
|
|
||||||
|
CMD ["node", "app/server.js"]
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user