Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lexis-solutions/agenda-admin
Admin interface for Agenda
https://github.com/lexis-solutions/agenda-admin
admin-dashboard agenda job-scheduler jobs monorepo nodejs react
Last synced: about 1 month ago
JSON representation
Admin interface for Agenda
- Host: GitHub
- URL: https://github.com/lexis-solutions/agenda-admin
- Owner: lexis-solutions
- Created: 2021-11-12T08:10:30.000Z (about 3 years ago)
- Default Branch: development
- Last Pushed: 2022-10-26T19:12:07.000Z (about 2 years ago)
- Last Synced: 2024-10-11T00:38:35.866Z (2 months ago)
- Topics: admin-dashboard, agenda, job-scheduler, jobs, monorepo, nodejs, react
- Language: TypeScript
- Homepage:
- Size: 869 KB
- Stars: 20
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome - lexis-solutions/agenda-admin - Admin interface for Agenda (TypeScript)
README
# Agenda Admin
![logo](/client/public/logo128.png)
A Dashboard for [Agenda](https://github.com/agenda/agenda)
---
### Features
- Jobs status, refresh interval is 15 seconds by default
- Search jobs by name, including autocomplete
- Filter jobs by metadata and status
- View job details
- Delete and requeue jobs
- Schedule a new job---
### Prerequisites
Required version of MongoDB: >2.6.0
---
### Middleware usage
Agenda Admin can be used as express middleware, using the `mountAgendaAdmin` function. As an argument, it takes an object with the following fields:
- `publicUrl` - the URL at which the frontend is served
- `mountPath` - the path which the middleware should be mounted (passed to `app.use()`)
- `expressApp` - the express app
- `agenda` - an agenda instance
- `options` - an optional argument, the object can have the following properties:
- `itemsPerPage`
- `username`
- `password`#### Example:
```
const express = require('express');
const Agenda = require('agenda');
const { mountAgendaAdmin } = require('agenda-admin');const app = express();
// Other express middleware
const agenda = new Agenda({ db: { address: 'mongodb://127.0.0.1/agendaDb' } });
mountAgendaAdmin({
publicUrl: 'http://localhost:7878/agenda-admin',
mountPath: '/',
expressApp: app,
agenda
});app.listen(7878);
```---
### Docker usage
The docker container exposes port 7878
At this point, AgendaAdmin does not support port re-mapping, so the container should be connected to port 7878 only
```
docker run -p 7878:7878 \
--env CONNECTION_STRING=mongo://username:password@host/database \
--env COLLECTION=collection lexissolutions/agenda-admin:latest
```#### Docker environment configuration
| name | description | required | default value |
| ----------------- | ------------------------------------------------------------------- | -------- | ------------- |
| CONNECTION_STRING | MongoDB connection string | yes | |
| COLLECTION | MongoDB collection of jobs | no | agendaJobs |
| ITEMS_PER_PAGE | Number of jobs per page | no | 20 |
| AGENDA_USERNAME | Username used for authentication (only when a password is provided) | no | admin |
| AGENDA_PASSWORD | If no password is provided, no authentication will be required | no | |---
### Contributing
#### Install dependencies
`yarn install`
#### Running
Inside the `api` directory create an `.env.development` file with `CONNECTION_STRING` and `COLLECTION` variables, then run `yarn dev`. \
You can also run `yarn start` in the `api` and `client` directories.#### Running tests
Inside the `api` directory create an `.env.testing` file with `CONNECTION_STRING` and `COLLECTION` variables, then run `yarn test`.
#### Commit messages
Agenda Admin uses [conventional commits format](https://www.conventionalcommits.org/en/v1.0.0/).