{"id":22731003,"url":"https://github.com/mid9tech/asset-management-wiki","last_synced_at":"2026-01-07T22:48:56.474Z","repository":{"id":247896144,"uuid":"827105856","full_name":"mid9tech/asset-management-wiki","owner":"mid9tech","description":"Wiki of asset management","archived":false,"fork":false,"pushed_at":"2024-07-18T00:53:47.000Z","size":3623,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"wikiMaster","last_synced_at":"2025-02-05T03:27:36.917Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mid9tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-11T03:22:22.000Z","updated_at":"2024-07-18T00:53:51.000Z","dependencies_parsed_at":"2024-07-11T07:30:02.764Z","dependency_job_id":"d89c7413-88f1-4476-a2e9-e157e0e98830","html_url":"https://github.com/mid9tech/asset-management-wiki","commit_stats":null,"previous_names":["nashtech-r2e-batch7-the-five/wiki","nashtech-r2e-batch7-the-nine/wiki","the-middle-nine/wiki","mid9tech/asset-management-wiki"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mid9tech%2Fasset-management-wiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mid9tech%2Fasset-management-wiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mid9tech%2Fasset-management-wiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mid9tech%2Fasset-management-wiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mid9tech","download_url":"https://codeload.github.com/mid9tech/asset-management-wiki/tar.gz/refs/heads/wikiMaster","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246264452,"owners_count":20749469,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-10T19:18:53.478Z","updated_at":"2026-01-07T22:48:56.447Z","avatar_url":"https://github.com/mid9tech.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## Hi there 👋, welcome to our project \n\n\n## Overview\n\nThe asset management application is designed to help organizations manage their assets efficiently. It comprises a front-end built with Next.js, a back-end powered by NestJS, and utilizes various services such as Docker, Azure Container Registry, and Prisma for database management. The entire system is deployed and maintained using Azure services to ensure scalability, security, and reliability.\n\n## Diagram\n\n![Logical Architecturepng.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/Logical%20Architecturepng-80dc271f-cca0-47d5-a69a-c8980c7294e4.png)\n\n## Detail Information\n\n### Front End\n\n#### Components:\n\n1. **Next.js:**\n   - **Description:** Next.js is a React framework that enables server-side rendering and generating static websites for React-based web applications. It offers an excellent developer experience with features like automatic code splitting, simple client-side routing, and built-in CSS support.\n   - **Setup:**\n     - **Installation:** Install Next.js using npm or yarn.\n       ```sh\n       npx create-next-app@latest asset-management-fe\n       # or\n       yarn create next-app asset-management-fe\n       ```\n     - **Development:** Implement the application components, pages, and APIs using React and Next.js features.\n     - **Tools \u0026 Technologies:** JavaScript/TypeScript, React, Next.js, CSS Modules, Shadcn/UI.\n\n2. **Shadcn/UI:**\n   - **Description:** Shadcn/UI is a component library used for building a consistent and cohesive user interface.\n   - **Setup:**\n     - **Installation:** Add Shadcn/UI to the Next.js project.\n       ```sh\n       npm install shadcn\n       # or\n       yarn add shadcn\n       ```\n     - **Development:** Use Shadcn/UI components to build the UI of the asset management application.\n     - **Tools \u0026 Technologies:** JavaScript/TypeScript, Shadcn/UI.\n\n3. **Vercel:**\n   - **Description:** Vercel is a platform for frontend frameworks and static sites, providing hosting and serverless functions. It integrates seamlessly with Next.js, enabling continuous deployment and performance optimizations.\n   - **Setup:**\n     - **Deployment:** Connect the GitHub repository to Vercel for automatic deployments on every push to the main branch.\n     - **Configuration:** Set environment variables and build settings in the Vercel dashboard.\n     - **Tools \u0026 Technologies:** Vercel platform.\n\n### Back End\n\n#### Components:\n\n1. **NestJS:**\n   - **Description:** NestJS is a progressive Node.js framework for building efficient and scalable server-side applications. It uses TypeScript by default and supports extensive features like dependency injection, modular architecture, and a powerful CLI.\n   - **Setup:**\n     - **Installation:** Install NestJS CLI and create a new project.\n       ```sh\n       npm i -g @nestjs/cli\n       nest new asset-management-be\n       ```\n     - **Development:** Develop the backend services, including asset, category, assignment, and request return modules.\n     - **Tools \u0026 Technologies:** TypeScript, NestJS, REST API, GraphQL.\n\n2. **Docker:**\n   - **Description:** Docker is a platform for developing, shipping, and running applications in containers. Containers allow developers to package an application with all its dependencies and run it consistently across different environments.\n   - **Setup:**\n     - **Dockerfile:** Create a Dockerfile to containerize the NestJS application.\n     - **Docker Compose:** Use Docker Compose to manage multi-container Docker applications.\n     - **Tools \u0026 Technologies:** Docker, Docker Compose.\n\n3. **Azure Container Registry:**\n   - **Description:** Azure Container Registry (ACR) is a managed Docker container registry service used for storing and managing private Docker container images.\n   - **Setup:**\n     - **Push Images:** Build and push Docker images to ACR.\n       ```sh\n       az acr build --registry \u003cregistry-name\u003e --image \u003cimage-name\u003e .\n       ```\n     - **Authentication:** Use Azure Active Directory or service principals to authenticate and manage access to ACR.\n     - **Tools \u0026 Technologies:** Azure CLI, Azure Container Registry.\n\n4. **Azure Web App:**\n   - **Description:** Azure Web App is a fully managed platform for building, deploying, and scaling web apps. It supports various languages and frameworks and integrates with DevOps pipelines for continuous deployment.\n   - **Setup:**\n     - **Deployment:** Deploy the Docker container from ACR to Azure Web App.\n       ```sh\n       az webapp create --name \u003capp-name\u003e --resource-group \u003cresource-group\u003e --plan \u003capp-service-plan\u003e --deployment-container-image-name \u003cacr-name\u003e.azurecr.io/\u003cimage-name\u003e:\u003ctag\u003e\n       ```\n     - **Configuration:** Set environment variables and configure application settings in the Azure portal.\n     - **Tools \u0026 Technologies:** Azure CLI, Azure Web App.\n\n5. **Prisma:**\n   - **Description:** Prisma is an ORM (Object-Relational Mapping) tool that simplifies database access, providing type-safe queries and migrations. It supports various databases, including PostgreSQL.\n   - **Setup:**\n     - **Installation:** Install Prisma and initialize it in the NestJS project.\n       ```sh\n       npm install @prisma/client\n       npx prisma init\n       ```\n     - **Development:** Define the database schema, generate Prisma Client, and implement database operations.\n     - **Tools \u0026 Technologies:** TypeScript, Prisma, PostgreSQL.\n\n6. **Azure Database for PostgreSQL:**\n   - **Description:** Azure Database for PostgreSQL is a managed database service providing enterprise-grade features such as high availability, security, and automated backups.\n   - **Setup:**\n     - **Provisioning:** Create a PostgreSQL server and database in the Azure portal.\n     - **Connection:** Configure Prisma to connect to the Azure PostgreSQL database using connection strings.\n       ```prisma\n       datasource db {\n         provider = \"postgresql\"\n         url      = env(\"DATABASE_URL\")\n       }\n       ```\n     - **Tools \u0026 Technologies:** Azure Portal, PostgreSQL.\n\n### Communication\n\n1. **GraphQL:**\n   - **Description:** GraphQL is a query language for APIs that allows clients to request specific data, making APIs more flexible and efficient.\n   - **Setup:**\n     - **Integration:** Integrate GraphQL with NestJS using `@nestjs/graphql` package.\n       ```sh\n       npm install @nestjs/graphql graphql-tools graphql\n       ```\n     - **Schema Definition:** Define GraphQL schemas and resolvers in the NestJS project.\n     - **Tools \u0026 Technologies:** TypeScript, NestJS, GraphQL.\n\n2. **REST API:**\n   - **Description:** REST (Representational State Transfer) is an architectural style for designing networked applications. It uses standard HTTP methods and status codes, making it easy to implement and use.\n   - **Setup:**\n     - **Controllers:** Implement RESTful endpoints in NestJS using controllers and services.\n     - **Tools \u0026 Technologies:** TypeScript, NestJS, REST API.\n\n# INFRASTRUCTURE\n\n## 1. Project Structure\n\n### Back-end Project Structure\n```\nsrc/\n├── domains/\n│ ├── assets/\n│ ├── assignments/\n│ ├── request-returns/\n│ ├── users/\n├── services/\n│ └── prisma/\n├── shared/\n│ ├── constants/\n│ ├── enums/\n│ ├── exceptions/\n│ ├── generics/\n│ ├── helpers/\n├── app.module.ts\n├── main.ts\n└── schema.graphql\n```\n[Explanation](https://github.com/The-Middle-Nine/Wiki/blob/wikiMaster/Documents/Infrastructure/Project-Structure/Backend.md)\n\n### Front-end Project Structure\n```\nsrc/\n├── app/\n│   ├── asset/\n│   ├── assignment/\n│   ├── home/\n│   ├── report/\n│   ├── request-returning/\n│   ├── user/\n│   ├── layout.tsx\n│   └── page.tsx\n├── components/\n├── libs/\n├── providers/\n├── services/\n├── styles/\n└── utils/\n```\n[Explanation](https://github.com/The-Middle-Nine/Wiki/blob/wikiMaster/Documents/Infrastructure/Project-Structure/Frontend.md)\n## 2. CI \u0026 CD\n**Tool:** Azure DevOps  \n**Pipeline Configuration:** Azure Pipelines\n\n---\n\n## Front End Pipelines\n![CI/CD Pipeline for Front End](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/CICD_FE-fc655631-990b-4f76-ade1-44717c319e49.png)\n\n## Backend Pipelines\n![CI/CD Pipeline for Backend](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/CICD_BE-5a500f1a-7054-46fa-a1e2-ead3f995f540.png)\n\n[Explanation](https://github.com/The-Middle-Nine/Wiki/blob/wikiMaster/Documents/Infrastructure/CI%26CD.md)\n## 3. Database\n**Service** \n- Azure PostgreSQL Flexible Server\n\n**Diagram**\n\n![img.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/img-8857db3d-1523-41c0-b23f-db81fd37ebd0.png)\n\n[Entities, Attributes and Relationships Explanation ](https://github.com/The-Middle-Nine/Wiki/blob/wikiMaster/Documents/Infrastructure/Database.md)\n\n## 4. Flow Chart\n![image.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/image-48012234-d60f-42bb-899d-77feceab0275.png)\n\n[Flowchart Explanation: Asset Management System](https://github.com/The-Middle-Nine/Wiki/blob/wikiMaster/Documents/Infrastructure/Flow-Chart.md)\n\n## 5. Sequence Diagram\n**Login Flow**\n![image.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/SD_AssetManagement_Login-f204cee2-8e89-43bd-b2e4-d5e1b8c2d840.png)\n\n**Assignment Management Flow**\n![image.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/SD_AssetManagement_CreateAssignment-dec8e9c2-6e6c-4589-ba75-f6e5b8272928.png)\n\n**Staff Response to His/Her Assignment Flow**\n![image.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/SD_AssetManagement_StaffResponseAssignment-72118645-fc0d-4f3c-8a64-66d86ea9b7da.png)\n\n**Create Request For Return Asset Flow**\n![image.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/SD_AssetManagement_CreateRequestReturn-d1448f1a-31ca-4f60-ad6e-36b39f9f6d5e.png)\n\n**Request for Return Completion Flow**\n![image.png](https://raw.githubusercontent.com/The-Middle-Nine/Wiki/wikiMaster/.attachments/SD_AssetManagement_CompleteRequestReturn-8644dda1-7ab9-4986-8cb1-3dfb0ddf3455.png)\n\n[Diagrams Explanation](https://github.com/The-Middle-Nine/Wiki/blob/wikiMaster/Documents/Infrastructure/Sequence-Diagram.md)\n\n## 6. State Diagram\n**Asset Scenarios and State Transitions**\n![image.png](https://raw.githubusercontent.com/the-middle-nine/Wiki/wikiMaster/.attachments/Assets_State_Diagram-4ea50479-ebf4-4653-aecb-889dbd4c8a64.png)\n\n**Assignment Scenarios and State Transitions**\n![image.png](https://raw.githubusercontent.com/the-middle-nine/Wiki/wikiMaster/.attachments/Assignments_State_Diagram-4086fd79-c81c-45f1-9fe6-4142140c27a4.png)\n\n**Request Return Scenarios and State Transitions**\n![image.png](https://raw.githubusercontent.com/the-middle-nine/Wiki/wikiMaster/.attachments/RequestReturn_State_Diagram-8e66e0b3-8c7f-4d28-a0ff-a36e70a671cb.png)\n\n[Diagrams Explanation](https://github.com/the-middle-nine/Wiki/blob/wikiMaster/Documents/Infrastructure/State-Diagram.md)\n\n## 7. Usecase Diagram\n![image.png](https://raw.githubusercontent.com/the-middle-nine/Wiki/wikiMaster/.attachments/image-869123a1-91d9-4ec3-b8a7-802909543f5c.png)\n\n[Diagrams Explanation](https://github.com/the-middle-nine/Wiki/blob/wikiMaster/Documents/Infrastructure/Use-case-Diagram.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmid9tech%2Fasset-management-wiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmid9tech%2Fasset-management-wiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmid9tech%2Fasset-management-wiki/lists"}