Giter VIP home page Giter VIP logo

line / abc-user-feedback Goto Github PK

View Code? Open in Web Editor NEW
233.0 8.0 22.0 56.24 MB

ABC User Feedback is a standalone web application that manages Voice of Customer (VoC) data. It allows you to gather and sort feedback from your customers.

License: Apache License 2.0

JavaScript 1.67% Dockerfile 0.17% TypeScript 93.45% Handlebars 3.52% Shell 0.06% CSS 0.85% HTML 0.27%
typescript nestjs nextjs feedback-form voc docker docker-compose typeorm

abc-user-feedback's People

Contributors

chiol avatar dalinaum avatar dependabot[bot] avatar h4l-yup avatar highalps avatar imhojeong avatar inhosa-o avatar jihun avatar lahuman avatar peterdavehello avatar renovate[bot] avatar samjegal avatar tolluset avatar youngjaekim avatar zaanposni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

abc-user-feedback's Issues

Invalid user/pass in smtpConfig

export const smtpConfig = registerAs('smtp', () => ({
  use: process.env.SMTP_USE === 'true',
  host: process.env.SMTP_HOST,
  port: +process.env.SMTP_PORT,
  password: process.env.SMTP_USERNAME, <---
  username: process.env.SMTP_PASSWORD, <---
  sender: process.env.SMTP_SENDER,
  baseUrl: process.env.SMTP_BASE_URL,
}));

I have found an issue with the SMTP settings.
The username and password are configured in reverse.

db pool connection problems, debug output missing "Pool does Not exists."

I am currently trying to deploy abc-user-feedback in our cloud environment.

The backend throws internal server errors on various requests.

ERROR (1): Pool does Not exists.

However, when manually attaching to the container I am able to connect to my db.
In fact, the migrations are applied. The backend is able to connect to the database.

const mysql = require("mysql2");

var pool = mysql.createPool({
    host: "mydb",
    user: "myuser",
    password: "mypw",
    database: "userfeedback",
    port: 3306,
});

pool.getConnection(function (err, conn) {
    conn.connect((error) => {
        if (error) {
            console.error("Error connecting to MySQL database:", error);
        } else {
            console.log("Connected to MySQL database!");
        }
    });
    conn.query(process.argv.slice(2).join(" "), function (error, results, fields) {
        if (error) throw error;
        console.log("The solution is: ", results);
    });
    conn.release();
});

This is using [email protected] - the same as the backend project

When doing node index.js SELECT \* FROM migrations I get:

[
  { id: 1, timestamp: 1692159572819, name: 'Init1692159572819' },
  {
    id: 2,
    timestamp: 1692690482919,
    name: 'IssueNameUnique1692690482919'
  }
]

I am curious if you have any ideas why the backend throws these internal server errors, eventhough it is cleary able to connect to the database.
Maybe this is because of the virtualized environment where I do not have real or full cpu cores?

Maybe there should be a way to disable connection pooling?



