diff --git a/.eslintrc.js b/.eslintrc.js index 463c86901c0..c229c095269 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,7 +4,7 @@ module.exports = { extends: ["custom"], settings: { next: { - rootDir: ["apps/*"], + rootDir: ["web/", "space/"], }, }, }; diff --git a/.github/workflows/Build_Test_Pull_Request.yml b/.github/workflows/Build_Test_Pull_Request.yml index 0dbca646a88..438bdbef39d 100644 --- a/.github/workflows/Build_Test_Pull_Request.yml +++ b/.github/workflows/Build_Test_Pull_Request.yml @@ -29,9 +29,9 @@ jobs: apiserver: - apiserver/** web: - - apps/app/** + - web/** deploy: - - apps/space/** + - space/** - name: Setup .npmrc for repository run: | @@ -40,15 +40,15 @@ jobs: - name: Build Plane's Main App if: steps.changed-files.outputs.web_any_changed == 'true' run: | - mv ./.npmrc ./apps/app - cd apps/app + mv ./.npmrc ./web + cd web yarn yarn build - name: Build Plane's Deploy App if: steps.changed-files.outputs.deploy_any_changed == 'true' run: | - cd apps/space + cd space yarn yarn build diff --git a/.github/workflows/Update_Docker_Images.yml b/.github/workflows/Update_Docker_Images.yml index 8e27e098f98..57dbb4a6717 100644 --- a/.github/workflows/Update_Docker_Images.yml +++ b/.github/workflows/Update_Docker_Images.yml @@ -62,7 +62,7 @@ jobs: uses: docker/build-push-action@v4.0.0 with: context: . - file: ./apps/app/Dockerfile.web + file: ./web/Dockerfile.web platforms: linux/amd64 tags: ${{ steps.metaFrontend.outputs.tags }} push: true @@ -88,7 +88,7 @@ jobs: uses: docker/build-push-action@v4.0.0 with: context: . - file: ./apps/space/Dockerfile.space + file: ./space/Dockerfile.space platforms: linux/amd64 push: true tags: ${{ steps.metaDeploy.outputs.tags }} diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 00000000000..f2bf4259fd8 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,11 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) +# and commit this file to your remote git repository to share the goodness with others. + +# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart + +tasks: + - init: yarn install && yarn run build + command: yarn run start + + diff --git a/.husky/pre-push b/.husky/pre-push index 1feec0de684..0e7d3240bf4 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -3,21 +3,21 @@ changed_files=$(git diff --name-only HEAD~1) -app_changed=$(echo "$changed_files" | grep -E '^apps/app/' || true) -space_changed=$(echo "$changed_files" | grep -E '^apps/space/' || true) -echo $app_changed +web_changed=$(echo "$changed_files" | grep -E '^web/' || true) +space_changed=$(echo "$changed_files" | grep -E '^space/' || true) +echo $web_changed echo $space_changed -if [ -n "$app_changed" ] && [ -n "$space_changed" ]; then - echo "Changes detected in both apps/app and apps/space. Building..." +if [ -n "$web_changed" ] && [ -n "$space_changed" ]; then + echo "Changes detected in both web and space. Building..." yarn run lint yarn run build -elif [ -n "$app_changed" ]; then - echo "Changes detected in apps/app. Building..." - yarn run lint --filter=app - yarn run build --filter=app +elif [ -n "$web_changed" ]; then + echo "Changes detected in web app. Building..." + yarn run lint --filter=web + yarn run build --filter=web elif [ -n "$space_changed" ]; then - echo "Changes detected in apps/space. Building..." + echo "Changes detected in space app. Building..." yarn run lint --filter=space yarn run build --filter=space fi diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 294dc1c0eb9..cd74b612133 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community. Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or +- The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an +standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within @@ -125,4 +125,4 @@ enforcement ladder](/~https://github.com/mozilla/diversity). For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. \ No newline at end of file +https://www.contributor-covenant.org/translations. diff --git a/README.md b/README.md index 2bc2764f3bc..a5a7ddd87d8 100644 --- a/README.md +++ b/README.md @@ -35,12 +35,10 @@ Meet [Plane](https://plane.so). An open-source software development tool to manage issues, sprints, and product roadmaps with peace of mind 🧘‍♀️. - > Plane is still in its early days, not everything will be perfect yet, and hiccups may happen. Please let us know of any suggestions, ideas, or bugs that you encounter on our [Discord](https://discord.com/invite/A92xrEGCge) or GitHub issues, and we will use your feedback to improve on our upcoming releases. The easiest way to get started with Plane is by creating a [Plane Cloud](https://app.plane.so) account. Plane Cloud offers a hosted solution for Plane. If you prefer to self-host Plane, please refer to our [deployment documentation](https://docs.plane.so/self-hosting). - ## ⚡️ Quick start with Docker Compose ### Docker Compose Setup @@ -56,7 +54,7 @@ chmod +x setup.sh - Run setup.sh ```bash -./setup.sh http://localhost +./setup.sh http://localhost ``` > If running in a cloud env replace localhost with public facing IP address of the VM @@ -65,31 +63,32 @@ chmod +x setup.sh Visit [Tiptap Pro](https://collab.tiptap.dev/pro-extensions) and signup (it is free). - Create a **`.npmrc`** file, copy the following and replace your registry token generated from Tiptap Pro. + Create a **`.npmrc`** file, copy the following and replace your registry token generated from Tiptap Pro. ``` @tiptap-pro:registry=https://registry.tiptap.dev/ //registry.tiptap.dev/:_authToken=YOUR_REGISTRY_TOKEN ``` + - Run Docker compose up ```bash docker compose up -d ``` -You can use the default email and password for your first login `captain@plane.so` and `password123`. +You can use the default email and password for your first login `captain@plane.so` and `password123`. ## 🚀 Features -* **Issue Planning and Tracking**: Quickly create issues and add details using a powerful rich text editor that supports file uploads. Add sub-properties and references to issues for better organization and tracking. -* **Issue Attachments**: Collaborate effectively by attaching files to issues, making it easy for your team to find and share important project-related documents. -* **Layouts**: Customize your project view with your preferred layout - choose from List, Kanban, or Calendar to visualize your project in a way that makes sense to you. -* **Cycles**: Plan sprints with Cycles to keep your team on track and productive. Gain insights into your project's progress with burn-down charts and other useful features. -* **Modules**: Break down your large projects into smaller, more manageable modules. Assign modules between teams to easily track and plan your project's progress. -* **Views**: Create custom filters to display only the issues that matter to you. Save and share your filters in just a few clicks. -* **Pages**: Plane pages function as an AI-powered notepad, allowing you to easily document issues, cycle plans, and module details, and then synchronize them with your issues. -* **Command K**: Enjoy a better user experience with the new Command + K menu. Easily manage and navigate through your projects from one convenient location. -* **GitHub Sync**: Streamline your planning process by syncing your GitHub issues with Plane. Keep all your issues in one place for better tracking and collaboration. +- **Issue Planning and Tracking**: Quickly create issues and add details using a powerful rich text editor that supports file uploads. Add sub-properties and references to issues for better organization and tracking. +- **Issue Attachments**: Collaborate effectively by attaching files to issues, making it easy for your team to find and share important project-related documents. +- **Layouts**: Customize your project view with your preferred layout - choose from List, Kanban, or Calendar to visualize your project in a way that makes sense to you. +- **Cycles**: Plan sprints with Cycles to keep your team on track and productive. Gain insights into your project's progress with burn-down charts and other useful features. +- **Modules**: Break down your large projects into smaller, more manageable modules. Assign modules between teams to easily track and plan your project's progress. +- **Views**: Create custom filters to display only the issues that matter to you. Save and share your filters in just a few clicks. +- **Pages**: Plane pages function as an AI-powered notepad, allowing you to easily document issues, cycle plans, and module details, and then synchronize them with your issues. +- **Command K**: Enjoy a better user experience with the new Command + K menu. Easily manage and navigate through your projects from one convenient location. +- **GitHub Sync**: Streamline your planning process by syncing your GitHub issues with Plane. Keep all your issues in one place for better tracking and collaboration. ## 📸 Screenshots @@ -150,7 +149,6 @@ docker compose up -d

- ## 📚Documentation For full documentation, visit [docs.plane.so](https://docs.plane.so/) diff --git a/apps/app/components/icons/blocked-icon.tsx b/apps/app/components/icons/blocked-icon.tsx deleted file mode 100644 index ee0024fa093..00000000000 --- a/apps/app/components/icons/blocked-icon.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const BlockedIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - - ); diff --git a/apps/app/components/icons/blocker-icon.tsx b/apps/app/components/icons/blocker-icon.tsx deleted file mode 100644 index 093728cd8e5..00000000000 --- a/apps/app/components/icons/blocker-icon.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const BlockerIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - - ); diff --git a/apps/app/components/icons/bolt-icon.tsx b/apps/app/components/icons/bolt-icon.tsx deleted file mode 100644 index 569767aa52c..00000000000 --- a/apps/app/components/icons/bolt-icon.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const BoltIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/cancel-icon.tsx b/apps/app/components/icons/cancel-icon.tsx deleted file mode 100644 index c3170ca329d..00000000000 --- a/apps/app/components/icons/cancel-icon.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const CancelIcon: React.FC = ({ width, height, className }) => ( - - - - ); diff --git a/apps/app/components/icons/clipboard-icon.tsx b/apps/app/components/icons/clipboard-icon.tsx deleted file mode 100644 index c96aa3fde30..00000000000 --- a/apps/app/components/icons/clipboard-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const ClipboardIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/comment-icon.tsx b/apps/app/components/icons/comment-icon.tsx deleted file mode 100644 index c60cca4a609..00000000000 --- a/apps/app/components/icons/comment-icon.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const CommentIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/completed-cycle-icon.tsx b/apps/app/components/icons/completed-cycle-icon.tsx deleted file mode 100644 index 615fbcb9a9e..00000000000 --- a/apps/app/components/icons/completed-cycle-icon.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const CompletedCycleIcon: React.FC = ({ - width = "24", - height = "24", - className, - color = "black", -}) => ( - - - - ); diff --git a/apps/app/components/icons/current-cycle-icon.tsx b/apps/app/components/icons/current-cycle-icon.tsx deleted file mode 100644 index 2b07edf2e6d..00000000000 --- a/apps/app/components/icons/current-cycle-icon.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const CurrentCycleIcon: React.FC = ({ - width = "24", - height = "24", - className, - color = "black", -}) => ( - - - - ); diff --git a/apps/app/components/icons/edit-icon.tsx b/apps/app/components/icons/edit-icon.tsx deleted file mode 100644 index c4e012e4dfe..00000000000 --- a/apps/app/components/icons/edit-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const EditIcon: React.FC = ({ width, height, className }) => ( - - - - ); diff --git a/apps/app/components/icons/ellipsis-horizontal-icon.tsx b/apps/app/components/icons/ellipsis-horizontal-icon.tsx deleted file mode 100644 index cfdd66751e7..00000000000 --- a/apps/app/components/icons/ellipsis-horizontal-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const EllipsisHorizontalIcon: React.FC = ({ width, height, className }) => ( - - - - ); diff --git a/apps/app/components/icons/lock-icon.tsx b/apps/app/components/icons/lock-icon.tsx deleted file mode 100644 index d0c9cffb74b..00000000000 --- a/apps/app/components/icons/lock-icon.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const LockIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/menu-icon.tsx b/apps/app/components/icons/menu-icon.tsx deleted file mode 100644 index 0a8816b751b..00000000000 --- a/apps/app/components/icons/menu-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const MenuIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/plus-icon.tsx b/apps/app/components/icons/plus-icon.tsx deleted file mode 100644 index 0b958a21d67..00000000000 --- a/apps/app/components/icons/plus-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const PlusIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/question-mark-circle-icon.tsx b/apps/app/components/icons/question-mark-circle-icon.tsx deleted file mode 100644 index 2cdf9d8e575..00000000000 --- a/apps/app/components/icons/question-mark-circle-icon.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const QuestionMarkCircleIcon: React.FC = ({ - width = "24", - height = "24", - className, -}) => ( - - - - ); diff --git a/apps/app/components/icons/signal-cellular-icon.tsx b/apps/app/components/icons/signal-cellular-icon.tsx deleted file mode 100644 index 0e785d95867..00000000000 --- a/apps/app/components/icons/signal-cellular-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const SignalCellularIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/tag-icon.tsx b/apps/app/components/icons/tag-icon.tsx deleted file mode 100644 index a17d4c1e400..00000000000 --- a/apps/app/components/icons/tag-icon.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const TagIcon: React.FC = ({ - width = "24", - height = "24", - className, - color = "black", -}) => ( - - - - ); diff --git a/apps/app/components/icons/transfer-icon.tsx b/apps/app/components/icons/transfer-icon.tsx deleted file mode 100644 index 176c38b2908..00000000000 --- a/apps/app/components/icons/transfer-icon.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const TransferIcon: React.FC = ({ width, height, className, color }) => ( - - - - ); diff --git a/apps/app/components/icons/tune-icon.tsx b/apps/app/components/icons/tune-icon.tsx deleted file mode 100644 index 1221b297679..00000000000 --- a/apps/app/components/icons/tune-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const TuneIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/upcoming-cycle-icon.tsx b/apps/app/components/icons/upcoming-cycle-icon.tsx deleted file mode 100644 index 52961e15ea8..00000000000 --- a/apps/app/components/icons/upcoming-cycle-icon.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const UpcomingCycleIcon: React.FC = ({ - width = "24", - height = "24", - className, - color = "black", -}) => ( - - - - ); diff --git a/apps/app/components/icons/user-icon-circle.tsx b/apps/app/components/icons/user-icon-circle.tsx deleted file mode 100644 index 8bae3413367..00000000000 --- a/apps/app/components/icons/user-icon-circle.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const UserCircleIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/icons/user-icon.tsx b/apps/app/components/icons/user-icon.tsx deleted file mode 100644 index c0408dad36e..00000000000 --- a/apps/app/components/icons/user-icon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -import type { Props } from "./types"; - -export const UserIcon: React.FC = ({ width = "24", height = "24", className }) => ( - - - - ); diff --git a/apps/app/components/integration/slack/index.ts b/apps/app/components/integration/slack/index.ts deleted file mode 100644 index 3bd1c965c64..00000000000 --- a/apps/app/components/integration/slack/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./select-channel"; \ No newline at end of file diff --git a/apps/app/components/tiptap/table-menu/InsertBottomTableIcon.tsx b/apps/app/components/tiptap/table-menu/InsertBottomTableIcon.tsx deleted file mode 100644 index b3f99855e7b..00000000000 --- a/apps/app/components/tiptap/table-menu/InsertBottomTableIcon.tsx +++ /dev/null @@ -1,15 +0,0 @@ -const InsertBottomTableIcon = (props: any) => ( - - - -) - -export default InsertBottomTableIcon; diff --git a/apps/app/components/tiptap/table-menu/InsertLeftTableIcon.tsx b/apps/app/components/tiptap/table-menu/InsertLeftTableIcon.tsx deleted file mode 100644 index 8a92705d8d9..00000000000 --- a/apps/app/components/tiptap/table-menu/InsertLeftTableIcon.tsx +++ /dev/null @@ -1,14 +0,0 @@ -const InsertLeftTableIcon = (props: any) => ( - - - -) -export default InsertLeftTableIcon diff --git a/apps/app/components/tiptap/table-menu/InsertRightTableIcon.tsx b/apps/app/components/tiptap/table-menu/InsertRightTableIcon.tsx deleted file mode 100644 index 04348ece18c..00000000000 --- a/apps/app/components/tiptap/table-menu/InsertRightTableIcon.tsx +++ /dev/null @@ -1,15 +0,0 @@ -const InsertRightTableIcon = (props: any) => ( - - - -) - -export default InsertRightTableIcon diff --git a/apps/app/components/tiptap/table-menu/InsertTopTableIcon.tsx b/apps/app/components/tiptap/table-menu/InsertTopTableIcon.tsx deleted file mode 100644 index 14036f9981b..00000000000 --- a/apps/app/components/tiptap/table-menu/InsertTopTableIcon.tsx +++ /dev/null @@ -1,14 +0,0 @@ -const InsertTopTableIcon = (props: any) => ( - - - -) -export default InsertTopTableIcon; diff --git a/apps/space/public/logos/github-black.png b/apps/space/public/logos/github-black.png deleted file mode 100644 index 7a7a82474ff..00000000000 Binary files a/apps/space/public/logos/github-black.png and /dev/null differ diff --git a/apps/space/public/logos/github-square.png b/apps/space/public/logos/github-square.png deleted file mode 100644 index 527ba79f258..00000000000 Binary files a/apps/space/public/logos/github-square.png and /dev/null differ diff --git a/apps/space/public/logos/github-white.png b/apps/space/public/logos/github-white.png deleted file mode 100644 index dbb2b578cb6..00000000000 Binary files a/apps/space/public/logos/github-white.png and /dev/null differ diff --git a/apps/space/public/plane-logo.webp b/apps/space/public/plane-logo.webp deleted file mode 100644 index 52e7c98da21..00000000000 Binary files a/apps/space/public/plane-logo.webp and /dev/null differ diff --git a/apps/space/public/plane-logos/blue-without-text.png b/apps/space/public/plane-logos/blue-without-text.png deleted file mode 100644 index ea94aec7920..00000000000 Binary files a/apps/space/public/plane-logos/blue-without-text.png and /dev/null differ diff --git a/apps/space/tsconfig.json b/apps/space/tsconfig.json deleted file mode 100644 index 5404bd9fbf9..00000000000 --- a/apps/space/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "baseUrl": ".", - "paths": {}, - "plugins": [{ "name": "next" }] - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "server.js", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} diff --git a/docker-compose.yml b/docker-compose.yml index f69f5be1dde..4fe7f4ab715 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,176 +1,194 @@ version: "3.8" -x-api-and-worker-env: - &api-and-worker-env - DEBUG: ${DEBUG} - SENTRY_DSN: ${SENTRY_DSN} - DJANGO_SETTINGS_MODULE: plane.settings.production - DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE} - REDIS_URL: redis://plane-redis:6379/ - EMAIL_HOST: ${EMAIL_HOST} - EMAIL_HOST_USER: ${EMAIL_HOST_USER} - EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD} - EMAIL_PORT: ${EMAIL_PORT} - EMAIL_FROM: ${EMAIL_FROM} - EMAIL_USE_TLS: ${EMAIL_USE_TLS} - EMAIL_USE_SSL: ${EMAIL_USE_SSL} - AWS_REGION: ${AWS_REGION} - AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} - AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME} - AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL} - FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT} - WEB_URL: ${WEB_URL} - GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET} - DISABLE_COLLECTSTATIC: 1 - DOCKERIZED: 1 - OPENAI_API_BASE: ${OPENAI_API_BASE} - OPENAI_API_KEY: ${OPENAI_API_KEY} - GPT_ENGINE: ${GPT_ENGINE} - SECRET_KEY: ${SECRET_KEY} - DEFAULT_EMAIL: ${DEFAULT_EMAIL} - DEFAULT_PASSWORD: ${DEFAULT_PASSWORD} - USE_MINIO: ${USE_MINIO} - ENABLE_SIGNUP: ${ENABLE_SIGNUP} +x-api-and-worker-env: &api-and-worker-env + DEBUG: ${DEBUG} + SENTRY_DSN: ${SENTRY_DSN} + DJANGO_SETTINGS_MODULE: plane.settings.production + DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE} + REDIS_URL: redis://plane-redis:6379/ + EMAIL_HOST: ${EMAIL_HOST} + EMAIL_HOST_USER: ${EMAIL_HOST_USER} + EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD} + EMAIL_PORT: ${EMAIL_PORT} + EMAIL_FROM: ${EMAIL_FROM} + EMAIL_USE_TLS: ${EMAIL_USE_TLS} + EMAIL_USE_SSL: ${EMAIL_USE_SSL} + AWS_REGION: ${AWS_REGION} + AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} + AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} + AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME} + AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL} + FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT} + WEB_URL: ${WEB_URL} + GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET} + DISABLE_COLLECTSTATIC: 1 + DOCKERIZED: 1 + OPENAI_API_BASE: ${OPENAI_API_BASE} + OPENAI_API_KEY: ${OPENAI_API_KEY} + GPT_ENGINE: ${GPT_ENGINE} + SECRET_KEY: ${SECRET_KEY} + DEFAULT_EMAIL: ${DEFAULT_EMAIL} + DEFAULT_PASSWORD: ${DEFAULT_PASSWORD} + USE_MINIO: ${USE_MINIO} + ENABLE_SIGNUP: ${ENABLE_SIGNUP} services: - plane-web: - container_name: planefrontend - build: - context: . - dockerfile: ./apps/app/Dockerfile.web - args: - NEXT_PUBLIC_API_BASE_URL: http://localhost:8000 - NEXT_PUBLIC_DEPLOY_URL: http://localhost/spaces - restart: always - command: /usr/local/bin/start.sh apps/app/server.js app - env_file: - - .env - environment: - NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL} - NEXT_PUBLIC_DEPLOY_URL: ${NEXT_PUBLIC_DEPLOY_URL} - NEXT_PUBLIC_GOOGLE_CLIENTID: "0" - NEXT_PUBLIC_GITHUB_APP_NAME: "0" - NEXT_PUBLIC_GITHUB_ID: "0" - NEXT_PUBLIC_SENTRY_DSN: "0" - NEXT_PUBLIC_ENABLE_OAUTH: "0" - NEXT_PUBLIC_ENABLE_SENTRY: "0" - NEXT_PUBLIC_ENABLE_SESSION_RECORDER: "0" - NEXT_PUBLIC_TRACK_EVENTS: "0" - depends_on: - - plane-api - - plane-worker + plane-web: + container_name: planefrontend + build: + context: . + dockerfile: ./web/Dockerfile.web + args: + NEXT_PUBLIC_API_BASE_URL: http://localhost:8000 + NEXT_PUBLIC_DEPLOY_URL: http://localhost/spaces + restart: always + command: /usr/local/bin/start.sh web/server.js web + env_file: + - .env + environment: + NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL} + NEXT_PUBLIC_DEPLOY_URL: ${NEXT_PUBLIC_DEPLOY_URL} + NEXT_PUBLIC_GOOGLE_CLIENTID: "0" + NEXT_PUBLIC_GITHUB_APP_NAME: "0" + NEXT_PUBLIC_GITHUB_ID: "0" + NEXT_PUBLIC_SENTRY_DSN: "0" + NEXT_PUBLIC_ENABLE_OAUTH: "0" + NEXT_PUBLIC_ENABLE_SENTRY: "0" + NEXT_PUBLIC_ENABLE_SESSION_RECORDER: "0" + NEXT_PUBLIC_TRACK_EVENTS: "0" + depends_on: + - plane-api + - plane-worker - plane-api: - container_name: planebackend - build: - context: ./apiserver - dockerfile: Dockerfile.api - restart: always - command: ./bin/takeoff - env_file: - - .env - environment: - <<: *api-and-worker-env - depends_on: - - plane-db - - plane-redis + plane-deploy: + container_name: planedeploy + build: + context: . + dockerfile: ./space/Dockerfile.space + args: + DOCKER_BUILDKIT: 1 + NEXT_PUBLIC_API_BASE_URL: http://localhost:8000 + restart: always + command: /usr/local/bin/start.sh space/server.js space + env_file: + - .env + environment: + - NEXT_PUBLIC_API_BASE_URL=${NEXT_PUBLIC_API_BASE_URL} + depends_on: + - plane-api + - plane-worker + - plane-web - plane-worker: - container_name: planebgworker - build: - context: ./apiserver - dockerfile: Dockerfile.api - restart: always - command: ./bin/worker - env_file: - - .env - environment: - <<: *api-and-worker-env - depends_on: - - plane-api - - plane-db - - plane-redis + plane-api: + container_name: planebackend + build: + context: ./apiserver + dockerfile: Dockerfile.api + restart: always + command: ./bin/takeoff + env_file: + - .env + environment: + <<: *api-and-worker-env + depends_on: + - plane-db + - plane-redis - plane-beat-worker: - container_name: planebeatworker - build: - context: ./apiserver - dockerfile: Dockerfile.api - restart: always - command: ./bin/beat - env_file: - - .env - environment: - <<: *api-and-worker-env - depends_on: - - plane-api - - plane-db - - plane-redis + plane-worker: + container_name: planebgworker + build: + context: ./apiserver + dockerfile: Dockerfile.api + restart: always + command: ./bin/worker + env_file: + - .env + environment: + <<: *api-and-worker-env + depends_on: + - plane-api + - plane-db + - plane-redis - plane-db: - container_name: plane-db - image: postgres:15.2-alpine - restart: always - command: postgres -c 'max_connections=1000' - volumes: - - pgdata:/var/lib/postgresql/data - env_file: - - .env - environment: - POSTGRES_USER: ${PGUSER} - POSTGRES_DB: ${PGDATABASE} - POSTGRES_PASSWORD: ${PGPASSWORD} - PGDATA: /var/lib/postgresql/data + plane-beat-worker: + container_name: planebeatworker + build: + context: ./apiserver + dockerfile: Dockerfile.api + restart: always + command: ./bin/beat + env_file: + - .env + environment: + <<: *api-and-worker-env + depends_on: + - plane-api + - plane-db + - plane-redis - plane-redis: - container_name: plane-redis - image: redis:6.2.7-alpine - restart: always - volumes: - - redisdata:/data + plane-db: + container_name: plane-db + image: postgres:15.2-alpine + restart: always + command: postgres -c 'max_connections=1000' + volumes: + - pgdata:/var/lib/postgresql/data + env_file: + - .env + environment: + POSTGRES_USER: ${PGUSER} + POSTGRES_DB: ${PGDATABASE} + POSTGRES_PASSWORD: ${PGPASSWORD} + PGDATA: /var/lib/postgresql/data - plane-minio: - container_name: plane-minio - image: minio/minio - restart: always - command: server /export --console-address ":9090" - volumes: - - uploads:/export - env_file: - - .env - environment: - MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID} - MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY} + plane-redis: + container_name: plane-redis + image: redis:6.2.7-alpine + restart: always + volumes: + - redisdata:/data - createbuckets: - image: minio/mc - entrypoint: > - /bin/sh -c " /usr/bin/mc config host add plane-minio http://plane-minio:9000 \$AWS_ACCESS_KEY_ID \$AWS_SECRET_ACCESS_KEY; /usr/bin/mc mb plane-minio/\$AWS_S3_BUCKET_NAME; /usr/bin/mc anonymous set download plane-minio/\$AWS_S3_BUCKET_NAME; exit 0; " - env_file: - - .env - depends_on: - - plane-minio + plane-minio: + container_name: plane-minio + image: minio/minio + restart: always + command: server /export --console-address ":9090" + volumes: + - uploads:/export + env_file: + - .env + environment: + MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID} + MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY} - # Comment this if you already have a reverse proxy running - plane-proxy: - container_name: planeproxy - build: - context: ./nginx - dockerfile: Dockerfile - restart: always - ports: - - ${NGINX_PORT}:80 - env_file: - - .env - environment: - FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT:-5242880} - BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads} - depends_on: - - plane-web - - plane-api + createbuckets: + image: minio/mc + entrypoint: > + /bin/sh -c " /usr/bin/mc config host add plane-minio http://plane-minio:9000 \$AWS_ACCESS_KEY_ID \$AWS_SECRET_ACCESS_KEY; /usr/bin/mc mb plane-minio/\$AWS_S3_BUCKET_NAME; /usr/bin/mc anonymous set download plane-minio/\$AWS_S3_BUCKET_NAME; exit 0; " + env_file: + - .env + depends_on: + - plane-minio + + # Comment this if you already have a reverse proxy running + plane-proxy: + container_name: planeproxy + build: + context: ./nginx + dockerfile: Dockerfile + restart: always + ports: + - ${NGINX_PORT}:80 + env_file: + - .env + environment: + FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT:-5242880} + BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads} + depends_on: + - plane-web + - plane-api volumes: - pgdata: - redisdata: - uploads: + pgdata: + redisdata: + uploads: diff --git a/nginx/nginx.conf.template b/nginx/nginx.conf.template index 206c94b51c3..974f4907d6c 100644 --- a/nginx/nginx.conf.template +++ b/nginx/nginx.conf.template @@ -19,6 +19,10 @@ server { proxy_pass http://planebackend:8000/api/; } + location /spaces/ { + proxy_pass http://planedeploy:3000/spaces/; + } + location /${BUCKET_NAME}/ { proxy_pass http://plane-minio:9000/uploads/; } diff --git a/package.json b/package.json index b99978f2073..397952b3b12 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "license": "AGPL-3.0", "private": true, "workspaces": [ - "apps/*", + "web", + "space", "packages/*" ], "scripts": { @@ -12,9 +13,9 @@ "dev": "turbo run dev", "start": "turbo run start", "lint": "turbo run lint", - "clean": "turbo run clean" + "clean": "turbo run clean", + "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, - "devDependencies": { "eslint-config-custom": "*", "prettier": "latest", diff --git a/packages/eslint-config-custom/index.js b/packages/eslint-config-custom/index.js index 4d829512596..d31a7640602 100644 --- a/packages/eslint-config-custom/index.js +++ b/packages/eslint-config-custom/index.js @@ -4,7 +4,7 @@ module.exports = { plugins: ["react", "@typescript-eslint"], settings: { next: { - rootDir: ["app/", "docs/", "packages/*/"], + rootDir: ["web/", "space/", "packages/*/"], }, }, rules: { diff --git a/apps/space/.env.example b/space/.env.example similarity index 100% rename from apps/space/.env.example rename to space/.env.example diff --git a/apps/app/.eslintrc.js b/space/.eslintrc.js similarity index 100% rename from apps/app/.eslintrc.js rename to space/.eslintrc.js diff --git a/apps/space/.gitignore b/space/.gitignore similarity index 100% rename from apps/space/.gitignore rename to space/.gitignore diff --git a/apps/space/.prettierignore b/space/.prettierignore similarity index 100% rename from apps/space/.prettierignore rename to space/.prettierignore diff --git a/apps/space/.prettierrc.json b/space/.prettierrc.json similarity index 100% rename from apps/space/.prettierrc.json rename to space/.prettierrc.json diff --git a/apps/space/Dockerfile.space b/space/Dockerfile.space similarity index 81% rename from apps/space/Dockerfile.space rename to space/Dockerfile.space index 0240ddbf767..34fe42a13f0 100644 --- a/apps/space/Dockerfile.space +++ b/space/Dockerfile.space @@ -44,14 +44,15 @@ RUN addgroup --system --gid 1001 plane RUN adduser --system --uid 1001 captain USER captain -COPY --from=installer /app/apps/space/next.config.js . -COPY --from=installer /app/apps/space/package.json . +COPY --from=installer /app/space/next.config.js . +COPY --from=installer /app/space/package.json . -# Automatically leverage output traces to reduce image size +# Automatically leverage output traces to reduce image sizß # https://nextjs.org/docs/advanced-features/output-file-tracing -COPY --from=installer --chown=captain:plane /app/apps/space/.next/standalone ./ +COPY --from=installer --chown=captain:plane /app/space/.next/standalone ./ -COPY --from=installer --chown=captain:plane /app/apps/space/.next ./apps/space/.next +COPY --from=installer --chown=captain:plane /app/space/.next ./space/.next +COPY --from=installer --chown=captain:plane /app/space/public ./space/public ARG NEXT_PUBLIC_API_BASE_URL=http://localhost:8000 ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL \ diff --git a/apps/space/README.md b/space/README.md similarity index 100% rename from apps/space/README.md rename to space/README.md diff --git a/apps/space/components/accounts/email-code-form.tsx b/space/components/accounts/email-code-form.tsx similarity index 100% rename from apps/space/components/accounts/email-code-form.tsx rename to space/components/accounts/email-code-form.tsx diff --git a/apps/space/components/accounts/email-password-form.tsx b/space/components/accounts/email-password-form.tsx similarity index 100% rename from apps/space/components/accounts/email-password-form.tsx rename to space/components/accounts/email-password-form.tsx diff --git a/apps/space/components/accounts/email-reset-password-form.tsx b/space/components/accounts/email-reset-password-form.tsx similarity index 100% rename from apps/space/components/accounts/email-reset-password-form.tsx rename to space/components/accounts/email-reset-password-form.tsx diff --git a/apps/space/components/accounts/github-login-button.tsx b/space/components/accounts/github-login-button.tsx similarity index 93% rename from apps/space/components/accounts/github-login-button.tsx rename to space/components/accounts/github-login-button.tsx index 4ba47b421b2..e9b30ab73ed 100644 --- a/apps/space/components/accounts/github-login-button.tsx +++ b/space/components/accounts/github-login-button.tsx @@ -5,8 +5,8 @@ import { useRouter } from "next/router"; // next-themes import { useTheme } from "next-themes"; // images -import githubBlackImage from "/public/logos/github-black.png"; -import githubWhiteImage from "/public/logos/github-white.png"; +import githubBlackImage from "public/logos/github-black.svg"; +import githubWhiteImage from "public/logos/github-white.svg"; export interface GithubLoginButtonProps { handleSignIn: React.Dispatch; diff --git a/apps/space/components/accounts/google-login.tsx b/space/components/accounts/google-login.tsx similarity index 100% rename from apps/space/components/accounts/google-login.tsx rename to space/components/accounts/google-login.tsx diff --git a/apps/space/components/accounts/index.ts b/space/components/accounts/index.ts similarity index 100% rename from apps/space/components/accounts/index.ts rename to space/components/accounts/index.ts diff --git a/apps/space/components/accounts/onboarding-form.tsx b/space/components/accounts/onboarding-form.tsx similarity index 100% rename from apps/space/components/accounts/onboarding-form.tsx rename to space/components/accounts/onboarding-form.tsx diff --git a/apps/space/components/icons/index.ts b/space/components/icons/index.ts similarity index 100% rename from apps/space/components/icons/index.ts rename to space/components/icons/index.ts diff --git a/apps/space/components/icons/issue-group/backlog-state-icon.tsx b/space/components/icons/issue-group/backlog-state-icon.tsx similarity index 100% rename from apps/space/components/icons/issue-group/backlog-state-icon.tsx rename to space/components/icons/issue-group/backlog-state-icon.tsx diff --git a/apps/space/components/icons/issue-group/cancelled-state-icon.tsx b/space/components/icons/issue-group/cancelled-state-icon.tsx similarity index 100% rename from apps/space/components/icons/issue-group/cancelled-state-icon.tsx rename to space/components/icons/issue-group/cancelled-state-icon.tsx diff --git a/apps/space/components/icons/issue-group/completed-state-icon.tsx b/space/components/icons/issue-group/completed-state-icon.tsx similarity index 100% rename from apps/space/components/icons/issue-group/completed-state-icon.tsx rename to space/components/icons/issue-group/completed-state-icon.tsx diff --git a/apps/space/components/icons/issue-group/started-state-icon.tsx b/space/components/icons/issue-group/started-state-icon.tsx similarity index 100% rename from apps/space/components/icons/issue-group/started-state-icon.tsx rename to space/components/icons/issue-group/started-state-icon.tsx diff --git a/apps/space/components/icons/issue-group/unstarted-state-icon.tsx b/space/components/icons/issue-group/unstarted-state-icon.tsx similarity index 100% rename from apps/space/components/icons/issue-group/unstarted-state-icon.tsx rename to space/components/icons/issue-group/unstarted-state-icon.tsx diff --git a/apps/space/components/icons/types.d.ts b/space/components/icons/types.d.ts similarity index 100% rename from apps/space/components/icons/types.d.ts rename to space/components/icons/types.d.ts diff --git a/apps/space/components/issues/board-views/block-downvotes.tsx b/space/components/issues/board-views/block-downvotes.tsx similarity index 100% rename from apps/space/components/issues/board-views/block-downvotes.tsx rename to space/components/issues/board-views/block-downvotes.tsx diff --git a/apps/space/components/issues/board-views/block-due-date.tsx b/space/components/issues/board-views/block-due-date.tsx similarity index 100% rename from apps/space/components/issues/board-views/block-due-date.tsx rename to space/components/issues/board-views/block-due-date.tsx diff --git a/apps/space/components/issues/board-views/block-labels.tsx b/space/components/issues/board-views/block-labels.tsx similarity index 100% rename from apps/space/components/issues/board-views/block-labels.tsx rename to space/components/issues/board-views/block-labels.tsx diff --git a/apps/space/components/issues/board-views/block-priority.tsx b/space/components/issues/board-views/block-priority.tsx similarity index 100% rename from apps/space/components/issues/board-views/block-priority.tsx rename to space/components/issues/board-views/block-priority.tsx diff --git a/apps/space/components/issues/board-views/block-state.tsx b/space/components/issues/board-views/block-state.tsx similarity index 100% rename from apps/space/components/issues/board-views/block-state.tsx rename to space/components/issues/board-views/block-state.tsx diff --git a/apps/space/components/issues/board-views/block-upvotes.tsx b/space/components/issues/board-views/block-upvotes.tsx similarity index 100% rename from apps/space/components/issues/board-views/block-upvotes.tsx rename to space/components/issues/board-views/block-upvotes.tsx diff --git a/apps/space/components/issues/board-views/calendar/index.tsx b/space/components/issues/board-views/calendar/index.tsx similarity index 100% rename from apps/space/components/issues/board-views/calendar/index.tsx rename to space/components/issues/board-views/calendar/index.tsx diff --git a/apps/space/components/issues/board-views/gantt/index.tsx b/space/components/issues/board-views/gantt/index.tsx similarity index 100% rename from apps/space/components/issues/board-views/gantt/index.tsx rename to space/components/issues/board-views/gantt/index.tsx diff --git a/apps/space/components/issues/board-views/kanban/block.tsx b/space/components/issues/board-views/kanban/block.tsx similarity index 98% rename from apps/space/components/issues/board-views/kanban/block.tsx rename to space/components/issues/board-views/kanban/block.tsx index 07375fe366b..40f6576becf 100644 --- a/apps/space/components/issues/board-views/kanban/block.tsx +++ b/space/components/issues/board-views/kanban/block.tsx @@ -24,6 +24,7 @@ export const IssueListBlock = observer(({ issue }: { issue: IIssue }) => { const handleBlockClick = () => { issueDetailStore.setPeekId(issue.id); router.replace( + `/[workspace_slug]/[project_slug]`, { pathname: `/${workspace_slug?.toString()}/${project_slug}`, query: { @@ -31,7 +32,6 @@ export const IssueListBlock = observer(({ issue }: { issue: IIssue }) => { peekId: issue.id, }, }, - undefined, { shallow: true } ); // router.push(`/${workspace_slug?.toString()}/${project_slug}?board=${board?.toString()}&peekId=${issue.id}`); diff --git a/apps/space/components/issues/board-views/kanban/header.tsx b/space/components/issues/board-views/kanban/header.tsx similarity index 100% rename from apps/space/components/issues/board-views/kanban/header.tsx rename to space/components/issues/board-views/kanban/header.tsx diff --git a/apps/space/components/issues/board-views/kanban/index.tsx b/space/components/issues/board-views/kanban/index.tsx similarity index 100% rename from apps/space/components/issues/board-views/kanban/index.tsx rename to space/components/issues/board-views/kanban/index.tsx diff --git a/apps/space/components/issues/board-views/list/block.tsx b/space/components/issues/board-views/list/block.tsx similarity index 98% rename from apps/space/components/issues/board-views/list/block.tsx rename to space/components/issues/board-views/list/block.tsx index 7e6175ebbe0..067d4693a68 100644 --- a/apps/space/components/issues/board-views/list/block.tsx +++ b/space/components/issues/board-views/list/block.tsx @@ -27,6 +27,7 @@ export const IssueListBlock: FC<{ issue: IIssue }> = observer((props) => { const handleBlockClick = () => { issueDetailStore.setPeekId(issue.id); router.replace( + `/[workspace_slug]/[project_slug]`, { pathname: `/${workspace_slug?.toString()}/${project_slug}`, query: { @@ -34,7 +35,6 @@ export const IssueListBlock: FC<{ issue: IIssue }> = observer((props) => { peekId: issue.id, }, }, - undefined, { shallow: true } ); // router.push(`/${workspace_slug?.toString()}/${project_slug}?board=${board?.toString()}&peekId=${issue.id}`); diff --git a/apps/space/components/issues/board-views/list/header.tsx b/space/components/issues/board-views/list/header.tsx similarity index 100% rename from apps/space/components/issues/board-views/list/header.tsx rename to space/components/issues/board-views/list/header.tsx diff --git a/apps/space/components/issues/board-views/list/index.tsx b/space/components/issues/board-views/list/index.tsx similarity index 100% rename from apps/space/components/issues/board-views/list/index.tsx rename to space/components/issues/board-views/list/index.tsx diff --git a/apps/space/components/issues/board-views/spreadsheet/index.tsx b/space/components/issues/board-views/spreadsheet/index.tsx similarity index 100% rename from apps/space/components/issues/board-views/spreadsheet/index.tsx rename to space/components/issues/board-views/spreadsheet/index.tsx diff --git a/apps/space/components/issues/filters-render/index.tsx b/space/components/issues/filters-render/index.tsx similarity index 100% rename from apps/space/components/issues/filters-render/index.tsx rename to space/components/issues/filters-render/index.tsx diff --git a/apps/space/components/issues/filters-render/label/filter-label-block.tsx b/space/components/issues/filters-render/label/filter-label-block.tsx similarity index 100% rename from apps/space/components/issues/filters-render/label/filter-label-block.tsx rename to space/components/issues/filters-render/label/filter-label-block.tsx diff --git a/apps/space/components/issues/filters-render/label/index.tsx b/space/components/issues/filters-render/label/index.tsx similarity index 100% rename from apps/space/components/issues/filters-render/label/index.tsx rename to space/components/issues/filters-render/label/index.tsx diff --git a/apps/space/components/issues/filters-render/priority/filter-priority-block.tsx b/space/components/issues/filters-render/priority/filter-priority-block.tsx similarity index 100% rename from apps/space/components/issues/filters-render/priority/filter-priority-block.tsx rename to space/components/issues/filters-render/priority/filter-priority-block.tsx diff --git a/apps/space/components/issues/filters-render/priority/index.tsx b/space/components/issues/filters-render/priority/index.tsx similarity index 100% rename from apps/space/components/issues/filters-render/priority/index.tsx rename to space/components/issues/filters-render/priority/index.tsx diff --git a/apps/space/components/issues/filters-render/state/filter-state-block.tsx b/space/components/issues/filters-render/state/filter-state-block.tsx similarity index 100% rename from apps/space/components/issues/filters-render/state/filter-state-block.tsx rename to space/components/issues/filters-render/state/filter-state-block.tsx diff --git a/apps/space/components/issues/filters-render/state/index.tsx b/space/components/issues/filters-render/state/index.tsx similarity index 100% rename from apps/space/components/issues/filters-render/state/index.tsx rename to space/components/issues/filters-render/state/index.tsx diff --git a/apps/space/components/issues/navbar/index.tsx b/space/components/issues/navbar/index.tsx similarity index 100% rename from apps/space/components/issues/navbar/index.tsx rename to space/components/issues/navbar/index.tsx diff --git a/apps/space/components/issues/navbar/issue-board-view.tsx b/space/components/issues/navbar/issue-board-view.tsx similarity index 100% rename from apps/space/components/issues/navbar/issue-board-view.tsx rename to space/components/issues/navbar/issue-board-view.tsx diff --git a/apps/space/components/issues/navbar/issue-filter.tsx b/space/components/issues/navbar/issue-filter.tsx similarity index 100% rename from apps/space/components/issues/navbar/issue-filter.tsx rename to space/components/issues/navbar/issue-filter.tsx diff --git a/apps/space/components/issues/navbar/issue-view.tsx b/space/components/issues/navbar/issue-view.tsx similarity index 100% rename from apps/space/components/issues/navbar/issue-view.tsx rename to space/components/issues/navbar/issue-view.tsx diff --git a/apps/space/components/issues/navbar/search.tsx b/space/components/issues/navbar/search.tsx similarity index 100% rename from apps/space/components/issues/navbar/search.tsx rename to space/components/issues/navbar/search.tsx diff --git a/apps/space/components/issues/navbar/theme.tsx b/space/components/issues/navbar/theme.tsx similarity index 100% rename from apps/space/components/issues/navbar/theme.tsx rename to space/components/issues/navbar/theme.tsx diff --git a/apps/space/components/issues/peek-overview/add-comment.tsx b/space/components/issues/peek-overview/add-comment.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/add-comment.tsx rename to space/components/issues/peek-overview/add-comment.tsx diff --git a/apps/space/components/issues/peek-overview/comment-detail-card.tsx b/space/components/issues/peek-overview/comment-detail-card.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/comment-detail-card.tsx rename to space/components/issues/peek-overview/comment-detail-card.tsx diff --git a/apps/space/components/issues/peek-overview/full-screen-peek-view.tsx b/space/components/issues/peek-overview/full-screen-peek-view.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/full-screen-peek-view.tsx rename to space/components/issues/peek-overview/full-screen-peek-view.tsx diff --git a/apps/space/components/issues/peek-overview/header.tsx b/space/components/issues/peek-overview/header.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/header.tsx rename to space/components/issues/peek-overview/header.tsx diff --git a/apps/space/components/issues/peek-overview/index.ts b/space/components/issues/peek-overview/index.ts similarity index 100% rename from apps/space/components/issues/peek-overview/index.ts rename to space/components/issues/peek-overview/index.ts diff --git a/apps/space/components/issues/peek-overview/issue-activity.tsx b/space/components/issues/peek-overview/issue-activity.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/issue-activity.tsx rename to space/components/issues/peek-overview/issue-activity.tsx diff --git a/apps/space/components/issues/peek-overview/issue-details.tsx b/space/components/issues/peek-overview/issue-details.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/issue-details.tsx rename to space/components/issues/peek-overview/issue-details.tsx diff --git a/apps/space/components/issues/peek-overview/issue-emoji-reactions.tsx b/space/components/issues/peek-overview/issue-emoji-reactions.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/issue-emoji-reactions.tsx rename to space/components/issues/peek-overview/issue-emoji-reactions.tsx diff --git a/apps/space/components/issues/peek-overview/issue-properties.tsx b/space/components/issues/peek-overview/issue-properties.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/issue-properties.tsx rename to space/components/issues/peek-overview/issue-properties.tsx diff --git a/apps/space/components/issues/peek-overview/issue-reaction.tsx b/space/components/issues/peek-overview/issue-reaction.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/issue-reaction.tsx rename to space/components/issues/peek-overview/issue-reaction.tsx diff --git a/apps/space/components/issues/peek-overview/issue-vote-reactions.tsx b/space/components/issues/peek-overview/issue-vote-reactions.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/issue-vote-reactions.tsx rename to space/components/issues/peek-overview/issue-vote-reactions.tsx diff --git a/apps/space/components/issues/peek-overview/layout.tsx b/space/components/issues/peek-overview/layout.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/layout.tsx rename to space/components/issues/peek-overview/layout.tsx diff --git a/apps/space/components/issues/peek-overview/side-peek-view.tsx b/space/components/issues/peek-overview/side-peek-view.tsx similarity index 100% rename from apps/space/components/issues/peek-overview/side-peek-view.tsx rename to space/components/issues/peek-overview/side-peek-view.tsx diff --git a/apps/space/components/tiptap/bubble-menu/index.tsx b/space/components/tiptap/bubble-menu/index.tsx similarity index 100% rename from apps/space/components/tiptap/bubble-menu/index.tsx rename to space/components/tiptap/bubble-menu/index.tsx diff --git a/apps/app/components/tiptap/bubble-menu/link-selector.tsx b/space/components/tiptap/bubble-menu/link-selector.tsx similarity index 92% rename from apps/app/components/tiptap/bubble-menu/link-selector.tsx rename to space/components/tiptap/bubble-menu/link-selector.tsx index 16072f4be27..559521db66f 100644 --- a/apps/app/components/tiptap/bubble-menu/link-selector.tsx +++ b/space/components/tiptap/bubble-menu/link-selector.tsx @@ -6,10 +6,9 @@ import isValidHttpUrl from "./utils/link-validator"; interface LinkSelectorProps { editor: Editor; isOpen: boolean; - setIsOpen: Dispatch> + setIsOpen: Dispatch>; } - export const LinkSelector: FC = ({ editor, isOpen, setIsOpen }) => { const inputRef = useRef(null); @@ -76,7 +75,9 @@ export const LinkSelector: FC = ({ editor, isOpen, setIsOpen ) : ( - ) : ( -