diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..f925601
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,9 @@
+Dockerfile
+.dockerignore
+.idea
+assets
+node_modules
+npm-debug.log
+README.md
+.next
+.git
\ No newline at end of file
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index aa9d5fb..d4f69e5 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -48,5 +48,5 @@ jobs:
- run: pnpm install
- name: Build the application
env:
- NEXT_PUBLIC_BACKEND_API: "http://localhost:8080"
+ BACK_END_URL: "http://localhost:8080"
run: pnpm build
diff --git a/Dockerfile b/Dockerfile
index 721e4ce..087e8d6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,12 +7,10 @@ RUN apk add --no-cache libc6-compat
WORKDIR /app
# Install dependencies based on the preferred package manager
-COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
+COPY package.json pnpm-lock.yaml* ./
RUN \
- if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
- elif [ -f package-lock.json ]; then npm ci; \
- elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \
- else echo "Lockfile not found." && exit 1; \
+ if [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \
+ else echo "Pnpm lockfile not found." && exit 1; \
fi
diff --git a/README.md b/README.md
index fb58947..0c08306 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# FlowInquiry Client
[![Build status](https://github.com/flowinquiry/flowinquiry-frontend/actions/workflows/node.js.yml/badge.svg)](https://github.com/flowinquiry/flowinquiry-frontend/actions/workflows/node.js.yml)
+![License](https://img.shields.io/badge/License-AGPLv3-blue)
## What is FlowInquiry
@@ -11,16 +12,16 @@ FlowInquiry is a service designed to streamline the management of cases, tickets
FlowInquiry addresses several challenges faced by organizations in managing cases, tickets, and team communication. Here are some specific use cases:
**On-Call System Management**
-In an on-call system, teams often face challenges in managing incoming requests or incidents, particularly when multiple shifts or team members are involved. FlowInquiry ensures that each request follows a well-defined workflow, with SLAs for escalation and resolution. This helps reduce response times, avoids missed escalations, and provides clear accountability for handling incidents.
+Managing incoming requests or incidents in an on-call system can be challenging with multiple shifts and team members. FlowInquiry streamlines the process by enforcing well-defined workflows with SLAs for escalation and resolution, reducing response times, avoiding missed escalations, and ensuring accountability.
**Case Management in CRM Applications**
-CRM applications often struggle to manage customer cases effectively, especially when handling inquiries, complaints, or service requests. FlowInquiry enables teams to define custom workflows tailored to specific case types, such as refunds, escalations, or product inquiries. SLAs for each workflow stage ensure customers receive timely updates and resolutions, enhancing customer satisfaction and loyalty.
+FlowInquiry helps CRM teams manage customer cases like inquiries, complaints, and service requests by enabling custom workflows tailored to case types such as refunds or escalations. SLAs at each workflow stage ensure timely updates and resolutions, boosting customer satisfaction and loyalty.
**Team Communication and Collaboration**
-Effective communication within and across teams can be difficult in large organizations, especially when requests involve multiple departments or external stakeholders. FlowInquiry acts as a centralized platform where requests are logged, tracked, and routed through clearly defined workflows. This reduces miscommunication, prevents delays, and ensures all parties are aligned on priorities.
+FlowInquiry enhances communication across teams by providing a centralized platform to log, track, and route requests through clear workflows. This minimizes miscommunication, prevents delays, and aligns all stakeholders on priorities, even in large organizations.
**Service Request Tracking for IT Teams**
-IT teams managing internal service requests often encounter bottlenecks due to unclear processes or manual tracking. FlowInquiry allows IT departments to automate workflows for common requests such as software installation, access management, or issue resolution. The system ensures each request is assigned, processed, and resolved within agreed SLAs.
+FlowInquiry automates IT service request workflows, such as software installation and access management, reducing bottlenecks caused by manual tracking. It ensures requests are assigned, processed, and resolved efficiently within SLA timelines.
By tailoring workflows to these and other scenarios, FlowInquiry empowers teams to streamline operations, meet deadlines, and deliver exceptional service to both internal and external stakeholders.
@@ -109,10 +110,10 @@ Set up the application environment variables by running the following script:
scripts/init_environments.sh
```
-This script generates environment variables, including NEXT_PUBLIC_BACKEND_API, to establish the communication between the client and server. Example
+This script generates environment variables, including BACK_END_URL, to establish the communication between the client and server. Example
```
-NEXT_PUBLIC_API_BASE_URL=http://localhost:8080
+BACK_END_URL=http://localhost:8080
```
We recommend running the `scripts/all.sh` script, as it streamlines the process by checking your environment settings and performing all necessary configurations, removing the need to execute multiple scripts manually.
diff --git a/next.config.mjs b/next.config.mjs
index 3e8103c..866b4cc 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -6,7 +6,7 @@ const nextConfig = {
fallback: [
{
source: "/api/:path*",
- destination: `${process.env.NEXT_PUBLIC_BACKEND_API}/api/:path*`,
+ destination: `${process.env.BACK_END_URL}/api/:path*`,
},
],
};
diff --git a/package.json b/package.json
index 3fedb04..ec28c9e 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,7 @@
"nanoid": "^5.0.9",
"next": "^15.1.2",
"next-auth": "5.0.0-beta.25",
+ "next-runtime-env": "^3.2.2",
"next-themes": "^0.4.4",
"nuqs": "^2.2.3",
"react": "^19.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f770a3f..cbeb93a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -169,6 +169,9 @@ importers:
next-auth:
specifier: 5.0.0-beta.25
version: 5.0.0-beta.25(next@15.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
+ next-runtime-env:
+ specifier: ^3.2.2
+ version: 3.2.2(next@15.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
next-themes:
specifier: ^0.4.4
version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -4254,6 +4257,15 @@ packages:
nodemailer:
optional: true
+ next-runtime-env@3.2.2:
+ resolution:
+ {
+ integrity: sha512-S5S6NxIf3XeaVc9fLBN2L5Jzu+6dLYCXeOaPQa1RzKRYlG2BBayxXOj6A4VsciocyNkJMazW1VAibtbb1/ZjAw==,
+ }
+ peerDependencies:
+ next: ^14
+ react: ^18
+
next-themes@0.4.4:
resolution:
{
@@ -8373,6 +8385,11 @@ snapshots:
next: 15.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react: 19.0.0
+ next-runtime-env@3.2.2(next@15.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0):
+ dependencies:
+ next: 15.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ react: 19.0.0
+
next-themes@0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
react: 19.0.0
diff --git a/scripts/init_environments.sh b/scripts/init_environments.sh
index 80e479b..c70c92a 100755
--- a/scripts/init_environments.sh
+++ b/scripts/init_environments.sh
@@ -33,7 +33,7 @@ while true; do
done
# Append to the .env.local file
-echo "NEXT_PUBLIC_BACKEND_API=\"$backend_server\"" >> "$output_file"
+echo "NEXT_PUBLIC_BACK_END_URL=\"$backend_server\"" >> "$output_file"
# Run npx auth and append its output to .env
diff --git a/src/app/(auth)/login/page.tsx b/src/app/(auth)/login/page.tsx
index 7211c0c..700bfb7 100644
--- a/src/app/(auth)/login/page.tsx
+++ b/src/app/(auth)/login/page.tsx
@@ -1,6 +1,6 @@
import LoginForm from "@/components/auth/login-form";
-const LoginPage = () => {
+const LoginPage = async () => {
return