Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
*.db
dbschema.sql

# Nuxt dev/build outputs
.output
Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Standalone admin panel with all data stored in SQLite database
- [Previews](#previews)
- [Usage](#usage)
- [Docker Compose Example](#docker-compose-example)
- [Running without Docker](#running-without-docker)
- [Task States](#task-states)
- [Development](#development)

Expand Down Expand Up @@ -103,7 +104,7 @@ class TaskiqAdminMiddleware(TaskiqMiddleware):
```python
...
broker = (
ListQueueBroker(
RedisStreamBroker(
url=redis_url,
queue_name="my_lovely_queue",
)
Expand Down Expand Up @@ -164,6 +165,11 @@ volumes:
admin_data:
```

### Running without Docker
1) `cp env-example .env`, enter `.env` file and fill in all needed variables
2) run `make dev` to run it locally in dev mode
3) run `make prod` to run it locally in prod mode

### Task States
Let's assume we have a task 'do_smth', there are all states it can embrace:
1) `queued` - the task has been sent to the queue without an error
Expand Down
25 changes: 25 additions & 0 deletions makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
MODE ?= dev

ifneq (,$(wildcard ./.env))
include .env
export
endif

.PHONY: all dev prod install gen run build

all: $(MODE)

install:
pnpm install --frozen-lockfile

gen:
pnpm run generate:sql

dev: install gen
pnpm dev

build: install gen
pnpm build

prod: build
node .output/server/index.mjs
46 changes: 26 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,55 @@
{
"name": "nuxt-app",
"name": "taskiq-admin",
"private": true,
"type": "module",
"version": "1.6.0",
"version": "1.7.0",
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare",
"typecheck": "tsc --noEmit",
"test": "vitest --run",
"db:push": "drizzle-kit push",
"generate:sql": "drizzle-kit export --sql | sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g; s/CREATE INDEX/CREATE INDEX IF NOT EXISTS/g' > dbschema.sql",
"generate:future:sql": "drizzle-kit export --sql | sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g; s/CREATE INDEX/CREATE INDEX IF NOT EXISTS/g' > dbschema.sql; sed -i '1s/^/PRAGMA journal_mode = WAL; PRAGMA synchronous = normal; PRAGMA journal_size_limit = 6144000;\\n/' dbschema.sql"
"generate:sql": "drizzle-kit export --sql | sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g; s/CREATE INDEX/CREATE INDEX IF NOT EXISTS/g' > dbschema.sql; sed -i '1s/^/PRAGMA journal_mode = WAL; PRAGMA synchronous = normal; PRAGMA journal_size_limit = 6144000;\\n/' dbschema.sql",
"generate:deprecated:sql": "drizzle-kit export --sql | sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g; s/CREATE INDEX/CREATE INDEX IF NOT EXISTS/g' > dbschema.sql"
},
"dependencies": {
"@internationalized/date": "^3.8.0",
"@internationalized/date": "^3.8.2",
"@tailwindcss/vite": "^4.1.3",
"@tanstack/vue-table": "^8.21.3",
"@vueuse/core": "^12.8.2",
"better-sqlite3": "^11.9.1",
"bootstrap": "^5.3.3",
"@vueuse/core": "^13.5.0",
"better-sqlite3": "^12.2.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"dayjs": "^1.11.13",
"dotenv": "^16.4.7",
"drizzle-orm": "^0.42.0",
"lucide-vue-next": "^0.487.0",
"nuxt": "^3.16.2",
"dotenv": "^16.6.1",
"drizzle-orm": "^0.44.3",
"lucide-vue-next": "^0.524.0",
"nuxt": "^3.17.7",
"reka-ui": "^2.2.0",
"tailwind-merge": "^3.2.0",
"tailwindcss": "^4.1.3",
"tailwindcss": "^4.1.11",
"tw-animate-css": "^1.2.5",
"vue": "^3.5.13",
"vue-router": "^4.5.0",
"vue-sonner": "^1.3.0",
"zod": "^3.24.3"
"vue": "^3.5.17",
"vue-router": "^4.5.1",
"vue-sonner": "^2.0.2",
"zod": "^3.25.76"
},
"packageManager": "pnpm@8.7.6+sha1.a428b12202bc4f23b17e6dffe730734dae5728e2",
"devDependencies": {
"@iconify-json/radix-icons": "^1.2.2",
"@iconify/vue": "^4.3.0",
"@iconify/vue": "^5.0.0",
"@nuxt/test-utils": "^3.19.2",
"@types/better-sqlite3": "^7.6.12",
"drizzle-kit": "^0.31.0",
"@vue/test-utils": "^2.4.6",
"drizzle-kit": "^0.31.4",
"happy-dom": "^18.0.1",
"playwright-core": "^1.53.1",
"prettier": "^3.5.3",
"typescript": "^5.8.3"
"tsx": "^4.20.3",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
}
}
Loading