Skip to content

Commit 49f19c2

Browse files
authored
Merge pull request #1257 from makeplane/stage-release
promote: stage release to production
2 parents 5c63292 + 9529ddb commit 49f19c2

File tree

251 files changed

+5003
-4517
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

251 files changed

+5003
-4517
lines changed

.env.example

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,68 @@
1-
# Replace with your instance Public IP
1+
# Frontend
2+
# Extra image domains that need to be added for Next Image
23
NEXT_PUBLIC_EXTRA_IMAGE_DOMAINS=
4+
# Google Client ID for Google OAuth
35
NEXT_PUBLIC_GOOGLE_CLIENTID=""
4-
NEXT_PUBLIC_GITHUB_APP_NAME=""
6+
# Github ID for Github OAuth
57
NEXT_PUBLIC_GITHUB_ID=""
8+
# Github App Name for GitHub Integration
9+
NEXT_PUBLIC_GITHUB_APP_NAME=""
10+
# Sentry DSN for error monitoring
611
NEXT_PUBLIC_SENTRY_DSN=""
12+
# Enable/Disable OAUTH - default 0 for selfhosted instance
713
NEXT_PUBLIC_ENABLE_OAUTH=0
14+
# Enable/Disable sentry
815
NEXT_PUBLIC_ENABLE_SENTRY=0
16+
# Enable/Disable session recording
917
NEXT_PUBLIC_ENABLE_SESSION_RECORDER=0
18+
# Enable/Disable event tracking
1019
NEXT_PUBLIC_TRACK_EVENTS=0
20+
# Slack for Slack Integration
1121
NEXT_PUBLIC_SLACK_CLIENT_ID=""
22+
23+
# Backend
24+
25+
# Database Settings
26+
PGUSER="plane"
27+
PGPASSWORD="plane"
28+
PGHOST="plane-db"
29+
PGDATABASE="plane"
30+
31+
# Email Settings
1232
EMAIL_HOST=""
1333
EMAIL_HOST_USER=""
1434
EMAIL_HOST_PASSWORD=""
35+
EMAIL_PORT=587
36+
EMAIL_FROM="Team Plane <[email protected]>"
37+
EMAIL_USE_TLS="1"
38+
39+
# AWS Settings
1540
AWS_REGION=""
16-
AWS_ACCESS_KEY_ID=""
17-
AWS_SECRET_ACCESS_KEY=""
18-
AWS_S3_BUCKET_NAME=""
41+
AWS_ACCESS_KEY_ID="access-key"
42+
AWS_SECRET_ACCESS_KEY="secret-key"
43+
AWS_S3_ENDPOINT_URL="http://plane-minio:9000"
44+
# Changing this requires change in the nginx.conf for uploads if using minio setup
45+
AWS_S3_BUCKET_NAME="uploads"
46+
# Maximum file upload limit
47+
FILE_SIZE_LIMIT=5242880
48+
49+
# GPT settings
1950
OPENAI_API_KEY=""
20-
GPT_ENGINE=""
51+
GPT_ENGINE=""
52+
53+
# Github
54+
GITHUB_CLIENT_SECRET="" # For fetching release notes
55+
56+
# Settings related to Docker
57+
DOCKERIZED=1
58+
# set to 1 If using the pre-configured minio setup
59+
USE_MINIO=1
60+
61+
# Nginx Configuration
62+
NGINX_PORT=80
63+
64+
# Default Creds
65+
DEFAULT_EMAIL="[email protected]"
66+
DEFAULT_PASSWORD="password123"
67+
68+
# Auto generated and Required that will be generated from setup.sh

Dockerfile

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
FROM node:18-alpine AS builder
22
RUN apk add --no-cache libc6-compat
3-
RUN apk update
43
# Set working directory
54
WORKDIR /app
65
ENV NEXT_PUBLIC_API_BASE_URL=http://NEXT_PUBLIC_API_BASE_URL_PLACEHOLDER
@@ -13,9 +12,7 @@ RUN turbo prune --scope=app --docker
1312
# Add lockfile and package.json's of isolated subworkspace
1413
FROM node:18-alpine AS installer
1514

16-
1715
RUN apk add --no-cache libc6-compat
18-
RUN apk update
1916
WORKDIR /app
2017
ARG NEXT_PUBLIC_API_BASE_URL=http://localhost:8000
2118
# First install the dependencies (as they change less often)
@@ -44,10 +41,12 @@ FROM python:3.11.1-alpine3.17 AS backend
4441
ENV PYTHONDONTWRITEBYTECODE 1
4542
ENV PYTHONUNBUFFERED 1
4643
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
44+
ENV DJANGO_SETTINGS_MODULE plane.settings.production
45+
ENV DOCKERIZED 1
4746

4847
WORKDIR /code
4948

