From 8be147c3b8488c6e27b11ce538e6d6cae1abd96d Mon Sep 17 00:00:00 2001 From: dm1sh Date: Sat, 4 Sep 2021 19:16:22 +0300 Subject: [PATCH] Refactored App component in front. Implemented pnpm workspaces. Separated messages types into package --- .gitignore | 3 +- {back => apps/back}/.env.example | 0 {back => apps/back}/.gitignore | 0 {back => apps/back}/package.json | 13 +++--- {back => apps/back}/src/constants.ts | 0 {back => apps/back}/src/db/config.example.ts | 0 {back => apps/back}/src/db/index.ts | 0 {back => apps/back}/src/db/model.ts | 0 {back => apps/back}/src/index.ts | 2 +- apps/back/tsconfig.json | 9 ++++ {front => apps/front}/index.html | 0 {front => apps/front}/package.json | 10 ++--- {front => apps/front}/src/App.tsx | 43 ++++--------------- .../front}/src/components/BuildingPlan.tsx | 0 .../front}/src/components/Canvas.tsx | 0 apps/front/src/components/Header.tsx | 9 ++++ .../front}/src/components/RoomList.tsx | 0 {front => apps/front}/src/constants.ts | 0 {front => apps/front}/src/context.tsx | 0 {front => apps/front}/src/index.tsx | 0 apps/front/src/theme.tsx | 28 ++++++++++++ {front => apps/front}/src/types/context.ts | 0 {front => apps/front}/src/types/room.ts | 0 {front => apps/front}/src/types/time.ts | 0 {front => apps/front}/src/types/ui.ts | 0 apps/front/tsconfig.json | 8 ++++ {front => apps/front}/vite.config.js | 0 back/nodemon.json | 6 --- back/tsconfig.json | 14 ------ front/tsconfig.json | 12 ------ package.json | 19 ++++++++ packages/messages/package.json | 13 ++++++ .../messages/src/index.ts | 0 packages/messages/tsconfig.json | 10 +++++ pnpm-workspace.yaml | 3 ++ tsconfig.json | 31 +++++++++++++ 36 files changed, 152 insertions(+), 81 deletions(-) rename {back => apps/back}/.env.example (100%) rename {back => apps/back}/.gitignore (100%) rename {back => apps/back}/package.json (58%) rename {back => apps/back}/src/constants.ts (100%) rename {back => apps/back}/src/db/config.example.ts (100%) rename {back => apps/back}/src/db/index.ts (100%) rename {back => apps/back}/src/db/model.ts (100%) rename {back => apps/back}/src/index.ts (95%) create mode 100644 apps/back/tsconfig.json rename {front => apps/front}/index.html (100%) rename {front => apps/front}/package.json (67%) rename {front => apps/front}/src/App.tsx (62%) rename {front => apps/front}/src/components/BuildingPlan.tsx (100%) rename {front => apps/front}/src/components/Canvas.tsx (100%) create mode 100644 apps/front/src/components/Header.tsx rename {front => apps/front}/src/components/RoomList.tsx (100%) rename {front => apps/front}/src/constants.ts (100%) rename {front => apps/front}/src/context.tsx (100%) rename {front => apps/front}/src/index.tsx (100%) create mode 100644 apps/front/src/theme.tsx rename {front => apps/front}/src/types/context.ts (100%) rename {front => apps/front}/src/types/room.ts (100%) rename {front => apps/front}/src/types/time.ts (100%) rename {front => apps/front}/src/types/ui.ts (100%) create mode 100644 apps/front/tsconfig.json rename {front => apps/front}/vite.config.js (100%) delete mode 100644 back/nodemon.json delete mode 100644 back/tsconfig.json delete mode 100644 front/tsconfig.json create mode 100644 package.json create mode 100644 packages/messages/package.json rename back/src/types.ts => packages/messages/src/index.ts (100%) create mode 100644 packages/messages/tsconfig.json create mode 100644 pnpm-workspace.yaml create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 13688c2..5ca21af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ pnpm-lock.yaml node_modules/ -dist/ \ No newline at end of file +dist/ +*.log \ No newline at end of file diff --git a/back/.env.example b/apps/back/.env.example similarity index 100% rename from back/.env.example rename to apps/back/.env.example diff --git a/back/.gitignore b/apps/back/.gitignore similarity index 100% rename from back/.gitignore rename to apps/back/.gitignore diff --git a/back/package.json b/apps/back/package.json similarity index 58% rename from back/package.json rename to apps/back/package.json index a4341c9..ef92764 100644 --- a/back/package.json +++ b/apps/back/package.json @@ -1,21 +1,20 @@ { - "name": "roomruler", - "version": "1.0.0", - "description": "Web application for distribution of free classrooms", + "name": "@roomruler/back", + "version": "0.0.0", "scripts": { - "build": "tsc", + "build": "tsc --build", "start": "node dist/index.js" }, - "author": "dm1sh", - "license": "MIT", "devDependencies": { "@types/ws": "^7.4.7", "typescript": "^4.4.2" }, "dependencies": { + "@roomruler/messages": "workspace:^0.0.0", "pg": "^8.7.1", "reflect-metadata": "^0.1.13", "typeorm": "^0.2.37", "ws": "^8.2.1" - } + }, + "private": "true" } diff --git a/back/src/constants.ts b/apps/back/src/constants.ts similarity index 100% rename from back/src/constants.ts rename to apps/back/src/constants.ts diff --git a/back/src/db/config.example.ts b/apps/back/src/db/config.example.ts similarity index 100% rename from back/src/db/config.example.ts rename to apps/back/src/db/config.example.ts diff --git a/back/src/db/index.ts b/apps/back/src/db/index.ts similarity index 100% rename from back/src/db/index.ts rename to apps/back/src/db/index.ts diff --git a/back/src/db/model.ts b/apps/back/src/db/model.ts similarity index 100% rename from back/src/db/model.ts rename to apps/back/src/db/model.ts diff --git a/back/src/index.ts b/apps/back/src/index.ts similarity index 95% rename from back/src/index.ts rename to apps/back/src/index.ts index 5eaf3d3..6e8bc51 100644 --- a/back/src/index.ts +++ b/apps/back/src/index.ts @@ -1,7 +1,7 @@ import "reflect-metadata"; import { Server, OPEN } from "ws"; import { connect, getRoomList, updateFree } from "./db"; -import { isMessage, isUpdateMessage } from "./types"; +import { isMessage, isUpdateMessage } from "@roomruler/messages"; const main = async () => { const connection = await connect(); diff --git a/apps/back/tsconfig.json b/apps/back/tsconfig.json new file mode 100644 index 0000000..ffce736 --- /dev/null +++ b/apps/back/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "outDir": "dist" + }, + "references": [{ "path": "../../packages/messages/tsconfig.json" }] +} diff --git a/front/index.html b/apps/front/index.html similarity index 100% rename from front/index.html rename to apps/front/index.html diff --git a/front/package.json b/apps/front/package.json similarity index 67% rename from front/package.json rename to apps/front/package.json index 4785400..58f4fa3 100644 --- a/front/package.json +++ b/apps/front/package.json @@ -1,14 +1,11 @@ { - "name": "roomruler", - "version": "1.0.0", - "description": "Web application for distribution of free classrooms", + "name": "@roomruler/front", + "version": "0.0.0", "scripts": { "dev": "vite", "start": "vite", "build": "vite build" }, - "author": "dm1sh", - "license": "MIT", "devDependencies": { "@types/react-dom": "^17.0.9", "typescript": "^4.4.2", @@ -19,5 +16,6 @@ "immer": "^9.0.6", "react": "^17.0.2", "react-dom": "^17.0.2" - } + }, + "private": "true" } diff --git a/front/src/App.tsx b/apps/front/src/App.tsx similarity index 62% rename from front/src/App.tsx rename to apps/front/src/App.tsx index caf8ad4..fe6ac28 100644 --- a/front/src/App.tsx +++ b/apps/front/src/App.tsx @@ -1,19 +1,11 @@ -import { useEffect, useMemo, useRef, useState } from "react"; -import { - ThemeProvider, - createTheme, - useMediaQuery, - CssBaseline, - AppBar, - Toolbar, - Typography, - makeStyles, - Grid, -} from "@material-ui/core"; +import { useEffect, useRef, useState } from "react"; +import { makeStyles, Grid, useTheme } from "@material-ui/core"; import { RoomContextProvider, useRoomContext } from "./context"; import { BuildingPlan } from "./components/BuildingPlan"; import { RoomList } from "./components/RoomList"; +import { AppTheme } from "./theme"; +import { Header } from "./components/Header"; const useStyles = makeStyles((theme) => ({ root: { @@ -26,24 +18,12 @@ const useStyles = makeStyles((theme) => ({ })); export const App = () => { - const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)"); - - const theme = useMemo( - () => - createTheme({ - palette: { - type: prefersDarkMode ? "dark" : "light", - }, - }), - [prefersDarkMode] - ); - - const planContainer = useRef(null); - + const theme = useTheme(); const classes = useStyles(); const [canvasSize, setCanvasSize] = useState({ w: 0, h: 0 }); + const planContainer = useRef(null); useEffect(() => { if (planContainer.current) setCanvasSize({ @@ -53,14 +33,9 @@ export const App = () => { }, [planContainer.current]); return ( - + - - - - roomruler - - +
@@ -70,6 +45,6 @@ export const App = () => { - + ); }; diff --git a/front/src/components/BuildingPlan.tsx b/apps/front/src/components/BuildingPlan.tsx similarity index 100% rename from front/src/components/BuildingPlan.tsx rename to apps/front/src/components/BuildingPlan.tsx diff --git a/front/src/components/Canvas.tsx b/apps/front/src/components/Canvas.tsx similarity index 100% rename from front/src/components/Canvas.tsx rename to apps/front/src/components/Canvas.tsx diff --git a/apps/front/src/components/Header.tsx b/apps/front/src/components/Header.tsx new file mode 100644 index 0000000..8f98279 --- /dev/null +++ b/apps/front/src/components/Header.tsx @@ -0,0 +1,9 @@ +import { AppBar, Toolbar, Typography } from "@material-ui/core"; + +export const Header = () => ( + + + roomruler + + +); diff --git a/front/src/components/RoomList.tsx b/apps/front/src/components/RoomList.tsx similarity index 100% rename from front/src/components/RoomList.tsx rename to apps/front/src/components/RoomList.tsx diff --git a/front/src/constants.ts b/apps/front/src/constants.ts similarity index 100% rename from front/src/constants.ts rename to apps/front/src/constants.ts diff --git a/front/src/context.tsx b/apps/front/src/context.tsx similarity index 100% rename from front/src/context.tsx rename to apps/front/src/context.tsx diff --git a/front/src/index.tsx b/apps/front/src/index.tsx similarity index 100% rename from front/src/index.tsx rename to apps/front/src/index.tsx diff --git a/apps/front/src/theme.tsx b/apps/front/src/theme.tsx new file mode 100644 index 0000000..9632bb2 --- /dev/null +++ b/apps/front/src/theme.tsx @@ -0,0 +1,28 @@ +import { + createTheme, + CssBaseline, + ThemeProvider, + useMediaQuery, +} from "@material-ui/core"; +import { FC, useMemo } from "react"; + +export const AppTheme: FC = ({ children }) => { + const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)"); + + const theme = useMemo( + () => + createTheme({ + palette: { + type: prefersDarkMode ? "dark" : "light", + }, + }), + [prefersDarkMode] + ); + + return ( + + + {children} + + ); +}; diff --git a/front/src/types/context.ts b/apps/front/src/types/context.ts similarity index 100% rename from front/src/types/context.ts rename to apps/front/src/types/context.ts diff --git a/front/src/types/room.ts b/apps/front/src/types/room.ts similarity index 100% rename from front/src/types/room.ts rename to apps/front/src/types/room.ts diff --git a/front/src/types/time.ts b/apps/front/src/types/time.ts similarity index 100% rename from front/src/types/time.ts rename to apps/front/src/types/time.ts diff --git a/front/src/types/ui.ts b/apps/front/src/types/ui.ts similarity index 100% rename from front/src/types/ui.ts rename to apps/front/src/types/ui.ts diff --git a/apps/front/tsconfig.json b/apps/front/tsconfig.json new file mode 100644 index 0000000..bd30185 --- /dev/null +++ b/apps/front/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "target": "es6", + "module": "ESNext", + "jsx": "react-jsx" + } +} diff --git a/front/vite.config.js b/apps/front/vite.config.js similarity index 100% rename from front/vite.config.js rename to apps/front/vite.config.js diff --git a/back/nodemon.json b/back/nodemon.json deleted file mode 100644 index 14d3f38..0000000 --- a/back/nodemon.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "watch": ["src/"], - "ext": "ts,json", - "exec": "etsc && node ./dist/index.js", - "legacyWatch": true -} diff --git a/back/tsconfig.json b/back/tsconfig.json deleted file mode 100644 index 8447763..0000000 --- a/back/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "commonjs", - "esModuleInterop": true, - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "outDir": "dist" - } -} diff --git a/front/tsconfig.json b/front/tsconfig.json deleted file mode 100644 index 2af8cae..0000000 --- a/front/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "ESNext", - "jsx": "react-jsx", - "esModuleInterop": true, - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true - } -} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a69b447 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "roomruler", + "version": "1.0.0", + "description": "Web application for distribution of free classrooms", + "scripts": { + "preinstall": "npx -y only-allow pnpm", + "clean": "rm -rf node_modules apps/back/node_modules apps/front/node_modules packages/messages/node_modules apps/back/dist apps/front/dist packages/messages/dist pnpm-lock.yaml" + }, + "author": "dm1sh", + "license": "MIT", + "engines": { + "node": ">= 16.1.0", + "pnpm": ">= 6.9.0" + }, + "private": "true", + "workspaces": [ + "packages/*" + ] +} diff --git a/packages/messages/package.json b/packages/messages/package.json new file mode 100644 index 0000000..5acb0d1 --- /dev/null +++ b/packages/messages/package.json @@ -0,0 +1,13 @@ +{ + "name": "@roomruler/messages", + "main": "dist/src/index.js", + "version": "0.0.0", + "types": "dist/src/index.d.ts", + "scripts": { + "build": "tsc --build" + }, + "devDependencies": { + "typescript": "^4.4.2" + }, + "private": "true" +} diff --git a/back/src/types.ts b/packages/messages/src/index.ts similarity index 100% rename from back/src/types.ts rename to packages/messages/src/index.ts diff --git a/packages/messages/tsconfig.json b/packages/messages/tsconfig.json new file mode 100644 index 0000000..74d847c --- /dev/null +++ b/packages/messages/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "dist", + "composite": true + }, + "include": ["src"] +} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..b886c78 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - "apps/**" + - "packages/**" diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..d60e526 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "declaration": true, + "noImplicitAny": false, + "removeComments": true, + "noLib": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true + }, + "exclude": ["node_modules"], + "references": [ + { + "path": "./apps/front" + }, + { + "path": "./apps/back" + }, + { + "path": "./packages/messages/" + } + ] +}