2023-09-27T06:00:46.857615991Z [06:00:46.658] ERROR (1): Pool does Not exists. {"req":{"id":"req-1","method":"GET","url":"/api/tenants","query":{},"headers":{"host":"mydomain","user-agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0","accept":"application/json, text/plain, */*","accept-language":"en-GB,en;q=0.5","accept-encoding":"gzip, deflate, br","origin":"https://mydomain","referer":"https://mydomain/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","te":"trailers","x-forwarded-for":"myip","x-envoy-external-address":"myip","x-request-id":"92184c43-fc99-4e62-9bd4-4a3792669b18","x-envoy-expected-rq-timeout-ms":"1800000","x-k8se-app-name":"myappname","x-k8se-app-namespace":"k8se-apps","x-k8se-protocol":"http1","x-k8se-app-kind":"web","x-ms-containerapp-name":"myappname","x-ms-containerapp-revision-name":"myappname","x-arr-ssl":"true","x-forwarded-proto":"https"},"remoteAddress":"10.0.0.19","remotePort":42956},"context":"ExceptionsHandler"}
2023-09-27T06:00:46.857677266Z     err: {
2023-09-27T06:00:46.857685481Z       "type": "Error",
2023-09-27T06:00:46.857691122Z       "message": "Pool does Not exists.",
2023-09-27T06:00:46.857695721Z       "stack":
2023-09-27T06:00:46.857700730Z           Error: Pool does Not exists.
2023-09-27T06:00:46.857706461Z               at PoolNamespace.getConnection (/app/apps/api/node_modules/mysql2/lib/pool_cluster.js:37:17)
2023-09-27T06:00:46.857711660Z               at PoolCluster.getConnection (/app/apps/api/node_modules/mysql2/lib/pool_cluster.js:177:15)
2023-09-27T06:00:46.857717762Z               at /app/apps/api/src/driver/mysql/MysqlDriver.ts:933:30
2023-09-27T06:00:46.857722651Z               at new Promise (<anonymous>)
2023-09-27T06:00:46.857727500Z               at MysqlDriver.obtainSlaveConnection (/app/apps/api/src/driver/mysql/MysqlDriver.ts:932:16)
2023-09-27T06:00:46.857731508Z               at MysqlQueryRunner.connect (/app/apps/api/src/driver/mysql/MysqlQueryRunner.ts:81:18)
2023-09-27T06:00:46.857735926Z               at /app/apps/api/src/driver/mysql/MysqlQueryRunner.ts:191:55
2023-09-27T06:00:46.857740324Z               at new Promise (<anonymous>)
2023-09-27T06:00:46.857744713Z               at MysqlQueryRunner.query (/app/apps/api/src/driver/mysql/MysqlQueryRunner.ts:189:16)
2023-09-27T06:00:46.857749021Z               at SelectQueryBuilder.loadRawResults (/app/apps/api/src/query-builder/SelectQueryBuilder.ts:3789:43)
2023-09-27T06:00:46.857752818Z     }
2023-09-27T06:00:46.859592084Z [06:00:46.659] INFO (1): request errored {"req":{"id":"req-1","method":"GET","url":"/api/tenants","query":{},"headers":{"host":"mydomain","user-agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0","accept":"application/json, text/plain, */*","accept-language":"en-GB,en;q=0.5","accept-encoding":"gzip, deflate, br","origin":"https://mydomain","referer":"https://mydomain/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","te":"trailers","x-forwarded-for":"myip","x-envoy-external-address":"myip","x-request-id":"92184c43-fc99-4e62-9bd4-4a3792669b18","x-envoy-expected-rq-timeout-ms":"1800000","x-k8se-app-name":"myappname","x-k8se-app-namespace":"k8se-apps","x-k8se-protocol":"http1","x-k8se-app-kind":"web","x-ms-containerapp-name":"myappname","x-ms-containerapp-revision-name":"myappname","x-arr-ssl":"true","x-forwarded-proto":"https"},"remoteAddress":"10.0.0.19","remotePort":42956},"res":{"statusCode":500,"headers":{}},"responseTime":94}
2023-09-27T06:00:46.859609376Z     err: {
2023-09-27T06:00:46.859616420Z       "type": "Error",
2023-09-27T06:00:46.859621509Z       "message": "failed with status code 500",
2023-09-27T06:00:46.859626639Z       "stack":
2023-09-27T06:00:46.859632059Z           Error: failed with status code 500
2023-09-27T06:00:46.859638020Z               at onResFinished (/app/apps/api/node_modules/pino-http/logger.js:110:39)
2023-09-27T06:00:46.859643571Z               at ServerResponse.onResponseComplete (/app/apps/api/node_modules/pino-http/logger.js:173:14)
2023-09-27T06:00:46.859649021Z               at ServerResponse.emit (node:events:526:35)
2023-09-27T06:00:46.859654762Z               at onFinish (node:_http_outgoing:1001:10)
2023-09-27T06:00:46.859669750Z               at callback (node:internal/streams/writable:555:21)
2023-09-27T06:00:46.859675791Z               at afterWrite (node:internal/streams/writable:500:5)
2023-09-27T06:00:46.859681252Z               at afterWriteTick (node:internal/streams/writable:487:10)
2023-09-27T06:00:46.859686321Z               at processTicksAndRejections (node:internal/process/task_queues:81:21)
2023-09-27T06:00:46.859691581Z     }

