diff --git a/README.md b/README.md
index effee35..477120a 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,7 @@ This repository is a **monorepo** for all frontend services of IMPHNEN. The mono
2. **Backoffice** - Application for Internal Management Website.
3. **Dimentorin** - Application for Mentoring Service.
4. **Landing Page** - Application for Landing Page.
+5. **QR Campaign** - Application for QR Campaign Management.
## How to install
@@ -54,6 +55,10 @@ Use the following commands to run in development mode:
```sh
npm run landing:dev
```
+- **QR Campaign**:
+ ```sh
+ npm run qrcampaign:dev
+ ```
### Build
@@ -75,6 +80,10 @@ Use the following commands to build the applications:
```sh
npm run landing:build
```
+- **QR Campaign**:
+ ```sh
+ npm run qrcampaign:build
+ ```
### Production
@@ -96,6 +105,10 @@ Use the following commands to run the applications in production mode:
```sh
npm run landing:prod
```
+- **QR Campaign**:
+ ```sh
+ npm run qrcampaign:prod
+ ```
### Storybook
diff --git a/apps/qrcampaign/eslint.config.mjs b/apps/qrcampaign/eslint.config.mjs
new file mode 100644
index 0000000..e8e4590
--- /dev/null
+++ b/apps/qrcampaign/eslint.config.mjs
@@ -0,0 +1,12 @@
+import nx from '@nx/eslint-plugin';
+import baseConfig from '../../eslint.config.mjs';
+
+export default [
+ ...baseConfig,
+ ...nx.configs['flat/react'],
+ {
+ files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
+ // Override or add rules here
+ rules: {},
+ },
+];
diff --git a/apps/qrcampaign/index.html b/apps/qrcampaign/index.html
new file mode 100644
index 0000000..bba4138
--- /dev/null
+++ b/apps/qrcampaign/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+ Qrcampaign
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/qrcampaign/project.json b/apps/qrcampaign/project.json
new file mode 100644
index 0000000..d02ef81
--- /dev/null
+++ b/apps/qrcampaign/project.json
@@ -0,0 +1,9 @@
+{
+ "name": "qrcampaign",
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "apps/qrcampaign/src",
+ "projectType": "application",
+ "tags": [],
+ "// targets": "to see all targets run: nx show project qrcampaign --web",
+ "targets": {}
+}
diff --git a/apps/qrcampaign/public/favicon.ico b/apps/qrcampaign/public/favicon.ico
new file mode 100644
index 0000000..317ebcb
Binary files /dev/null and b/apps/qrcampaign/public/favicon.ico differ
diff --git a/apps/qrcampaign/src/app/app.module.css b/apps/qrcampaign/src/app/app.module.css
new file mode 100644
index 0000000..7b88fba
--- /dev/null
+++ b/apps/qrcampaign/src/app/app.module.css
@@ -0,0 +1 @@
+/* Your styles goes here. */
diff --git a/apps/qrcampaign/src/app/app.spec.tsx b/apps/qrcampaign/src/app/app.spec.tsx
new file mode 100644
index 0000000..b95ead2
--- /dev/null
+++ b/apps/qrcampaign/src/app/app.spec.tsx
@@ -0,0 +1,26 @@
+import { render } from '@testing-library/react';
+import { BrowserRouter } from 'react-router-dom';
+
+import App from './app';
+
+describe('App', () => {
+ it('should render successfully', () => {
+ const { baseElement } = render(
+
+
+
+ );
+ expect(baseElement).toBeTruthy();
+ });
+
+ it('should have a greeting as the title', () => {
+ const { getAllByText } = render(
+
+
+
+ );
+ expect(
+ getAllByText(new RegExp('Welcome qrcampaign', 'gi')).length > 0
+ ).toBeTruthy();
+ });
+});
diff --git a/apps/qrcampaign/src/app/nx-welcome.tsx b/apps/qrcampaign/src/app/nx-welcome.tsx
new file mode 100644
index 0000000..f3c5c7a
--- /dev/null
+++ b/apps/qrcampaign/src/app/nx-welcome.tsx
@@ -0,0 +1,856 @@
+/*
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ This is a starter component and can be deleted.
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ Delete this file and get started with your project!
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ */
+export function NxWelcome({ title }: { title: string }) {
+ return (
+ <>
+