feat: move to pnpm

This commit is contained in:
Nevo David 2025-05-06 00:09:59 +07:00
parent 1cf2440264
commit 4ba5156502
75 changed files with 34623 additions and 56208 deletions

5
.npmrc Normal file
View File

@ -0,0 +1,5 @@
ignore-workspace-root-check=true
node-linker=hoisted
restrict-manifest-changes=true
sync-injected-deps-after-scripts[]=build
inject-workspace-packages=true

View File

@ -1,18 +0,0 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

8
apps/backend/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
dist/
node_modules/
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]

View File

@ -1,11 +0,0 @@
/* eslint-disable */
export default {
displayName: 'backend',
preset: '../../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/apps/backend',
};

View File

@ -0,0 +1,20 @@
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"monorepo": false,
"sourceRoot": "src",
"entryFile": "../../dist/backend/apps/backend/src/main",
"language": "ts",
"generateOptions": {
"spec": false
},
"compilerOptions": {
"manualRestart": true,
"tsConfigPath": "./tsconfig.build.json",
"webpack": false,
"deleteOutDir": true,
"assets": [],
"watchAssets": false,
"plugins": []
}
}

14
apps/backend/package.json Normal file
View File

@ -0,0 +1,14 @@
{
"name": "postiz-backend",
"version": "1.0.0",
"description": "",
"scripts": {
"dev": "dotenv -e ../../.env -- nest start --watch --entryFile=./apps/backend/src/main",
"build": "NODE_ENV=production nest build",
"start": "node ./dist/apps/backend/src/main.js",
"pm2": "pm2 start pnpm --name backend -- start"
},
"keywords": [],
"author": "",
"license": "ISC"
}

View File

@ -1,65 +0,0 @@
{
"name": "backend",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/backend/src",
"projectType": "application",
"targets": {
"build": {
"executor": "@nx/webpack:webpack",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"options": {
"target": "node",
"compiler": "tsc",
"outputPath": "dist/apps/backend",
"main": "apps/backend/src/main.ts",
"tsConfig": "apps/backend/tsconfig.app.json",
"assets": ["apps/backend/src/assets"],
"webpackConfig": "apps/backend/webpack.config.js",
"transformers": [
{
"name": "@nestjs/swagger/plugin",
"options": {
"dtoFileNameSuffix": [".dto.ts"],
"controllerFileNameSuffix": [".controller.ts"],
"introspectComments": true,
"classValidatorShim": true
}
}
]
},
"configurations": {
"development": {},
"production": {}
}
},
"serve": {
"executor": "@nx/js:node",
"defaultConfiguration": "development",
"options": {
"buildTarget": "backend:build",
"inspect": false
},
"configurations": {
"development": {
"buildTarget": "backend:build:development"
},
"production": {
"buildTarget": "backend:build:production"
}
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"]
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/backend/jest.config.ts"
}
}
},
"tags": []
}

View File

@ -2,7 +2,6 @@ import {
Body,
Controller,
Get,
Ip,
Param,
Post,
Query,
@ -103,7 +102,7 @@ export class AuthController {
response.status(200).json({
register: true,
});
} catch (e) {
} catch (e: any) {
response.status(400).send(e.message);
}
}
@ -167,7 +166,7 @@ export class AuthController {
response.status(200).json({
login: true,
});
} catch (e) {
} catch (e: any) {
response.status(400).send(e.message);
}
}

View File

@ -54,7 +54,7 @@ export class PostsController {
return { ask: this._shortLinkService.askShortLinkedin(body.messages) };
}
@Get('/marketplace/:id?')
@Get('/marketplace/:id')
async getMarketplacePosts(
@GetOrgFromRequest() org: Organization,
@Param('id') id: string

View File

@ -1,12 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["node", "multer"],
"emitDecoratorMetadata": true,
"target": "es2021"
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}

View File

@ -0,0 +1,23 @@
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"],
"compilerOptions": {
"module": "CommonJS",
"resolveJsonModule": true,
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "ES2021",
"sourceMap": true,
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"outDir": "./dist"
}
}

View File

@ -1,17 +1,12 @@
{
"extends": "../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"compilerOptions": {
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true
"module": "commonjs",
"declaration": true,
"removeComments": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"esModuleInterop": true
}
}