Sample feedback and Sequence diagram

Now, I'm trying to use this service and I think this could be helpful to handle user-feedback.

It would be better if the two below were added.

  1. Function to generate example feedback on its own before connecting Jira.

This is because it could be helpful to users easily test it before using it in earnest.
I believe "easy/simple" is powerful.

Here's an example. These are on the Settings tab.

image

  1. Sequence diagram for the main functions or Overall system architecture.

This is to better understand this service.

Document the scope of API Keys

I created an API key to test some stuff in postman and noticed that not all endpoints are actually allowing authentication via API keys.

{
    "statusCode": 401,
    "message": "Invalid jwt",
    "error": "Unauthorized",
    "path": "/api/projects/1/channels/"
}

Since you create those API keys in the project scope, I felt like this would be a logical step.

If this is not intended by you, I would suggest to document this and add a warning/info field in the client.

Provide custom title as an option

Currently, we only have static title ABC User Feedback on admin UI.
It would be good to provide customizable title in configuration.

i18n

Should fix i18n which has awkward words.

image format

There is no right format to get images as feedbacks. (e.g. a screenshot of bug)

Therefore it would be great if it can have a format for getting images as feedbacks.

It might be great if we get AWS key for uploading to s3 and upload images when the feedbacks come in.

Otherwise just get the image links as feedbacks and make them as hyperlinks on the feedback table view to see the images easily.

Cannot use date range select for feedback overview table

When checking feedback for my various channels, I usually use the date range filter so I do not overlook any new feedback.

The date range selector no longer works since I upgraded to version 5.2414.51. It appears that it instantly reverts back to "Today-Today".

feedback-date-bug.mp4

I have tested this with Firefox 125.0.2 and Chrome 122.0.6261.111.

Also, another small inconvenience I wanted to report: If you switch through the channels on the top left, the date filter always resets. Which is a bit confusing if one wants to check feedback of the last week for multiple channels.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Warning

These dependencies are deprecated:

Datasource Name Replacement PR?
npm @types/react-datepicker Unavailable

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • fix(deps): update dependency prettier-plugin-tailwindcss to v0.6.6
  • fix(deps): update tanstack-query monorepo to v5.51.23 (@tanstack/react-query, @tanstack/react-query-devtools)
  • fix(deps): update aws-sdk-js-v3 monorepo to v3.631.0 (@aws-sdk/client-s3, @aws-sdk/s3-request-presigner)
  • fix(deps): update dependency tailwind-merge to v2.5.2
  • fix(deps): update nest monorepo to v10.4.1 (@nestjs/common, @nestjs/core, @nestjs/platform-express, @nestjs/platform-fastify, @nestjs/testing)
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
docker/docker-compose.e2e.yml
docker/docker-compose.infra-amd64.yml
  • mysql 9.0.1
  • mysql 9.0.1
  • rnwood/smtp4dev v3
  • opensearchproject/opensearch 2.16.0
  • opensearchproject/opensearch-dashboards 2.16.0
docker/docker-compose.infra-arm64.yml
  • mysql 9.0.1
  • mysql 9.0.1
  • rnwood/smtp4dev v3
  • opensearchproject/opensearch 2.16.0
  • opensearchproject/opensearch-dashboards 2.16.0
docker/docker-compose.yml
dockerfile
docker/api.dockerfile
  • node 20-alpine
docker/web.dockerfile
  • node 20-alpine
github-actions
.github/workflows/ci.yaml
  • actions/checkout v4
  • actions/checkout v4
  • actions/checkout v4
  • actions/checkout v4
