Getting Started
Prerequisites
- Go 1.25.5 or later
- PostgreSQL 16+
- Node.js 20+ (for admin UI development)
- Docker and Docker Compose (optional, for containerized deployment)
Local Development
1. Clone the repository
bash
git clone https://github.com/Joessst-Dev/queue-ti
cd queue-ti2. Set up PostgreSQL
Using Docker:
bash
docker run --rm -d \
--name queueti-postgres \
-e POSTGRES_DB=queueti \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
postgres:16-alpine
# Wait for health check
docker exec queueti-postgres pg_isready -U postgres3. Start the backend server
bash
make runThe server listens on:
- gRPC:
localhost:50051(for queue producers/consumers) - HTTP:
localhost:8080(for admin UI and REST API)
4. Start the admin UI (in another terminal)
bash
cd ui
npm install
npx nx serveThe UI is available at http://localhost:4200
5. Clean up
bash
docker stop queueti-postgresDocker Compose
Deploy the full stack (PostgreSQL + backend + admin UI) with one command:
bash
docker-compose upThe admin UI is available at http://localhost:8081 (login: admin / secret).
Your First Message
Enqueue a message
bash
curl -X POST http://localhost:8080/api/messages \
-H "Content-Type: application/json" \
-d '{
"topic": "hello",
"payload": "eyJtZXNzYWdlIjogIkhyIH0="}The payload field is base64-encoded JSON. Decode the example above:
bash
echo "eyJtZXNzYWdlIjogIkhybGRvIH0=" | base64 -d
# Output: {"message": "Hello"}Response:
json
{"id": "550e8400-e29b-41d4-a716-446655440000"}View the message in the admin UI
- Open
http://localhost:4200(orhttp://localhost:8081if using Docker Compose) - Log in with username
adminand passwordsecret - You'll see your message in the Messages table with status
pending
Dequeue and acknowledge the message
bash
# Dequeue the message
curl -X POST http://localhost:8080/api/messages/dequeue \
-H "Content-Type: application/json" \
-d '{"topic": "hello", "count": 1}'Response:
json
{
"messages": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"topic": "hello",
"payload": "eyJtZXNzYWdlIjogIkhlbGxvIn0=",
"metadata": {},
"key": null,
"created_at": "2025-04-25T12:00:00Z",
"retry_count": 0,
"max_retries": 3
}
]
}The message status transitions from pending to processing.
Acknowledge it:
bash
curl -X POST http://localhost:8080/api/messages/550e8400-e29b-41d4-a716-446655440000/ack \
-H "Content-Type: application/json" \
-d '{}'The message status transitions from processing to deleted.
Next Steps
- Read the Concepts guide to understand queue mechanics, visibility timeouts, and consumer groups
- Explore the Authentication guide to enable JWT-based auth
- Check the Client Libraries to build applications that integrate with queue-ti
- Review Deployment for production-ready configurations