View File

@ -1,14 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

View File

@ -1,13 +0,0 @@
const { composePlugins, withNx } = require('@nx/webpack');
// Nx plugins for webpack.
module.exports = composePlugins(
withNx({
target: 'node',
}),
(config) => {
// Update the webpack config as needed here.
// e.g. `config.plugins.push(new MyPlugin())`
return config;
}
);

View File

@ -1,18 +0,0 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

8
apps/commands/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
dist/
node_modules/
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]

View File

@ -1,11 +0,0 @@
/* eslint-disable */
export default {
displayName: 'consumers',
preset: '../../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/apps/consumers',
};

View File

@ -0,0 +1,20 @@
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"monorepo": false,
"sourceRoot": "src",
"entryFile": "../../dist/backend/apps/backend/src/main",
"language": "ts",
"generateOptions": {
"spec": false
},
"compilerOptions": {
"manualRestart": true,
"tsConfigPath": "./tsconfig.build.json",
"webpack": false,
"deleteOutDir": true,
"assets": [],
"watchAssets": false,
"plugins": []
}
}

View File

@ -0,0 +1,14 @@
{
"name": "postiz-command",
"version": "1.0.0",
"description": "",
"scripts": {
"dev": "dotenv -e ../../.env -- nest start --watch --entryFile=./apps/command/src/main",
"build": "NODE_ENV=production nest build",
"start": "node ./dist/apps/command/src/main.js",
"pm2": "pm2 start pnpm --name command -- start"
},
"keywords": [],
"author": "",
"license": "ISC"
}

View File

@ -1,54 +0,0 @@
{
"name": "commands",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/commands/src",
"projectType": "application",
"targets": {
"build": {
"executor": "@nx/webpack:webpack",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"options": {
"target": "node",
"compiler": "tsc",
"outputPath": "dist/apps/commands",
"main": "apps/commands/src/main.ts",
"tsConfig": "apps/commands/tsconfig.app.json",
"webpackConfig": "apps/commands/webpack.config.js"
},
"configurations": {
"development": {},
"production": {}
}
},
"command": {
"executor": "nx:run-commands",
"defaultConfiguration": "development",
"options": {
"command": "cd dist/apps/commands && node main.js"
}
},
"lint": {
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["apps/commands/**/*.ts"]
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/commands/jest.config.ts",
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
}
}
},
"tags": []
}

View File

@ -1,12 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["node"],
"emitDecoratorMetadata": true,
"target": "es2021"
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}

View File

@ -0,0 +1,23 @@
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"],
"compilerOptions": {
"module": "CommonJS",
"resolveJsonModule": true,
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "ES2021",
"sourceMap": true,
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"outDir": "./dist"
}
}

View File

@ -1,16 +1,12 @@
{
"extends": "../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"esModuleInterop": true
}
}

View File

@ -1,14 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

View File

@ -1,13 +0,0 @@
const { composePlugins, withNx } = require('@nx/webpack');
// Nx plugins for webpack.
module.exports = composePlugins(
withNx({
target: 'node',
}),
(config) => {
// Update the webpack config as needed here.
// e.g. `config.plugins.push(new MyPlugin())`
return config;
}
);

View File

@ -1,18 +0,0 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

8
apps/cron/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
dist/
node_modules/
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]

View File

@ -1,11 +0,0 @@
/* eslint-disable */
export default {
displayName: 'consumers',
preset: '../../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/apps/consumers',
};

20
apps/cron/nest-cli.json Normal file
View File

@ -0,0 +1,20 @@
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"monorepo": false,
"sourceRoot": "src",
"entryFile": "../../dist/workers/apps/workers/src/main",
"language": "ts",
"generateOptions": {
"spec": false
},
"compilerOptions": {
"manualRestart": true,
"tsConfigPath": "./tsconfig.build.json",
"webpack": false,
"deleteOutDir": true,
"assets": [],
"watchAssets": false,
"plugins": []
}
}

13
apps/cron/package.json Normal file
View File