.github/workflows/docker-dev-image.yml
  • actions/checkout v4
  • docker/metadata-action v5
  • docker/login-action v3
  • docker/build-push-action v6
  • actions/checkout v4
  • docker/metadata-action v5
  • docker/login-action v3
  • docker/build-push-action v6
.github/workflows/docker-prod-image.yml
  • actions/checkout v4
  • docker/metadata-action v5
  • docker/login-action v3
  • docker/build-push-action v6
  • actions/checkout v4
  • docker/metadata-action v5
  • docker/login-action v3
  • docker/build-push-action v6
.github/workflows/e2e-test.yml
  • actions/checkout v4
  • mysql 9.0.1
  • rnwood/smtp4dev v3
tooling/github/setup/action.yml
  • pnpm/action-setup v2
  • actions/setup-node v4
npm
apps/api/package.json
  • @aws-sdk/client-s3 ^3.556.0
  • @aws-sdk/s3-request-presigner ^3.556.0
  • @fastify/multipart ^8.3.0
  • @fastify/static ^7.0.3
  • @nestjs-modules/mailer ^2.0.0
  • @nestjs/axios ^3.0.2
  • @nestjs/common ^10.3.8
  • @nestjs/config ^3.2.2
  • @nestjs/core ^10.3.8
  • @nestjs/event-emitter ^2.0.4
  • @nestjs/jwt ^10.2.0
  • @nestjs/passport ^10.0.3
  • @nestjs/platform-express ^10.3.8
  • @nestjs/platform-fastify ^10.3.8
  • @nestjs/schedule ^4.0.2
  • @nestjs/swagger ^7.3.1
  • @nestjs/terminus ^10.2.3
  • @nestjs/typeorm ^10.0.2
  • @opensearch-project/opensearch ^2.7.0
  • @swc/cli ^0.4.0
  • @swc/helpers ^0.5.10
  • @types/passport-jwt ^4.0.1
  • @types/passport-local ^1.0.38
  • @willsoto/nestjs-prometheus ^6.0.0
  • aws-sdk ^2.1604.0
  • axios ^1.7.2
  • bcrypt ^5.1.1
  • class-transformer ^0.5.1
  • class-validator ^0.14.1
  • cron ^3.1.7
  • dotenv ^16.4.5
  • exceljs ^4.4.0
  • fast-csv ^5.0.1
  • fastify ^4.26.2
  • joi ^17.12.3
  • luxon ^3.4.4
  • magic-bytes.js ^1.10.0
  • mysql2 ^3.9.7
  • nestjs-cls ^4.0.0
  • nestjs-pino ^4.0.0
  • nestjs-typeorm-paginate ^4.0.4
  • nodemailer ^6.9.13
  • passport ^0.7.0
  • passport-custom ^1.1.1
  • passport-jwt ^4.0.1
  • passport-local ^1.0.0
  • pino-http ^10.0.0
  • pino-pretty ^11.0.0
  • prom-client ^15.1.2
  • reflect-metadata ^0.2.2
  • rxjs ^7.8.1
  • source-map-support ^0.5.21
  • typeorm ^0.3.20
  • typeorm-naming-strategies ^4.1.0
  • typeorm-transactional ^0.5.0
  • uuid ^10.0.0
  • @faker-js/faker ^8.4.1
  • @nestjs/cli ^10.3.2
  • @nestjs/schematics ^10.1.1
  • @nestjs/testing ^10.3.8
  • @swc-node/jest ^1.8.0
  • @swc/core ^1.4.16
  • @types/bcrypt ^5.0.2
  • @types/express ^4.17.21
  • @types/jest ^29.5.12
  • @types/luxon ^3.4.2
  • @types/node 20.14.15
  • @types/nodemailer ^6.4.15
  • @types/passport-jwt *
  • @types/supertest ^6.0.2
  • @typescript-eslint/eslint-plugin ^7.7.1
  • @typescript-eslint/parser ^7.7.1
  • eslint-config-prettier ^9.1.0
  • eslint-plugin-prettier ^5.1.3
  • jest ^29.7.0
  • mockdate ^3.0.5
  • supertest ^7.0.0
  • ts-jest ^29.1.2
  • ts-loader ^9.5.1
  • ts-node ^10.9.2
  • tsconfig-paths ^4.2.0
