{"id":28410657,"url":"https://github.com/priyanshu-panwar/fastqueue","last_synced_at":"2026-01-27T08:07:13.306Z","repository":{"id":295409955,"uuid":"990030027","full_name":"priyanshu-panwar/fastqueue","owner":"priyanshu-panwar","description":"🦄 A fast, lightweight, open-source SQS alternative — deployable locally or in production, powered by in-memory queues and a clean REST API.","archived":false,"fork":false,"pushed_at":"2025-05-31T18:56:03.000Z","size":157,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-21T21:36:03.865Z","etag":null,"topics":["aws-sqs","fastapi","message-queue","typer"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/priyanshu-panwar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-25T11:04:28.000Z","updated_at":"2025-05-31T18:56:51.000Z","dependencies_parsed_at":"2025-05-25T12:20:08.602Z","dependency_job_id":"ff1b8c79-1430-4c6d-a448-14cceeb0bef7","html_url":"https://github.com/priyanshu-panwar/fastqueue","commit_stats":null,"previous_names":["priyanshu-panwar/fastqueue"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/priyanshu-panwar/fastqueue","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyanshu-panwar%2Ffastqueue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyanshu-panwar%2Ffastqueue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyanshu-panwar%2Ffastqueue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyanshu-panwar%2Ffastqueue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/priyanshu-panwar","download_url":"https://codeload.github.com/priyanshu-panwar/fastqueue/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyanshu-panwar%2Ffastqueue/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28809345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:41:26.337Z","status":"ssl_error","status_checked_at":"2026-01-27T07:41:08.776Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-sqs","fastapi","message-queue","typer"],"created_at":"2025-06-02T12:09:02.984Z","updated_at":"2026-01-27T08:07:13.300Z","avatar_url":"https://github.com/priyanshu-panwar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FastQueue\n\n🦄FastQueue is a lightweight, self-hosted message queue system inspired by AWS SQS. It's designed for small-scale, cost-conscious developers who want reliability, observability, and speed—without relying on managed services.\n\n---\n\n## Docs\n\n\u003cp\u003eRefer here for detailed \u003ca href=\"https://priyanshu-panwar.github.io/fastqueue/\" target=\"_blank\"\u003edocs\u003c/a\u003e.\u003c/p\u003e\n\n---\n\n## 🚀 Features\n\n- **Queue Management**: Queue creation, deletion, and listing\n- **Message Operations**: Message publishing (produce) and consuming (receive/delete)\n- **Authentication**: Lightweight token-based auth (JWT)\n- **User Management**: User management via API and CLI\n- **Observability**: Built-in observability and performance metrics\n- **Performance**: Redis-based caching for speed\n- **CLI Support**: CLI support for queue and auth operations\n- **Production Ready**: Pythonic and production-ready Docker setup\n- **Coming Soon**: Dead Letter Queue (DLQ) support and persistent message storage\n\n---\n\n## ⚡ Quick Start\n\n### Using Docker (Recommended)\n\n```bash\n# Pull and run the latest image\ndocker pull priyanshu009ch/fastqueue:latest\ndocker run -d -p 9080:9080 --name fastqueue priyanshu009ch/fastqueue:latest\n```\n\n### Using Source Code\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-org/fastqueue.git\ncd fastqueue\n\n# Quick start with make\nmake run\n```\n\n**Manual setup:**\n\n```bash\npip install -r requirements.txt\nuvicorn app.main:app --host 0.0.0.0 --port 9080\n```\n\n## 🚀 Getting Started\n\nThis section will walk you through the complete process of setting up FastQueue, getting an access token, creating a queue, sending messages, and receiving messages.\n\n### Step 1: Start FastQueue Server\n\n```bash\n# Using Docker (Recommended)\ndocker pull priyanshu009ch/fastqueue:latest\ndocker run -d -p 9080:9080 --name fastqueue priyanshu009ch/fastqueue:latest\n\n# Or using source code\ngit clone https://github.com/priyanshu-panwar/fastqueue.git\ncd fastqueue\nmake run\n```\n\n### Step 2: Get Access Token\n\nYou can either use the default admin user or register a new user.\n\n#### Option A: Use Default Admin User (Recommended for Quick Start)\n\nLogin with the default admin credentials:\n\n```bash\ncurl -X POST \"http://localhost:9080/v1/auth/login\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"admin\", \"password\": \"password\"}'\n```\n\n#### Option B: Register a New User\n\nFirst, register a new user:\n\n```bash\ncurl -X POST \"http://localhost:9080/v1/auth/register\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"testuser\", \"password\": \"testpass123\"}'\n```\n\n**Response:**\n```json\n{\n  \"username\": \"testuser\"\n}\n```\n\nThen login to get your access token:\n\n```bash\ncurl -X POST \"http://localhost:9080/v1/auth/login\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"testuser\", \"password\": \"testpass123\"}'\n```\n\n**Response:**\n```json\n{\n  \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...\",\n  \"refresh_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...\"\n}\n```\n\n**Save your access token** - you'll need it for all subsequent operations!\n\n### Step 3: Create Your First Queue\n\n```bash\ncurl -X POST \"http://localhost:9080/v1/queues\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN_HERE\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-first-queue\", \"max_length\": 1000, \"visibility_timeout\": 30}'\n```\n\n**Response:**\n```json\n{\n  \"name\": \"my-first-queue\",\n  \"message_count\": 0,\n  \"max_length\": 1000,\n  \"visibility_timeout\": 30\n}\n```\n\n### Step 4: Verify Queue Creation\n\nList all queues to confirm your queue was created:\n\n```bash\ncurl -X GET \"http://localhost:9080/v1/queues\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN_HERE\"\n```\n\n**Response:**\n```json\n{\n  \"queues\": [\n    {\n      \"name\": \"my-first-queue\",\n      \"message_count\": 0,\n      \"max_length\": 1000,\n      \"visibility_timeout\": 30\n    }\n  ]\n}\n```\n\n### Step 5: Send Your First Message\n\n```bash\ncurl -X POST \"http://localhost:9080/v1/queue/my-first-queue\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN_HERE\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"Action\": \"SendMessage\",\n    \"MessageBody\": \"Hello, FastQueue! This is my first message.\",\n    \"MessageAttributes\": {\n      \"priority\": \"high\",\n      \"type\": \"test\"\n    }\n  }'\n```\n\n**Response:**\n```json\n{\n  \"MessageId\": \"abc123\",\n  \"status\": \"sent\"\n}\n```\n\n### Step 6: Receive Messages\n\n```bash\ncurl -X POST \"http://localhost:9080/v1/queue/my-first-queue\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN_HERE\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"Action\": \"ReceiveMessage\",\n    \"MaxNumberOfMessages\": 1\n  }'\n```\n\n**Response:**\n```json\n{\n  \"Messages\": [\n    {\n      \"MessageId\": \"abc123\",\n      \"Body\": \"Hello, FastQueue! This is my first message.\",\n      \"Attributes\": {\n        \"priority\": \"high\",\n        \"type\": \"test\"\n      },\n      \"ReceiptHandle\": \"receipt_handle_123\"\n    }\n  ]\n}\n```\n\n### Step 7: Delete the Message (Optional)\n\nAfter processing the message, delete it from the queue:\n\n```bash\ncurl -X POST \"http://localhost:9080/v1/queue/my-first-queue\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN_HERE\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"Action\": \"DeleteMessage\",\n    \"ReceiptHandle\": \"receipt_handle_123\"\n  }'\n```\n\n**Response:**\n```json\n{\n  \"message\": \"Message deleted successfully\"\n}\n```\n\n### 🎉 You're All Set!\n\nYou've successfully:\n- ✅ Started FastQueue server\n- ✅ Registered a user and obtained an access token\n- ✅ Created your first queue\n- ✅ Sent a message to the queue\n- ✅ Received and processed the message\n- ✅ Deleted the message from the queue\n\n\n### Access the CLI\n\n```bash\n# Enter the Docker container\ndocker exec -it fastqueue bash\n\n# Use the CLI\npython -m cli.main --help\n```\n\n---\n\n## 📖 Documentation\n\n\u003cdiv class=\"docs-grid\"\u003e\n  \u003cdiv class=\"doc-card\"\u003e\n    \u003ch3\u003e\u003ca href=\"./api\"\u003e🔌 API Reference\u003c/a\u003e\u003c/h3\u003e\n    \u003cp\u003eComplete REST API documentation for authentication, queue management, and message operations.\u003c/p\u003e\n  \u003c/div\u003e\n  \n  \u003cdiv class=\"doc-card\"\u003e\n    \u003ch3\u003e\u003ca href=\"./cli\"\u003e⚡ CLI Commands\u003c/a\u003e\u003c/h3\u003e\n    \u003cp\u003eCommand-line interface documentation for managing users and queues from the terminal.\u003c/p\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n---\n\n## 🏗️ Architecture\n\nFastQueue is built with modern Python technologies:\n\n- **FastAPI**: High-performance async web framework\n- **SQLAlchemy**: Database ORM for persistent storage\n- **Redis**: High-speed caching and message queuing\n- **JWT**: Secure token-based authentication\n- **Docker**: Containerized deployment\n- **Typer**: Beautiful CLI interface\n\n---\n\n## 🔧 Configuration\n\nFastQueue can be configured through environment variables:\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `JWT_SECRET_KEY` | Secret key for access tokens | Auto-generated |\n| `JWT_REFRESH_SECRET_KEY` | Secret key for refresh tokens | Auto-generated |\n| `max_queue_length`  | max no of messages in queue at a time | 10000 (can be changed)|\n\n---\n\n## 🚀 Examples\n\n### Creating Your First Queue\n\n```bash\n# Using CLI\npython -m cli.main queue create\n\n# Using API\ncurl -X POST \"http://localhost:9080/queues\" \\\n  -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-queue\", \"max_length\": 1000}'\n```\n\n### Sending a Message\n\n```bash\ncurl -X POST \"http://localhost:9080/queue/my-queue\" \\\n  -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"Action\": \"SendMessage\",\n    \"MessageBody\": \"Hello, FastQueue!\"\n  }'\n```\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](https://github.com/priyanshu009ch/fastqueue/blob/main/CONTRIBUTING.md) for details.\n\n---\n\n## 📄 License\n\nFastQueue is released under the [MIT License](https://github.com/priyanshu009ch/fastqueue/blob/main/LICENSE).\n\n---\n\n## 🔗 Links\n\n- [GitHub Repository](https://github.com/priyanshu009ch/fastqueue)\n- [Docker Hub](https://hub.docker.com/r/priyanshu009ch/fastqueue)\n- [Docs](https://priyanshu-panwar.github.io/fastqueue/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpriyanshu-panwar%2Ffastqueue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpriyanshu-panwar%2Ffastqueue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpriyanshu-panwar%2Ffastqueue/lists"}