@ -0,0 +1,13 @@
{
"name": "postiz-cron",
"version": "1.0.0",
"description": "",
"scripts": {
"dev": "dotenv -e ../../.env -- nest start --watch --entryFile=./apps/cron/src/main",
"build": "NODE_ENV=production nest build",
"start": "node ./dist/apps/cron/src/main.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}

View File

@ -1,62 +0,0 @@
{
"name": "cron",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/cron/src",
"projectType": "application",
"targets": {
"build": {
"executor": "@nx/webpack:webpack",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"options": {
"target": "node",
"compiler": "tsc",
"outputPath": "dist/apps/cron",
"main": "apps/cron/src/main.ts",
"tsConfig": "apps/cron/tsconfig.app.json",
"webpackConfig": "apps/cron/webpack.config.js"
},
"configurations": {
"development": {},
"production": {}
}
},
"serve": {
"executor": "@nx/js:node",
"defaultConfiguration": "development",
"options": {
"buildTarget": "cron:build"
},
"configurations": {
"development": {
"buildTarget": "cron:build:development"
},
"production": {
"buildTarget": "cron:build:production"
}
}
},
"lint": {
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["apps/cron/**/*.ts"]
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/cron/jest.config.ts",
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
}
}
},
"tags": []
}

View File

@ -1,12 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["node"],
"emitDecoratorMetadata": true,
"target": "es2021"
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}

View File

@ -0,0 +1,23 @@
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"],
"compilerOptions": {
"module": "CommonJS",
"resolveJsonModule": true,
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "ES2021",
"sourceMap": true,
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"outDir": "./dist"
}
}

View File

@ -1,16 +1,12 @@
{
"extends": "../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"compilerOptions": {
"esModuleInterop": true
"module": "commonjs",
"declaration": true,
"removeComments": true,
"allowSyntheticDefaultImports": true,
"noLib": false,
"target": "ES2021",
"sourceMap": true
}
}

View File

@ -1,14 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

View File

@ -1,13 +0,0 @@
const { composePlugins, withNx } = require('@nx/webpack');
// Nx plugins for webpack.
module.exports = composePlugins(
withNx({
target: 'node',
}),
(config) => {
// Update the webpack config as needed here.
// e.g. `config.plugins.push(new MyPlugin())`
return config;
}
);

View File

@ -1,32 +0,0 @@
{
"extends": [
"plugin:@nx/react-typescript",
"next",
"next/core-web-vitals",
"../../.eslintrc.json"
],
"ignorePatterns": ["!**/*", ".next/**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {
"@next/next/no-html-link-for-pages": ["error", "apps/frontend/pages"],
"no-extra-boolean-cast": "off"
}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
"env": {
"jest": true
}
}
]
}

41
apps/frontend/.gitignore vendored Normal file
View File

@ -0,0 +1,41 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts

36
apps/frontend/README.md Normal file
View File

@ -0,0 +1,36 @@
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.

View File

@ -1,6 +0,0 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
declare module '*.svg' {
const content: any;
export const ReactComponent: any;
export default content;
}

View File

@ -1,11 +0,0 @@
/* eslint-disable */
export default {
displayName: 'frontend',
preset: '../../jest.preset.js',
transform: {
'^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest',
'^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/next/babel'] }],
},
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
coverageDirectory: '../../coverage/apps/frontend',
};

View File

@ -1,5 +0,0 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.

View File

