Skip to content

SnazziesLab/Topica

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Topica

Topica is a simple event/topic history provider. This service enables tracking of specific asynchronous jobs' progress or identifying failure points in a data processing pipeline.

See what scenarios topica can help with.

License

All rights reserved. I will eventually pick the right license for this project.

You're free to use Topica in your own projects or in commercial settings free of charge. I am not liable for any damages caused.

Rights to contribution made is transfered to repo owner immediately upon submission unless specified otherwise.

Permissions Limitations
✅ Private use ❌ Distribution
✅ Modification ❌ Trademark use
✅ Commercial use ❌ Patent use
❌ Warranty
❌ Liability

Example docker-compose

  1. cd Example
  2. docker-compose up

Setup

Env Variables

name Description Options
SecretKey Long secret string used for creating Symmetric Security Key at login string
DbType Db type used to store app data 'Postgres', 'SqlServer', 'Sqlite', 'InMemory'
DbConnectionString (Optional) Db connection string for none in-memory Db string

Auth Config (auth.config.json)

This app allows use of simple user pass or api key to auth. This is setup via passing a json file like following.

  • Auth data is not persistent, the in-memory AuthDb is populated at server startup.

{
"ApiKeys": [
{
"ApiKey": "ApiKeyWithReadAndWriteRoles",
"Roles": [ "read", "write" ]
},
{
"ApiKey": "ApiKeyWithReadRole",
"Roles": [ "read" ]
}
],
"Users": [
{
"Username": "admin",
"Password": "admin",
"Roles": [ "read", "write" ]
},
{
"Username": "guest",
"Password": "guest",
"Roles": [ "read" ]
}
]
}

API

See Open API Spec

Usage

Clients

Using open api generator, a bunch of http clients can help you easily communicate with the server api through your app. See Clients.

Basic usage concept

Post job events for Job1

Post /api/messages Body: Job1 created Response: 529f884e-a611-44f8-b73b-0140d5c26b63

Post /api/messages?Topic=529f884e-a611-44f8-b73b-0140d5c26b63 Body: service1: processing

Post /api/messages?Topic=529f884e-a611-44f8-b73b-0140d5c26b63 Body: service2: processing

Post /api/messages?Topic=529f884e-a611-44f8-b73b-0140d5c26b63 Body: completed

Get all event history of Job1

Get /api/topics/529f884e-a611-44f8-b73b-0140d5c26b63

Roadmap

There are currently no major features planned. Feature suggestions are welcome.

See milestones for things being currently worked on.