50-
RUN apk --update --no-cache add \
49+
RUN apk --no-cache add \
5150
"libpq~=15" \
5251
"libxslt~=1.1" \
5352
"nodejs-current~=19" \
@@ -59,8 +58,8 @@ RUN apk --update --no-cache add \
5958

6059
COPY apiserver/requirements.txt ./
6160
COPY apiserver/requirements ./requirements
62-
RUN apk add libffi-dev
63-
RUN apk --update --no-cache --virtual .build-deps add \
61+
RUN apk add --no-cache libffi-dev
62+
RUN apk add --no-cache --virtual .build-deps \
6463
"bash~=5.2" \
6564
"g++~=12.2" \
6665
"gcc~=12.2" \
@@ -81,18 +80,13 @@ COPY apiserver/plane plane/
8180
COPY apiserver/templates templates/
8281

8382
COPY apiserver/gunicorn.config.py ./
84-
RUN apk --update --no-cache add "bash~=5.2"
83+
RUN apk --no-cache add "bash~=5.2"
8584
COPY apiserver/bin ./bin/
8685

8786
RUN chmod +x ./bin/takeoff ./bin/worker
8887
RUN chmod -R 777 /code
8988

9089
# Expose container port and run entry point script
91-
EXPOSE 8000
92-
EXPOSE 3000
93-
EXPOSE 80
94-
95-
9690

9791
WORKDIR /app
9892

@@ -126,9 +120,6 @@ COPY start.sh /usr/local/bin/
126120
RUN chmod +x /usr/local/bin/replace-env-vars.sh
127121
RUN chmod +x /usr/local/bin/start.sh
128122

123+
EXPOSE 80
129124

130125
CMD ["supervisord","-c","/code/supervisor.conf"]
131-
132-
133-
134-