@ -1,17 +1,8 @@
//@ts-check
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { composePlugins, withNx } = require('@nx/next');
/**
* @type {import('@nx/next/plugins/with-nx').WithNxOptions}
**/
const nextConfig = {
nx: {
// Set this to true if you would like to use SVGR
// See: https://github.com/gregberge/vgr
svgr: false,
experimental: {
proxyTimeout: 90_000,
},
reactStrictMode: false,
transpilePackages: ['crypto-hash'],
images: {
remotePatterns: [
@ -48,9 +39,4 @@ const nextConfig = {
},
};
const plugins = [
// Add more Next.js plugins to this list if needed.
withNx,
];
module.exports = composePlugins(...plugins)(nextConfig);
export default nextConfig;

View File

@ -0,0 +1,14 @@
{
"name": "postiz-frontend",
"version": "1.0.0",
"description": "",
"scripts": {
"dev": "dotenv -e ../../.env -- next dev -p 4200",
"build": "next build",
"start": "PORT=4200 next start",
"pm2": "PORT=4200 pm2 start pnpm --name frontend -- start"
},
"keywords": [],
"author": "",
"license": "ISC"
}

View File

@ -1,10 +0,0 @@
const { join } = require('path');
module.exports = {
plugins: {
tailwindcss: {
config: join(__dirname, 'tailwind.config.js'),
},
autoprefixer: {},
},
};

View File

@ -0,0 +1,8 @@
/** @type {import('postcss-load-config').Config} */
const config = {
plugins: {
tailwindcss: {},
},
};
export default config;

View File

@ -1,59 +0,0 @@
{
"name": "frontend",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/frontend",
"projectType": "application",
"targets": {
"build": {
"executor": "@nx/next:build",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"options": {
"outputPath": "dist/apps/frontend",
"postcssConfig": "apps/frontend/postcss.config.js"
},
"configurations": {
"development": {
"outputPath": "apps/frontend"
},
"production": {}
}
},
"serve": {
"executor": "@nx/next:server",
"defaultConfiguration": "development",
"options": {
"buildTarget": "frontend:build",
"dev": true
},
"configurations": {
"development": {
"buildTarget": "frontend:build:development",
"dev": true
},
"production": {
"buildTarget": "frontend:build:production",
"dev": false
}
}
},
"export": {
"executor": "@nx/next:export",
"options": {
"buildTarget": "frontend:build:production"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"]
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/frontend/jest.config.ts"
}
}
},
"tags": []
}

View File

@ -1,11 +1,6 @@
import {LayoutSettings} from "@gitroom/frontend/components/layout/layout.settings";
export default async function Layout({ children }: { children: React.ReactNode }) {
/*
* Replace the elements below with your own.
*
* Note: The corresponding styles are in the ./index.scss file.
*/
return (
<LayoutSettings>
{children}

View File

@ -1,7 +1,9 @@
'use client';
import React, { useCallback } from 'react';
import { observer } from 'mobx-react-lite';
import { InputGroup } from '@blueprintjs/core';
import { Clean } from '@blueprintjs/icons';
// import { InputGroup } from '@blueprintjs/core';
// import { Clean } from '@blueprintjs/icons';
import { SectionTab } from 'polotno/side-panel';
import { getImageSize } from 'polotno/utils/image';
@ -69,18 +71,18 @@ const GenerateTab = observer(({ store }: any) => {
<div style={{ height: '40px', paddingTop: '5px' }}>
Generate image with AI {data?.credits ? `(${data?.credits} left)` : ``}
</div>
<InputGroup
placeholder="Type your image generation prompt here..."
onKeyDown={(e) => {
if (e.key === 'Enter') {
handleGenerate();
}
}}
style={{
marginBottom: '20px',
}}
inputRef={inputRef}
/>
{/*<InputGroup*/}
{/* placeholder="Type your image generation prompt here..."*/}
{/* onKeyDown={(e) => {*/}
{/* if (e.key === 'Enter') {*/}
{/* handleGenerate();*/}
{/* }*/}
{/* }}*/}
{/* style={{*/}
{/* marginBottom: '20px',*/}
{/* }}*/}
{/* inputRef={inputRef}*/}
{/*/>*/}
<Button
onClick={handleGenerate}
loading={loading} innerClassName="invert"
@ -148,7 +150,7 @@ export const PictureGeneratorSection = {
name: 'picture-generator-ai',
Tab: (props: any) => (
<SectionTab name="AI Img" {...props}>
<Clean />
{/*<Clean />*/}
</SectionTab>
),
// we need observer to update component automatically on any store changes

View File

@ -1,20 +1,17 @@
const { createGlobPatternsForDependencies } = require('@nx/react/tailwind');
const { join } = require('path');
module.exports = {
content: [
...createGlobPatternsForDependencies(
__dirname + '../../../libraries/react-shared-libraries'
),
'@gitroom/react',
join(
__dirname + '../../../libraries/react-shared-libraries',
'@gitroom/react',
'{src,pages,components,app}/**/*!(*.stories|*.spec).{ts,tsx,html}'
),
join(
__dirname,
'{src,pages,components,app}/**/*!(*.stories|*.spec).{ts,tsx,html}'
),
...createGlobPatternsForDependencies(__dirname),
'./src/**/*.{ts,tsx,html}',
],
theme: {
extend: {
@ -168,4 +165,4 @@ module.exports = {
addVariant('child-hover', '& > *:hover');
},
],
};
};

View File

@ -16,9 +16,7 @@
"name": "next"
}
],
"types": [
"node"
]
"types": ["node"]
},
"include": [
"**/*.ts",

View File

@ -1,11 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"],
"jsx": "react"
},
"include": [
]
}

File diff suppressed because one or more lines are too long

View File

@ -1,18 +0,0 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

8
apps/workers/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
dist/
node_modules/
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]

View File

@ -1,11 +0,0 @@
/* eslint-disable */
export default {
displayName: 'consumers',
preset: '../../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/apps/consumers',
};

View File

@ -0,0 +1,20 @@
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"monorepo": false,
"sourceRoot": "src",
"entryFile": "../../dist/workers/apps/workers/src/main",
"language": "ts",
"generateOptions": {
"spec": false
},
"compilerOptions": {
"manualRestart": true,
"tsConfigPath": "./tsconfig.build.json",
"webpack": false,
"deleteOutDir": true,
"assets": [],
"watchAssets": false,
"plugins": []
}
}

13
apps/workers/package.json Normal file
View File

@ -0,0 +1,13 @@
{
"name": "postiz-workers",
"version": "1.0.0",
"description": "",
"scripts": {
"dev": "dotenv -e ../../.env -- nest start --watch --entryFile=./apps/workers/src/main",
"build": "NODE_ENV=production nest build",
"start": "node ./dist/apps/workers/src/main.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}

View File

@ -1,63 +0,0 @@
{
"name": "workers",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/workers/src",
"projectType": "application",
"targets": {
"build": {
"executor": "@nx/webpack:webpack",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"options": {
"target": "node",
"compiler": "tsc",
"outputPath": "dist/apps/workers",
"main": "apps/workers/src/main.ts",
"tsConfig": "apps/workers/tsconfig.app.json",
"webpackConfig": "apps/workers/webpack.config.js"
},
"configurations": {
"development": {},
"production": {}
}
},
"serve": {
"executor": "@nx/js:node",
"defaultConfiguration": "development",
"options": {
"buildTarget": "workers:build",
"inspect": false
},
"configurations": {
"development": {
"buildTarget": "workers:build:development"
},
"production": {
"buildTarget": "workers:build:production"
}
}
},
"lint": {
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["apps/workers/**/*.ts"]
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/workers/jest.config.ts",
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
}
}
},
"tags": []
}

View File

@ -1,12 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["node"],
"emitDecoratorMetadata": true,
"target": "es2021"
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}

View File

@ -0,0 +1,23 @@
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"],
"compilerOptions": {
"module": "CommonJS",
"resolveJsonModule": true,
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "ES2021",
"sourceMap": true,
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"outDir": "./dist"
}
}

View File

@ -1,16 +1,11 @@
{
"extends": "../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"compilerOptions": {
"esModuleInterop": true
"module": "commonjs",
"declaration": true,
"removeComments": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true
}
}