apps/e2e/package.json
  • @playwright/test ^1.43.1
  • axios ^1.7.2
  • mysql2 ^3.9.7
apps/web/package.json
  • @faker-js/faker ^8.4.1
  • @floating-ui/react ^0.26.12
  • @headlessui/react 2.1.2
  • @headlessui/tailwindcss ^0.2.0
  • @hookform/resolvers ^3.3.4
  • @mui/base 5.0.0-beta.40
  • @t3-oss/env-nextjs ^0.11.0
  • @tanstack/react-query ^5.31.0
  • @tanstack/react-table ^8.16.0
  • @toss/use-overlay ^1.4.0
  • axios ^1.7.2
  • axios-auth-refresh ^3.3.6
  • classnames ^2.5.1
  • clsx ^2.1.0
  • cookies-next ^4.1.1
  • countries-and-timezones ^3.6.0
  • date-fns ^3.6.0
  • dayjs ^1.11.10
  • framer-motion ^11.1.7
  • i18next ^23.11.5
  • immer ^10.0.4
  • iron-session ^8.0.0
  • jwt-decode ^4.0.0
  • next ^14.2.2
  • next-i18next ^15.3.0
  • nuqs ^1.17.4
  • pino ^9.0.0
  • react ^18.2.0
  • react-beautiful-dnd ^13.1.1
  • react-datepicker ^6.9.0
  • react-dom ^18.2.0
  • react-hook-form ^7.51.3
  • react-hot-toast ^2.4.1
  • react-i18next ^15.0.0
  • react-select ^5.8.0
  • react-use ^17.5.0
  • recharts ^2.12.6
  • sharp ^0.33.0
  • tailwind-merge ^2.3.0
  • tailwind-scrollbar-hide ^1.1.7
  • zod ^3.23.0
  • zustand ^4.5.2
  • @babel/core ^7.24.4
  • @rollup/plugin-commonjs ^26.0.0
  • @svgr/webpack ^8.1.0
  • @swc/core ^1.4.16
  • @swc/jest ^0.2.36
  • @tanstack/react-query-devtools ^5.45.1
  • @testing-library/jest-dom ^6.4.2
  • @testing-library/react ^16.0.0
  • @testing-library/user-event ^14.5.2
  • @types/jest ^29.5.12
  • @types/node 20.14.15
  • @types/react ^18.2.79
  • @types/react-beautiful-dnd ^13.1.8
  • @types/react-datepicker ^6.0.0
  • @types/react-dom ^18.2.25
  • autoprefixer ^10.4.19
  • jest ^29.7.0
  • jest-environment-jsdom ^29.7.0
  • jiti ^1.21.6
  • msw ^2.3.0
  • next-router-mock ^0.9.13
  • node-mocks-http ^1.14.1
  • openapi-typescript ^7.0.0
  • postcss ^8.4.38
  • tailwindcss ^3.4.3
  • ts-toolbelt ^9.6.0
  • undici ~5.28.4
package.json
  • prettier ^3.3.3
  • turbo ^2.0.9
  • typescript ^5.5.4
  • node >=20.11.1
  • pnpm 9.7.0
packages/ufb-shared/package.json
  • react ^18.2.0
  • tsup ^8.0.2
packages/ufb-tailwind/package.json
  • autoprefixer ^10.4.19
  • glob ^11.0.0
  • postcss ^8.4.38
  • postcss-cli ^11.0.0
  • postcss-import ^16.1.0
  • postcss-nesting ^13.0.0
  • prejss-cli ^0.3.3
  • tailwindcss ^3.4.3
packages/ufb-ui/package.json
  • @floating-ui/react ^0.26.12
  • react ^18.2.0
  • react-dom ^18.2.0
  • react-hot-toast ^2.4.1
  • @swc/core ^1.4.16
  • @swc/jest ^0.2.36
  • @types/react ^18.2.79
  • @types/react-dom ^18.2.25
  • tailwindcss ^3.4.3
