- Introduced new test cases to verify that the JinaReader component correctly handles scenarios where the crawl limit is null or undefined, ensuring that the task is not initiated in these cases. - Refactored existing tests to remove unnecessary promise resolutions, improving clarity and maintainability. |
||
|---|---|---|
| .. | ||
| .husky | ||
| .storybook | ||
| .vscode | ||
| __mocks__ | ||
| __tests__ | ||
| app | ||
| assets | ||
| bin | ||
| config | ||
| context | ||
| docker | ||
| hooks | ||
| i18n | ||
| i18n-config | ||
| models | ||
| public | ||
| scripts | ||
| service | ||
| testing | ||
| themes | ||
| types | ||
| utils | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| Dockerfile | ||
| README.md | ||
| eslint.config.mjs | ||
| global.d.ts | ||
| knip.config.ts | ||
| middleware.ts | ||
| next.config.js | ||
| package.json | ||
| pnpm-lock.yaml | ||
| postcss.config.js | ||
| tailwind-common-config.ts | ||
| tailwind.config.js | ||
| tsconfig.json | ||
| typography.js | ||
| vitest.config.ts | ||
| vitest.setup.ts | ||
README.md
Dify Frontend
This is a Next.js project bootstrapped with create-next-app.
Getting Started
Run by source code
Before starting the web frontend service, please make sure the following environment is ready.
First, install the dependencies:
pnpm install
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
NEXT_PUBLIC_COOKIE_DOMAIN=
# 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=
[!IMPORTANT]
- When the frontend and backend run on different subdomains, set NEXT_PUBLIC_COOKIE_DOMAIN=1. The frontend and backend must be under the same top-level domain in order to share authentication cookies.
- It's necessary to set NEXT_PUBLIC_API_PREFIX and NEXT_PUBLIC_PUBLIC_API_PREFIX to the correct backend API URL.
Finally, run the development server:
pnpm run 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:
pnpm run build
Then, start the server:
pnpm run start
If you want to customize the host and port:
pnpm run start --port=3001 --host=0.0.0.0
If you want to customize the number of instances launched by PM2, you can configure PM2_INSTANCES in docker-compose.yaml or Dockerfile.
Storybook
This project uses Storybook for UI component development.
To start the storybook server, run:
pnpm 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 use Vitest and React Testing Library for Unit Testing.
📖 Complete Testing Guide: See web/testing/testing.md for detailed testing specifications, best practices, and examples.
Run test:
pnpm test
Example Code
If you are not familiar with writing tests, refer to:
- classnames.spec.ts - Utility function test example
- index.spec.tsx - Component test example
Analyze Component Complexity
Before writing tests, use the script to analyze component complexity:
pnpm analyze-component app/components/your-component/index.tsx
This will help you determine the testing strategy. See web/testing/testing.md for details.
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.