https://github.com/pascalpost/campaign-manager
https://github.com/pascalpost/campaign-manager
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/pascalpost/campaign-manager
- Owner: pascalPost
- License: apache-2.0
- Created: 2024-02-05T09:51:51.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-26T20:23:26.000Z (almost 2 years ago)
- Last Synced: 2025-03-21T02:16:13.156Z (over 1 year ago)
- Language: Go
- Size: 1.02 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# campaign-manager
campaign-manager is a project designed to manage computation campaigns (execution of a lot of potentially
compute intensive, long-running tasks) with a user-friendly frontend for creating, editing, monitoring and interaction.
The campaigns can be generated based on Go templates and YAML-based configuration files.
## Project Structure
The project consists of two main building blocks:
1. File explorer and file editing
2. Launch and managing of computations via workload manager
## Architecture
The architecture of the project is as follows:
```plaintext
+--------------------------+
| |
| Frontend |
| (React) |
| |
+------------+-------------+
|
| HTTP Requests (REST API)
|
+------------v-------------+
| |
| Backend |
| (GoLang API) |
| |
+------------+-------------+
|
| Workload Manager
|
+------------v-------------+
| |
| High-Performance |
| Computing Cluster |
| |
+--------------------------+
```
### Backend
The backend is written in Go and uses [oapi-codegen](https://github.com/deepmap/oapi-codegen) to generate REST API
boilerplate from `./api/openapi.yaml`.
The router used is chi (https://github.com/go-chi/chi).
#### Development
For auto-update (re-build) on change, you can use air, running (
after [installation](https://github.com/cosmtrek/air#installation))
```shell
air
```
The air setup will also run the restapi code generation, which can be also run manually
```shell
go generate ./...
```
### Frontend
The frontend is built with React based on the shadcn-ui components and communicates with the backend through HTTP
requests (REST API).
The calls are generate based on the OpenAPI documentation `./api/openapi.yaml`.
The frontend is a git submodule of https://github.com/pascalPost/campaign-manager-frontend.git.
#### Development
The dev server can be started with `pnpm run dev`.