README.md

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,18 @@
1515
</a>
1616
<img alt="Discord" src="https://img.shields.io/github/commit-activity/m/makeplane/plane?style=for-the-badge" />
1717
</p>
18-
<br />
18+
1919
<p>
20-
<a href="https://app.plane.so/" target="_blank">
20+
<a href="https://app.plane.so/#gh-light-mode-only" target="_blank">
2121
<img
22-
src="https://res.cloudinary.com/toolspacedev/image/upload/v1680599798/Plane/plane_1_1_tnb32j.png"
22+
src="https://ik.imagekit.io/killbluedog/Plane_Screen.png?updatedAt=1684942001069"
23+
alt="Plane Screens"
24+
width="100%"
25+
/>
26+
</a>
27+
<a href="https://app.plane.so/#gh-dark-mode-only" target="_blank">
28+
<img
29+
src="https://ik.imagekit.io/killbluedog/Plane_Screens_Dark_Mode.png?updatedAt=1684942388044"
2330
alt="Plane Screens"
2431
width="100%"
2532
/>
@@ -38,22 +45,18 @@ The easiest way to get started with Plane is by creating a [Plane Cloud](https:/
3845

3946
### Docker Compose Setup
4047

41-
- Clone the Repository
48+
- Clone the repository
4249

4350
```bash
4451
git clone https://github.com/makeplane/plane
45-
```
46-
47-
- Change Directory
48-
49-
```bash
5052
cd plane
53+
chmod +x setup.sh
5154
```
5255

5356
- Run setup.sh
5457

5558
```bash
56-
./setup.sh localhost
59+
./setup.sh http://localhost
5760
```
5861

5962
> If running in a cloud env replace localhost with public facing IP address of the VM
@@ -69,7 +72,7 @@ set +a
6972
- Run Docker compose up
7073

7174
```bash
72-
docker-compose -f docker-compose-hub.yml up
75+
docker compose up -d
7376
```
7477

7578
<strong>You can use the default email and password for your first login `[email protected]` and `password123`.</strong>
@@ -89,42 +92,63 @@ docker-compose -f docker-compose-hub.yml up
8992
## 📸 Screenshots
9093

9194
<p>
92-
<a href="https://app.plane.so/" target="_blank">
95+
<a href="https://plane.so" target="_blank">
9396
<img
94-
src="https://res.cloudinary.com/toolspacedev/image/upload/v1680601719/Plane/plane_2_iqao52.png"
95-
alt="Plane Issue Details"
97+
src="https://ik.imagekit.io/killbluedog/Plane_Views_Dark_Mode.png?updatedAt=1684943050275"
98+
alt="Plane Views"
9699
width="100%"
97100
/>
98101
</a>
99-
</p>
102+
</p>
100103
<p>
101-
<a href="https://app.plane.so/" target="_blank">
104+
<a href="https://plane.so" target="_blank">
102105
<img
103-
src="https://res.cloudinary.com/toolspacedev/image/upload/v1680604273/Plane/plane_5_1_nwsl3a.png"
106+
src="https://ik.imagekit.io/killbluedog/Plane_Issue_Detail_Dark_Mode.png?updatedAt=1684943050202"
107+
alt="Plane Issue Details"
108+
width="100%"
109+
/>
110+
</a>
111+
</p>
112+
<p>
113+
<a href="https://plane.so" target="_blank">
114+
<img
115+
src="https://ik.imagekit.io/killbluedog/Plane_Cycles___Modules_Dark_Mode.png?updatedAt=1684943050281"
104116
alt="Plane Cycles and Modules"
105117
width="100%"
106118
/>
107119
</a>
108-
</p>
109-
<p>
110-
<a href="https://app.plane.so/" target="_blank">
120+
</p>
121+
<p>
122+
<a href="https://plane.so" target="_blank">
111123
<img
112-
src="https://res.cloudinary.com/toolspacedev/image/upload/v1680601713/Plane/plane_4_cqm0g8.png"
113-
alt="Plane Quick Lists"
124+
src="https://ik.imagekit.io/killbluedog/Plane_Analytics_Dark_Mode.png?updatedAt=1684944596824"
125+
alt="Plane Analytics"
114126
width="100%"
115127
/>
116128
</a>
129+
</p>
130+
<p>
131+
<a href="https://plane.so" target="_blank">
132+
<img
133+
src="https://ik.imagekit.io/killbluedog/Plane_Pages_Dark_Mode.png?updatedAt=1684943050202"
134+
alt="Plane Pages"
135+
width="100%"
136+
/>
137+
</a>
138+
</p>
117139
</p>
118-
<p>
119-
<a href="https://app.plane.so/" target="_blank">
140+
<p>
141+
<a href="https://plane.so" target="_blank">
120142
<img
121-
src="https://res.cloudinary.com/toolspacedev/image/upload/v1680601712/Plane/plane_3_1_cu4fsc.png"
122-
alt="Plane Command K"
143+
src="https://ik.imagekit.io/killbluedog/Plane_Commad_K_Dark_Mode.png?updatedAt=1684943050312"
144+
alt="Plane Command Menu"
123145
width="100%"
124146
/>
125147
</a>
148+
</p>
126149
</p>
127150

151+
128152
## 📚Documentation
129153

130154
For full documentation, visit [docs.plane.so](https://docs.plane.so/)

apiserver/Dockerfile.api

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ ENV PIP_DISABLE_PIP_VERSION_CHECK=1
77

88
WORKDIR /code
99

10-
RUN apk --update --no-cache add \
10+
RUN apk --no-cache add \
1111
"libpq~=15" \
1212
"libxslt~=1.1" \
1313
"nodejs-current~=19" \
1414
"xmlsec~=1.2"
1515

1616
COPY requirements.txt ./
1717
COPY requirements ./requirements
18-
RUN apk add libffi-dev
19-
RUN apk --update --no-cache --virtual .build-deps add \
18+
RUN apk add --no-cache libffi-dev
19+
RUN apk add --no-cache --virtual .build-deps \
2020
"bash~=5.2" \
2121
"g++~=12.2" \
2222
"gcc~=12.2" \
@@ -46,7 +46,7 @@ COPY templates templates/
4646

4747
COPY gunicorn.config.py ./
4848
USER root
49-
RUN apk --update --no-cache add "bash~=5.2"
49+
RUN apk --no-cache add "bash~=5.2"
5050
COPY ./bin ./bin/
5151

5252
RUN chmod +x ./bin/takeoff ./bin/worker

apiserver/plane/api/serializers/issue.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# Django imports
2+
from django.utils import timezone
3+
14
# Third Party imports
25
from rest_framework import serializers
36

@@ -251,6 +254,7 @@ def update(self, instance, validated_data):
251254
batch_size=10,
252255
)
253256

257+
instance.updated_at = timezone.now()
254258
return super().update(instance, validated_data)
255259

256260

apiserver/plane/api/serializers/user.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ class Meta:
2525
]
2626
extra_kwargs = {"password": {"write_only": True}}
2727

28+
# If the user has already filled first name or last name then he is onboarded
29+
def get_is_onboarded(self, obj):
30+
return bool(obj.first_name) or bool(obj.last_name)
31+
2832

2933
class UserLiteSerializer(BaseSerializer):
3034
class Meta:

apiserver/plane/api/serializers/workspace.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class Meta:
4444

4545
class WorkSpaceMemberInviteSerializer(BaseSerializer):
4646
workspace = WorkSpaceSerializer(read_only=True)
47+
total_members = serializers.IntegerField(read_only=True)
48+
created_by_detail = UserLiteSerializer(read_only=True, source="created_by")
4749

4850
class Meta:
4951
model = WorkspaceMemberInvite

0 commit comments

Comments
 (0)