{"id":23417300,"url":"https://github.com/max-im/tickets-app","last_synced_at":"2026-04-06T02:33:44.806Z","repository":{"id":37598389,"uuid":"505211428","full_name":"Max-im/tickets-app","owner":"Max-im","description":"A microservices-based ticket booking application using Kubernetes, Docker, Next.js, Node.js, TypeScript, MongoDB, and Redis. Features include authentication, ticket management, orders, payments, and event-driven expiration handling.","archived":false,"fork":false,"pushed_at":"2022-07-06T07:36:43.000Z","size":144,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-03T14:37:04.229Z","etag":null,"topics":["jest","kubernetes","mongodb","nats-streaming","nextjs","node","redis","stripe","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Max-im.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}},"created_at":"2022-06-19T20:22:24.000Z","updated_at":"2024-12-19T13:23:16.000Z","dependencies_parsed_at":"2022-09-09T12:40:53.909Z","dependency_job_id":null,"html_url":"https://github.com/Max-im/tickets-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Max-im/tickets-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Max-im%2Ftickets-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Max-im%2Ftickets-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Max-im%2Ftickets-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Max-im%2Ftickets-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Max-im","download_url":"https://codeload.github.com/Max-im/tickets-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Max-im%2Ftickets-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31457722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["jest","kubernetes","mongodb","nats-streaming","nextjs","node","redis","stripe","typescript"],"created_at":"2024-12-22T23:15:54.485Z","updated_at":"2026-04-06T02:33:44.789Z","avatar_url":"https://github.com/Max-im.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Application for tickets booking\n\n## Microservice approach to application building\n\n![auth test](https://github.com/max-im/tickets-app/actions/workflows/auth-test.yaml/badge.svg)\n![orders test](https://github.com/max-im/tickets-app/actions/workflows/orders-test.yaml/badge.svg)\n![payment test](https://github.com/max-im/tickets-app/actions/workflows/payment-test.yaml/badge.svg)\n![ticket test](https://github.com/max-im/tickets-app/actions/workflows/ticket-test.yaml/badge.svg)\n\n## Features\n\n- Kubernetes\n- Docker\n- Next.js\n- Node\n- TypeScript\n- MongoDB\n- Redis\n- Jest\n- NATS streaming\n- NPM module for sharing common code\n\n## client service\n\nNext app to of the app\n\n## auth service\n\n| method | url                    | body                              | description           |\n| ------ | ---------------------- | --------------------------------- | --------------------- |\n| POST   | /api/users/signup      | {email: string, password: string} | create user           |\n| POST   | /api/users/signin      | {email: string, password: string} | login user            |\n| POST   | /api/users/signout     | -                                 | logout user           |\n| GET    | /api/users/currentuser | -                                 | get current user data |\n\n## ticket service\n\n| method | url              | body                           | description      |\n| ------ | ---------------- | ------------------------------ | ---------------- |\n| POST   | /api/tickets     | {title: string, price: number} | create ticket    |\n| GET    | /api/tickets     | -                              | get tickets list |\n| GET    | /api/tickets/:id | -                              | get ticket       |\n| PUT    | /api/tickets/:id | {title: string, price: number} | update ticket    |\n\n## orders service\n\n| method | url             | body               | description        |\n| ------ | --------------- | ------------------ | ------------------ |\n| GET    | /api/orders     | -                  | a user orders list |\n| GET    | /api/orders/:id | -                  | get order by id    |\n| POST   | /api/orders     | {ticketId: string} | create new order   |\n| DELETE | /api/orders/:id | -                  | delete order by id |\n\n## payment service\n\n| method | url          | body                             | description    |\n| ------ | ------------ | -------------------------------- | -------------- |\n| POST   | /api/payment | {token: string, orderId: string} | handle payment |\n\n## expiration service\n\ninternal service with no endpoints, listen and publish events to make orders expire\n\n## Usage\n\n- clone the repo\n- install dependencies for every service\n- make sure you wire up kubernetes minikube and skaffold\n- set host `tickets.net` on your local machine equal to ingress-nginx ip (run `minikube ip` to see your minikube ip address)\n- set up jwt-secret value on kubernetes env `kubectl create secret generic jwt-secret --from-literal=jwt=\u003csecretString\u003e`\n- set up stripe-secret value on kubernetes env `kubectl create secret generic stripe-secret --from-literal STRIPE_KEY=\u003csecretString\u003e`\n- run `skaffold dev` for run on your local machine\n- open https://tickets.net\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmax-im%2Ftickets-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmax-im%2Ftickets-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmax-im%2Ftickets-app/lists"}