83 lines
3.1 KiB
Markdown
83 lines
3.1 KiB
Markdown
# Avicenna Project Documentation
|
|
|
|
This document provides a comprehensive overview of the Avicenna project, its components, and instructions for development and deployment.
|
|
|
|
## Project Overview
|
|
|
|
The Avicenna project is a multi-component system composed of a web application, a data connector, a data transformation service, and the necessary infrastructure to run them. The project is divided into the following main parts:
|
|
|
|
- **service**: Contains the core application services, including the frontend dashboard and the backend data connector.
|
|
- **plattform**: Includes the data transformation and integration services.
|
|
- **infrastructure**: Defines the infrastructure as code for deploying the project.
|
|
|
|
## Services
|
|
|
|
### App Hub Dashboard (Angular Frontend)
|
|
|
|
The App Hub Dashboard is the user-facing web application for the Avicenna project, developed with Angular.
|
|
|
|
- **Location**: `service/app-hub/dashboard`
|
|
- **Key Files**:
|
|
- `angular.json`: Angular project configuration.
|
|
- `package.json`: Project dependencies and scripts.
|
|
- `tailwind.config.js`: Tailwind CSS configuration.
|
|
|
|
#### Commands
|
|
|
|
- **Run development server**: `ng serve`
|
|
- **Build for production**: `ng build`
|
|
- **Run unit tests**: `ng test`
|
|
|
|
### Data Hub Connector (NestJS Backend)
|
|
|
|
The Data Hub Connector is a NestJS-based backend service responsible for managing data, with database interactions handled by Prisma.
|
|
|
|
- **Location**: `service/data-hub/data-connector`
|
|
- **Key Files**:
|
|
- `nest-cli.json`: NestJS project configuration.
|
|
- `package.json`: Project dependencies and scripts.
|
|
- `prisma/schema.prisma`: Database schema definition.
|
|
|
|
#### Commands
|
|
|
|
- **Install dependencies**: `npm install`
|
|
- **Run in development mode**: `npm run start:dev`
|
|
- **Run in production mode**: `npm run start:prod`
|
|
- **Run tests**: `npm run test`
|
|
|
|
### Synapse (Go Plattforms)
|
|
|
|
Synapse is a data transformation service written in Go, responsible for processing and integrating data from various sources.
|
|
|
|
- **Location**: `plattform/synapse`
|
|
- **Key Files**:
|
|
- `go.mod`: Go module definition.
|
|
- `cmd/synapse/main.go`: Main application entry point.
|
|
|
|
#### Commands
|
|
|
|
- **Run the application**: `go run ./cmd/synapse`
|
|
- **Build the application**: `go build -o synapse ./cmd/synapse`
|
|
|
|
## Infrastructure
|
|
|
|
The infrastructure for the Avicenna project is managed using Pulumi and Ansible, ensuring a reproducible and automated deployment process.
|
|
|
|
- **Location**: `infrastructure`
|
|
- **Key Components**:
|
|
- **Pulumi**: Used for provisioning cloud resources.
|
|
- **Ansible**: Used for configuring services like Traefik, Portainer, and Kestra.
|
|
|
|
## Workflows
|
|
|
|
The project uses Kestra for orchestrating complex workflows, such as ETL processes and ticket management.
|
|
|
|
- **Location**: `service/workflows`
|
|
- **Key Files**:
|
|
- `avic-etl.yml`: Defines the ETL workflow.
|
|
- `avic-tickets.yml`: Defines the ticket management workflow.
|
|
|
|
## Development
|
|
|
|
To work on the Avicenna project, follow the instructions in the respective service directories. Ensure you have the required runtimes and dependencies installed, such as Node.js, Go, and the Angular CLI.
|