View File

@ -1,14 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

View File

@ -1,13 +0,0 @@
const { composePlugins, withNx } = require('@nx/webpack');
// Nx plugins for webpack.
module.exports = composePlugins(
withNx({
target: 'node',
}),
(config) => {
// Update the webpack config as needed here.
// e.g. `config.plugins.push(new MyPlugin())`
return config;
}
);

View File

@ -1,13 +0,0 @@
{
"name": "nestjs-libraries",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libraries/nestjs-libraries/src",
"projectType": "library",
"targets": {
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"]
}
},
"tags": []
}

View File

@ -1,13 +0,0 @@
{
"name": "plugins",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libraries/plugins/src",
"projectType": "library",
"targets": {
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"]
}
},
"tags": []
}

View File

@ -1,13 +0,0 @@
{
"name": "react-shared-libraries",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libraries/react-shared-libraries/src",
"projectType": "library",
"targets": {
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"]
}
},
"tags": []
}

View File

@ -1,90 +0,0 @@
{
"migrations": [
{
"version": "18.1.0-beta.3",
"description": "Moves affected.defaultBase to defaultBase in `nx.json`",
"implementation": "./src/migrations/update-17-2-0/move-default-base",
"package": "nx",
"name": "move-default-base-to-nx-json-root"
},
{
"cli": "nx",
"version": "19.2.0-beta.2",
"description": "Updates the default workspace data directory to .nx/workspace-data",
"implementation": "./src/migrations/update-19-2-0/move-workspace-data-directory",
"package": "nx",
"name": "19-2-0-move-graph-cache-directory"
},
{
"cli": "nx",
"version": "19.2.2-beta.0",
"description": "Updates the nx wrapper.",
"implementation": "./src/migrations/update-17-3-0/update-nxw",
"package": "nx",
"name": "19-2-2-update-nx-wrapper"
},
{
"version": "19.2.4-beta.0",
"description": "Set project name in nx.json explicitly",
"implementation": "./src/migrations/update-19-2-4/set-project-name",
"x-repair-skip": true,
"package": "nx",
"name": "19-2-4-set-project-name"
},
{
"cli": "nx",
"version": "19.1.0-beta.6",
"description": "Migrate no-extra-semi rules into user config, out of nx extendable configs",
"implementation": "./src/migrations/update-19-1-0-migrate-no-extra-semi/migrate-no-extra-semi",
"package": "@nx/eslint-plugin",
"name": "update-19-1-0-rename-no-extra-semi"
},
{
"cli": "nx",
"version": "19.6.3-beta.0",
"description": "Migrate proxy config files to match new format from webpack-dev-server v5.",
"implementation": "./src/migrations/update-19-6-3/proxy-config",
"package": "@nx/webpack",
"name": "update-19-6-3-proxy-config"
},
{
"version": "19.6.0-beta.0",
"description": "Add dependsOn: [build] to preview targets using preview-server",
"implementation": "./src/migrations/update-19-6-0/add-depends-on-for-preview",
"package": "@nx/vite",
"name": "update-19-6-0-add-depends-on-for-preview-server"
},
{
"cli": "nx",
"version": "18.1.1-beta.0",
"description": "Ensure targetDefaults inputs for task hashing when '@nx/webpack:webpack' is used are correct for Module Federation.",
"factory": "./src/migrations/update-18-1-1/fix-target-defaults-inputs",
"package": "@nx/react",
"name": "fix-target-defaults-for-webpack"
},
{
"cli": "nx",
"version": "19.6.0-beta.4",
"description": "Ensure Module Federation DTS is turned off by default.",
"factory": "./src/migrations/update-19-6-0/turn-off-dts-by-default",
"package": "@nx/react",
"name": "update-19-6-0-turn-module-federation-dts-off"
},
{
"cli": "nx",
"version": "19.6.0-beta.4",
"description": "Update the server file for Module Federation SSR port value to be the same as the 'serve' target port value.",
"factory": "./src/migrations/update-19-6-0/update-ssr-server-port",
"package": "@nx/react",
"name": "update-module-federation-ssr-server-file"
},
{
"cli": "nx",
"version": "19.6.1-beta.0",
"description": "Ensure Target Defaults are set correctly for Module Federation.",
"factory": "./src/migrations/update-19-6-1/ensure-depends-on-for-mf",
"package": "@nx/react",
"name": "update-19-6-1-ensure-module-federation-target-defaults"
}
]
}

