dify/web
-LAN- 39d0da72a0 fix(file-uploader): resolve file extension logic order
Rearranged the logic in `getFileExtension` to first check for a valid `fileName` before considering `fileMimetype` or `isRemote`. This change ensures that the function prioritizes extracting extensions from file names directly, improving accuracy and handling edge cases more effectively. This update may prevent incorrect file extensions when mimetype is prioritized incorrectly.

Resolves #123.
2024-11-14 21:21:41 +08:00
..
__mocks__ feat: regenerate history switch navigation (#8749) 2024-10-24 12:09:46 +08:00
.husky feat: add format util unit and add pre-commit unit check (#8427) 2024-09-19 10:39:27 +08:00
.storybook feat: storybook (#9324) 2024-10-16 10:18:48 +08:00
.vscode feat: add frontend unit test framework (#6426) 2024-07-18 17:35:10 +08:00
app fix(file-uploader): resolve file extension logic order 2024-11-14 21:21:41 +08:00
assets fix: missing files (#2291) 2024-01-30 16:21:40 +08:00
bin Feat/embedding (#553) 2023-07-12 17:27:50 +08:00
config fix: prompt-editor regex.lastIndex needed to reset (#9097) 2024-10-09 10:22:20 +08:00
context Feat/attachments (#9526) 2024-10-21 10:32:37 +08:00
docker feat: support csp (#9111) 2024-10-11 16:14:56 +08:00
hooks refactor the logic of refreshing access_token (#10068) 2024-11-05 12:38:31 +08:00
i18n Feat/iteration single run time (#10512) 2024-11-11 14:47:52 +08:00
models feat(workflow): add configurable workflow file upload limit (#10176) 2024-11-04 15:55:34 +08:00
public fix: embedded chat on ios (#8718) 2024-09-24 17:23:11 +08:00
service fix: Page may lock if user close the page when refresh access_token (#10550) 2024-11-12 15:18:19 +08:00
themes Feat/attachments (#9526) 2024-10-21 10:32:37 +08:00
types Feat/iteration single run time (#10512) 2024-11-11 14:47:52 +08:00
utils Feat/attachments (#9526) 2024-10-21 10:32:37 +08:00
.dockerignore build: fix .dockerignore file (#800) 2023-08-11 18:19:44 +08:00
.editorconfig Initial commit 2023-05-15 08:51:32 +08:00
.env.example feat: support csp (#9111) 2024-10-11 16:14:56 +08:00
.eslintignore feat: add code style (#242) 2023-05-29 17:49:01 +08:00
.eslintrc.json feat: storybook (#9324) 2024-10-16 10:18:48 +08:00
.gitignore feat: storybook (#9324) 2024-10-16 10:18:48 +08:00
Dockerfile feat: Improvement- use non root user for Web container (#8928) 2024-10-08 11:12:21 +08:00
global.d.ts feat: support assistant frontend (#2139) 2024-01-23 19:31:56 +08:00
jest.config.ts feat: regenerate history switch navigation (#8749) 2024-10-24 12:09:46 +08:00
middleware.ts fix: add new domain to whitelist (#9265) 2024-10-12 11:32:40 +08:00
next.config.js feat:add tts-streaming config and future (#5492) 2024-07-09 11:33:58 +08:00
package.json chore: update version to 0.11.1 across all configurations and Docker images (#10539) 2024-11-11 18:32:28 +08:00
postcss.config.js Initial commit 2023-05-15 08:51:32 +08:00
README.md feat: storybook (#9324) 2024-10-16 10:18:48 +08:00
tailwind.config.js Feat/attachments (#9526) 2024-10-21 10:32:37 +08:00
tsconfig.json Initial commit 2023-05-15 08:51:32 +08:00
typography.js Initial commit 2023-05-15 08:51:32 +08:00
yarn.lock chore(deps): bump elliptic from 6.5.7 to 6.6.0 in /web (#10587) 2024-11-12 16:43:11 +08:00

Dify Frontend

This is a Next.js project bootstrapped with create-next-app.

Getting Started

Run by source code

To start the web frontend service, you will need Node.js v18.x (LTS) and NPM version 8.x.x or Yarn.

First, install the dependencies:

npm install
# or
yarn install --frozen-lockfile

Then, configure the environment variables. Create a file named .env.local in the current directory and copy the contents from .env.example. Modify the values of these environment variables according to your requirements:

cp .env.example .env.local
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=

Finally, run the development server:

npm run dev
# or
yarn dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the file under folder app. The page auto-updates as you edit the file.

Deploy

Deploy on server

First, build the app for production:

npm run build

Then, start the server:

npm run start

If you want to customize the host and port:

npm run start --port=3001 --host=0.0.0.0

Storybook

This project uses Storybook for UI component development.

To start the storybook server, run:

yarn storybook

Open http://localhost:6006 with your browser to see the result.

Lint Code

If your IDE is VSCode, rename web/.vscode/settings.example.json to web/.vscode/settings.json for lint code setting.

Test

We start to use Jest and React Testing Library for Unit Testing.

You can create a test file with a suffix of .spec beside the file that to be tested. For example, if you want to test a file named util.ts. The test file name should be util.spec.ts.

Run test:

npm run test

If you are not familiar with writing tests, here is some code to refer to:

Documentation

Visit https://docs.dify.ai/getting-started/readme to view the full documentation.

Community

The Dify community can be found on Discord community, where you can ask questions, voice ideas, and share your projects.