tooling/eslint-plugin-header/package.json
tooling/eslint/package.json
  • @next/eslint-plugin-next ^14.2.2
  • @typescript-eslint/eslint-plugin ^7.7.1
  • @typescript-eslint/parser ^7.7.1
  • eslint-config-prettier ^9.1.0
  • eslint-config-turbo ^2.0.0
  • eslint-plugin-import ^2.29.1
  • eslint-plugin-prettier ^5.1.3
  • eslint-plugin-react ^7.34.1
  • eslint-plugin-react-hooks ^4.6.2
  • typescript-eslint ^7.12.0
  • rimraf ^6.0.0
tooling/github/package.json
tooling/prettier/package.json
  • @ianvs/prettier-plugin-sort-imports ^4.2.1
  • prettier ^3.3.3
  • prettier-plugin-tailwindcss ^0.6.0
  • @types/node 20.14.15
  • typescript ^5.5.4
tooling/typescript/package.json
nvm
.nvmrc
  • node 20.16.0

  • Check this box to trigger a request for Renovate to run again on this repository

Frontend: "yarn dev" Unhandled Runtime Error

I tried to setup up my own local development instance to fix a few bugs I discovered.
However, after doing yarn install and yarn dev I was not able to get the frontend working.

npm: 8.19.3
node: 18.13.0
yarn: 1.22.19

I have never worked with react/next/yarn before, but I tried to follow the readme as close as possible

Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

Check the render method of `App`.

image

web:dev: Warning: React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
web:dev: 
web:dev: Check your code at _app.tsx:59.
web:dev:     at App (webpack-internal:///./src/pages/_app.tsx:52:16)
web:dev:     at I18nextProvider (/home/myuser/dev/abc-user-feedback/node_modules/react-i18next/dist/commonjs/I18nextProvider.js:13:19)
web:dev:     at AppWithTranslation (/home/myuser/dev/abc-user-feedback/node_modules/next-i18next/dist/commonjs/appWithTranslation.js:59:22)
web:dev:     at StyleRegistry (/home/myuser/dev/abc-user-feedback/node_modules/styled-jsx/dist/index/index.js:449:36)
web:dev:     at PathnameContextProviderAdapter (/home/myuser/dev/abc-user-feedback/node_modules/next/dist/shared/lib/router/adapters.js:78:11)
web:dev:     at AppContainer (/home/myuser/dev/abc-user-feedback/node_modules/next/dist/server/render.js:337:29)
web:dev:     at AppContainerWithIsomorphicFiberStructure (/home/myuser/dev/abc-user-feedback/node_modules/next/dist/server/render.js:373:57)
web:dev:     at div
web:dev:     at Body (/home/myuser/dev/abc-user-feedback/node_modules/next/dist/server/render.js:673:21)
web:dev: Warning: React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports

Improve initial setup experience

  1. set default value to .env.sample
  2. set MySQL migration to true
  3. [reported] describe BASE_URL clearly
  4. add locale combobox to Tenant setup
  5. change OS to OpenSearch in .env
  6. add JWT generator link in .env comment; https://www.javainuse.com/jwtgenerator
  7. add Session Password description and generator; (1) https://github.com/vvo/iron-session?tab=readme-ov-file#session-options (2) https://github.com/vvo/iron-session?tab=readme-ov-file#session-options
  8. arrange and accumulate required & optional fields in .env for better reading.
  9. [reported] check first tenant creation flows
  10. [reported] improve Dockerfile and DockerCompose to better isolated manner

New detail view of feedback does not provide sufficient details

I am not sure if this intended or not. If so, please feel free to close this issue.

Since version 5.2414.51. The detail view of a feedback no longer includes custom fields.
Therefore, if a user enters a long text, it is only visible in the table itself. Which is a bit weird to read.

I feel like the old approach was much better with displaying all custom fields in the details panel as well.

image

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.