64
nx.json
View File

@ -1,64 +0,0 @@
{
"extends": "nx/presets/npm.json",
"$schema": "./node_modules/nx/schemas/nx-schema.json",
"targetDefaults": {
"build": {
"cache": true,
"dependsOn": ["^build"]
},
"lint": {
"cache": true,
"inputs": [
"default",
"{workspaceRoot}/.eslintrc.json",
"{workspaceRoot}/.eslintignore",
"{workspaceRoot}/eslint.config.js"
]
},
"@nx/jest:jest": {
"cache": true,
"inputs": ["default", "^default", "{workspaceRoot}/jest.preset.js"],
"options": {
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
}
},
"@nx/eslint:lint": {
"cache": true,
"inputs": [
"default",
"{workspaceRoot}/.eslintrc.json",
"{workspaceRoot}/.eslintignore",
"{workspaceRoot}/eslint.config.js"
]
}
},
"generators": {
"@nx/react": {
"application": {
"style": "scss",
"linter": "eslint",
"bundler": "vite",
"babel": true
},
"component": {
"style": "scss"
},
"library": {
"style": "scss",
"linter": "eslint"
}
},
"@nx/next": {
"application": {
"style": "scss",
"linter": "eslint"
}
}
}
}

55261
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,17 @@
{
"name": "gitroom",
"version": "0.0.0",
"license": "MIT",
"version": "1.0.0",
"description": "",
"main": "index.js",
"license": "AGPL-3.0",
"keywords": [],
"author": "",
"engines": {
"node": ">=20.0.0 <21.0.0"
},
"packageManager": "pnpm@10.6.1",
"scripts": {
"dev": "npx nx run-many --target=serve --projects=frontend,backend,workers --parallel=4",
"dev": "pnpm run --filter ./apps/workers --filter ./apps/backend --filter ./apps/frontend --parallel dev",
"dev:stripe": "npx concurrently \"stripe listen --forward-to localhost:3000/stripe\" \"npm run dev\"",
"build": "npx nx run-many --target=build --projects=frontend,backend,workers,cron",
"build:frontend": "npx nx run frontend:build:production",
@ -32,7 +37,6 @@
"postinstall": "npm run update-plugins && npm run prisma-generate",
"test": "jest --coverage --detectOpenHandles --reporters=default --reporters=jest-junit"
},
"private": true,
"dependencies": {
"@atproto/api": "^0.14.21",
"@aws-sdk/client-s3": "^3.787.0",
@ -52,6 +56,7 @@
"@mantine/hooks": "^5.10.5",
"@mantine/modals": "^5.10.5",
"@modelcontextprotocol/sdk": "^1.9.0",
"@nestjs/cli": "10.0.2",
"@nestjs/common": "^10.0.2",
"@nestjs/core": "^10.0.2",
"@nestjs/microservices": "^10.3.1",
@ -84,7 +89,7 @@
"@types/jsonwebtoken": "^9.0.5",
"@types/lodash": "^4.14.202",
"@types/md5": "^2.3.5",
"@types/mime": "^4.0.0",
"@types/mime": "^3.0.4",
"@types/mime-types": "^2.1.4",
"@types/multer": "^1.4.11",
"@types/nodemailer": "^6.4.16",
@ -124,6 +129,8 @@
"copy-to-clipboard": "^3.3.3",
"crypto-hash": "^3.0.0",
"dayjs": "^1.11.10",
"dotenv": "^16.5.0",
"dotenv-cli": "^8.0.0",
"emoji-picker-react": "^4.12.0",
"facebook-nodejs-business-sdk": "^21.0.5",
"fast-xml-parser": "^4.5.1",
@ -243,5 +250,10 @@
"jest-junit": {
"outputDirectory": "./reports",
"outputName": "junit.xml"
},
"pnpm": {
"onlyBuiltDependencies": [
"bcrypt"
]
}
}

34176
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

3
pnpm-workspace.yaml Normal file
View File

@ -0,0 +1,3 @@
packages:
- apps/*
- libraries/*

View File

@ -1,5 +1,4 @@
{
"compileOnSave": false,
"compilerOptions": {
"rootDir": ".",
"sourceMap": true,
@ -19,6 +18,12 @@
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"baseUrl": ".",
"incremental": true,
"strictNullChecks": false,
"noImplicitAny": true,
"strictBindCallApply": false,
"noFallthroughCasesInSwitch": true,
"strict": true,
"paths": {
"@gitroom/backend/*": ["apps/backend/src/*"],
"@gitroom/cron/*": ["apps/cron/src/*"],
@ -27,7 +32,7 @@
"@gitroom/nestjs-libraries/*": ["libraries/nestjs-libraries/src/*"],
"@gitroom/react/*": ["libraries/react-shared-libraries/src/*"],
"@gitroom/plugins/*": ["libraries/plugins/src/*"],
"@gitroom/workers/*": ["apps/workers/src/*"],
"@gitroom/workers/*": ["apps/workers/src/*"]
}
},
"exclude": ["node_modules", "tmp"]

3
tsconfig.json Normal file
View File

@ -0,0 +1,3 @@
{
"extends": "./tsconfig.base.json",
}