{"id":16728548,"url":"https://github.com/tmc/the-aivengers","last_synced_at":"2025-07-01T11:40:13.850Z","repository":{"id":183117980,"uuid":"669621001","full_name":"tmc/the-AIvengers","owner":"tmc","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-27T17:49:58.000Z","size":10129,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-15T16:23:50.047Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-07-22T22:03:01.000Z","updated_at":"2023-07-28T11:38:23.000Z","dependencies_parsed_at":"2024-12-13T18:38:37.316Z","dependency_job_id":"b0bced8e-24ab-4ae0-b8f8-abda0d0a6fb3","html_url":"https://github.com/tmc/the-AIvengers","commit_stats":null,"previous_names":["tmc/the-aivengers"],"tags_count":0,"template":false,"template_full_name":"tmc/hackathon-starter","purl":"pkg:github/tmc/the-AIvengers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmc%2Fthe-AIvengers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmc%2Fthe-AIvengers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmc%2Fthe-AIvengers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmc%2Fthe-AIvengers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmc","download_url":"https://codeload.github.com/tmc/the-AIvengers/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmc%2Fthe-AIvengers/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262954393,"owners_count":23390411,"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":[],"created_at":"2024-10-12T23:10:43.864Z","updated_at":"2025-07-01T11:40:13.827Z","avatar_url":"https://github.com/tmc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hackathon Starter Project\n\nWelcome to the Hackathon Starter Project! This project is designed to give you a comprehensive set of templates to kickstart your coding journey, whether you're participating in a hackathon or just exploring on your own. It features a variety of backends and a frontend template, plus a gateway and Docker compose examples to tie everything together.\n\nIt's meant to get you from zero to having LLM-backed apps in just a few minutes!\n\n![Browser Test Output](./load-generation/animation.gif)\n\n## Getting Started\n\n### Pre-requisites\n\nThis codebase requires the following tools to be present on your machine.\n\n- [Docker](https://docs.docker.com/get-docker/)\n- [Homebrew](https://brew.sh/)\n\n### Running the Project\n\nTo get started with this project, clone the repository to your laptop.\n\n```shell\n$ git clone https://github.com/tmc/hackathon-starter.git\n```\n\n```shell\n$ cd hackathon-starter\n$ make run-sample-service-set\n```\n\nhttps://www.loom.com/share/133f6c34c17445628dfd6f5cd0704ac3\n\nYou should see this in the [Tilt UI](http://localhost:10350/r/react-frontend/overview):\n\u003cimg width=\"1582\" alt=\"tilt-harness\" src=\"https://github.com/tmc/hackathon-starter/assets/3977/388b1c95-c5b8-4ab0-83ec-d3eaff911035\"\u003e\n\nThe [React Frontend](http://localhost:3000):\n\u003cimg width=\"1582\" alt=\"react-frontend\" src=\"https://github.com/tmc/hackathon-starter/assets/3977/e5b06cf9-7c4d-476b-9371-bd3462b62614\"\u003e\n\nThe [Apollo GraphQL Sandbox](http://localhost:3000/sandbox):\n\u003cimg width=\"1582\" alt=\"apollo-graphql-sandbox\" src=\"https://github.com/tmc/hackathon-starter/assets/3977/d2e27ba8-5e86-4ebf-93c1-8d5ab0e4f6c5\"\u003e\n\n\n### Accessing Services\n\n- [10350](http://localhost:10350/r/react-frontend/overview) - The Tilt Harness (with the react-frontend selected).\n- [3000](http://localhost:3000) - React Frontend.\n- [3000](http://localhost:3000/sandbox) - GraphQL Sandbox.\n- [4000](http://localhost:4000) - GraphQL Gateway.\n- [5432](https://www.postgresql.org/docs/current/app-psql.html) - PostgreSQL database.\n- [8000](http://localhost:8000/graphql) - Python Graphene backend.\n- [8080](http://localhost:8080) - Go GraphQL backend\n- [6379](https://redis.io/docs/ui/cli/#command-line-usage) - Redis Server.\n- [6380](http://localhost:6380) - RedisInsight web UI.\n- [16686](http://localhost:16686) - [Jaeger](https://www.jaegertracing.io/docs/1.45/getting-started/) web UI (distributed trace viewer).\n\n\n**note**: Run `make port-doctor` to see if these ports are already bound by another process.\n\n## GraphQL Federated Gateway\nA key component in this stack is [Apollo Router](https://www.apollographql.com/docs/router/) which enables aggregating across several backends.\n\nAs long as a backend component has a `schema.graphql` file that it can fulfill requests will get to them. See the `make generate` target under [./gateway](./gateway).\n\n![GraphQL Gateway Screenshot](./gateway-screenshot.png)\n\nShowing the result of\n\n```graphql\nquery User($userId: ID!) {\n  user(id: $userId) {\n    id\n    username\n    description\n  }\n}\n```\n\nWith arguments of\n```json\n{\"userId\": 42}\n```\n\nReturning\n```json\n{\n  \"data\": {\n    \"user\": {\n      \"id\": \"42\",\n      \"username\": \"user42 (from the python graphene backend)\",\n      \"description\": \"User 42 description here. (coming from the Go backend)\"\n    }\n  }\n}\n```\n\n## Directory Structure\n\nThe project is divided into various directories, each corresponding to a distinct part of the application. Here's a quick breakdown:\n\n- [`./fastapi-backend`](./fastapi-backend): This is a backend service built using FastAPI, a high-performance Python framework for building APIs.\n\n- [`./graphene-backend`](./graphene-backend): This is another backend service built with Flask and Graphene. Flask is a lightweight web application framework for Python, while Graphene is a Python library for building GraphQL APIs in Python.\n\n- [`./go-graphql-backend`](./go-graphql-backend): This directory contains a backend service implemented in Go with the help of gqlgen, a Go library for building GraphQL servers. It includes support for subscriptions.\n\n- [`./react-frontend`](./react-frontend): This is a frontend application built with React and TypeScript. React is a JavaScript library for building user interfaces, and TypeScript is a statically typed superset of JavaScript that adds optional types.\n\n- [`./gateway`](./gateway): This directory contains a sample setup that combines multiple backend services. \n\n- [`./dev-harness`](./dev-harness): This directory contains examples of `docker-compose.yml` files showing how to configure Docker Compose to run the various components of this project together.\n\nEach directory contains a `README.md` file with more detailed information about that part of the project. \n\n## Further Reading\n\n- [FastAPI Documentation](https://fastapi.tiangolo.com/)\n- [Flask Documentation](https://flask.palletsprojects.com/)\n- [Graphene Documentation](https://docs.graphene-python.org/)\n- [Gqlgen Documentation](https://gqlgen.com/)\n- [React Documentation](https://reactjs.org/)\n- [Docker Compose Documentation](https://docs.docker.com/compose/)\n\nWe hope this gives you a good introduction to the Hackathon Starter Project. Happy coding!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmc%2Fthe-aivengers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmc%2Fthe-aivengers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmc%2Fthe-aivengers/lists"}