{"id":14007259,"url":"https://github.com/managervcf/tick-it","last_synced_at":"2025-07-24T01:31:18.103Z","repository":{"id":39627958,"uuid":"269231584","full_name":"managervcf/tick-it","owner":"managervcf","description":"Microservices ticketing app build with Node, NextJS, MongoDB, Docker and Kubernetes.","archived":false,"fork":false,"pushed_at":"2023-02-01T23:05:31.000Z","size":2468,"stargazers_count":17,"open_issues_count":74,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-10T10:04:08.302Z","etag":null,"topics":["docker","docker-container","javascript","kubernetes","kubernetes-cluster","microservices","mongodb","nextjs","nodejs","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/managervcf.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}},"created_at":"2020-06-04T01:24:26.000Z","updated_at":"2024-08-10T10:04:10.038Z","dependencies_parsed_at":"2023-02-13T16:00:55.132Z","dependency_job_id":null,"html_url":"https://github.com/managervcf/tick-it","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/managervcf%2Ftick-it","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/managervcf%2Ftick-it/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/managervcf%2Ftick-it/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/managervcf%2Ftick-it/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/managervcf","download_url":"https://codeload.github.com/managervcf/tick-it/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227384215,"owners_count":17772338,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docker","docker-container","javascript","kubernetes","kubernetes-cluster","microservices","mongodb","nextjs","nodejs","typescript"],"created_at":"2024-08-10T10:01:56.848Z","updated_at":"2024-11-30T17:32:30.083Z","avatar_url":"https://github.com/managervcf.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# TickIt\n\n## Overview\n\nTicket selling app built based on microservices architecture. This project focuses on the production ready back-end, very simple React front-end is made just for demonstration and testing purposes.\n\n### Functionality\n\nThe goal of the app is to allow users to buy and sell concert tickets. For handling credit card payments the app uses Stripe API.\n\n### Structure\n\nThe app consists of 7 different services designed to comminicate in an asynchronous fashion. Services are written in TypeScript, running on NodeJS and built with NextJS (front-end), Express and MongoDB (back-end) and NATS Streaming Server to communicate via events. Each service lives in its own Docker container, managed by Kubernetes. For routing the `ingress-nginx` controller is used. The app also uses Sendgrid as an email API provider.\n\nAll services include a shared library as a dependency, called `@tick-it/common`, where all crucial type definitions live. This shared library is also included in this repository as a submodule.\n\nList of microservices:\n\n- `client` - Service responsible for the front-end.\n- `auth` - Service responsible for authentication.\n- `tickets` - Service responsible tickets.\n- `orders` - Service responsible for orders.\n- `payments` - Service managing payments.\n- `expiration` - Service handling an order expiration time.\n- `emails` - Service sending email confirmations after order completion.\n\n## Development\n\nTo manage all the Docker containers inside the Kubernetes cluster and simplify development workflow the project uses Skaffold.\n\nTo run the app in development environment, make sure Docker, Kubernetes and Skaffold are installed on your local machine.\n\nBefore running the app environment variables inside the Kubernetes cluster must be set. Execute commands below to set these environment variables:\n\n```bash\n# kubectl create secret generic stripe-secret --from-literal=STRIPE_KEY=\u003cyour_stripe_key\u003e\n\n# kubectl create secret generic jwt-secret --from-literal=JWT_KEY=\u003cyour_jwt_key\u003e\n\n# kubectl create secret generic sendgrid-api-key --from-literal=SENDGRID_API_KEY=\u003cyour_sendgrid_key\u003e\n```\n\nBe sure to expose the ingress-nginx-controller with:\n\n```bash\n# kubectl expose deployment ingress-nginx-contoller --target-port=80 --type=NodePort -n kube-system\n```\n\nStart the app with `skaffold dev`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanagervcf%2Ftick-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanagervcf%2Ftick-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanagervcf%2Ftick-it/lists"}