{"id":19712061,"url":"https://github.com/laurawebdev/tio_project","last_synced_at":"2025-06-27T07:33:35.969Z","repository":{"id":91125591,"uuid":"569413473","full_name":"LauraWebdev/tio_project","owner":"LauraWebdev","description":null,"archived":false,"fork":false,"pushed_at":"2022-11-22T19:54:51.000Z","size":3476,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-27T19:59:28.223Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LauraWebdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["dunglas"]}},"created_at":"2022-11-22T19:15:28.000Z","updated_at":"2022-11-22T19:15:39.000Z","dependencies_parsed_at":"2023-03-15T14:30:16.406Z","dependency_job_id":null,"html_url":"https://github.com/LauraWebdev/tio_project","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LauraWebdev/tio_project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LauraWebdev%2Ftio_project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LauraWebdev%2Ftio_project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LauraWebdev%2Ftio_project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LauraWebdev%2Ftio_project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LauraWebdev","download_url":"https://codeload.github.com/LauraWebdev/tio_project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LauraWebdev%2Ftio_project/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262212813,"owners_count":23275989,"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-11-11T22:14:58.062Z","updated_at":"2025-06-27T07:33:35.960Z","avatar_url":"https://github.com/LauraWebdev.png","language":"PHP","funding_links":["https://github.com/sponsors/dunglas"],"categories":[],"sub_categories":[],"readme":"# TIO Project\n\nSimple Event/Ticket system written in Symfony with API and testing.\n\n## Setup\n\n1. If not already done, [install Docker Compose](https://docs.docker.com/compose/install/) (v2.10+)\n2. Run `docker compose build --pull --no-cache` to build fresh images\n3. Run `docker compose up` (the logs will be displayed in the current shell)\n4. Open `https://localhost` in your favorite web browser and [accept the auto-generated TLS certificate](https://stackoverflow.com/a/15076602/1352334)\n5. Run `docker compose down --remove-orphans` to stop the Docker containers.\n\n## API Documentation\n### Events\n#### GET /api/events\nReturns all events\n\n##### Response\n```json\n{\n    \"count\": 1,\n    \"events\": [\n        {\n            \"id\": 1,\n            \"title\": \"Test Event\",\n            \"date\": \"2022-12-12T00:00:00+00:00\",\n            \"city\": \"Test City\",\n            \"tickets_count\": 1\n        }\n    ]\n}\n```\n----\n#### GET /api/event/{EVENT_ID}\nReturns a specific event by ID\n\n##### Response (Successful)\n```json\n{\n    \"id\": 1,\n    \"title\": \"Test Event\",\n    \"date\": \"2022-12-12T00:00:00+00:00\",\n    \"city\": \"Test City\",\n    \"tickets_count\": 1,\n    \"tickets\": [\n        {\n            \"id\": 1,\n            \"firstName\": \"Laura\",\n            \"lastName\": \"Heimann\"\n        }\n    ]\n}\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"event_not_found\",\n    \"message\": \"There is no event with this ID\"\n}\n```\n----\n#### POST /api/events\nCreates a new event\n\n##### Body\n```json\n{\n    \"title\": \"Test Event\",\n    \"date\": \"2022-12-12T00:00:00+00:00\",\n    \"city\": \"Test City\"\n}\n```\n\n##### Response (Successful)\n```json\n{\n    \"id\": 1,\n    \"title\": \"Test Event\",\n    \"date\": \"2022-12-12T00:00:00+00:00\",\n    \"city\": \"Test City\",\n    \"tickets_count\": 0\n}\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"parameters_missing\",\n    \"message\": \"Not all required parameters were set\"\n}\n```\n#### POST /api/event/{EVENT_ID}\nUpdates an event\n\n##### Body\n```json\n{\n    \"title\": \"Test Event\",\n    \"date\": \"2022-12-12T00:00:00+00:00\",\n    \"city\": \"Test City\"\n}\n```\n\n##### Response (Successful)\n```json\n{\n    \"id\": 1,\n    \"title\": \"Test Event\",\n    \"date\": \"2022-12-12T00:00:00+00:00\",\n    \"city\": \"Test City\",\n    \"tickets_count\": 0\n}\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"event_not_found\",\n    \"message\": \"There is no event with this ID\"\n}\n```\n#### DELETE /api/events/{EVENT_ID}\nRemoves an event\n\n##### Response (Successful)\n```\nHTTP 200\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"event_not_found\",\n    \"message\": \"There is no event with this ID\"\n}\n```\n\n### Tickets\n#### GET /api/tickets\nReturns all tickets\n\n##### Response\n```json\n{\n    \"count\": 1,\n    \"tickets\": [\n        {\n            \"id\": 1,\n            \"firstName\": \"Laura\",\n            \"lastName\": \"Heimann\",\n            \"event\": {\n                \"id\": 1,\n                \"title\": \"Test Event\",\n                \"date\": \"2022-12-12T00:00:00+00:00\",\n                \"city\": \"Test City\",\n                \"tickets_count\": 1\n            }\n        }\n    ]\n}\n```\n----\n#### GET /api/ticket/{TICKET_ID}\nReturns a specific ticket by ID\n\n##### Response (Successful)\n```json\n{\n    \"id\": 1,\n    \"firstName\": \"Laura\",\n    \"lastName\": \"Heimann\",\n    \"event\": {\n        \"id\": 1,\n        \"title\": \"Test Event\",\n        \"date\": \"2022-12-12T00:00:00+00:00\",\n        \"city\": \"Test City\",\n        \"tickets_count\": 1\n    }\n}\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"ticket_not_found\",\n    \"message\": \"There is no ticket with this ID\"\n}\n```\n----\n#### POST /api/ticket/checkBarcode\nChecks if a barcode is correct and returns the ticket\n\n##### Body\n```json\n{\n    \"barcode\": \"TestTest\"\n}\n```\n\n##### Response (Successful)\n```json\n{\n    \"id\": 1,\n    \"firstName\": \"Laura\",\n    \"lastName\": \"Heimann\",\n    \"event\": {\n        \"id\": 1,\n        \"title\": \"Test Event\",\n        \"date\": \"2022-12-12T00:00:00+00:00\",\n        \"city\": \"Test City\",\n        \"tickets_count\": 1\n    }\n}\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"ticket_not_found\",\n    \"message\": \"There is no ticket with this ID\"\n}\n```\n----\n#### POST /api/tickets\nCreates a new ticket\n\n##### Body\n```json\n{\n    \"eventId\": 1,\n    \"firstName\": \"Laura\",\n    \"lastName\": \"Heimann\"\n}\n```\n\n##### Response (Successful)\n```json\n{\n    \"id\": 1,\n    \"firstName\": \"Laura\",\n    \"lastName\": \"Heimann\",\n    \"event\": {\n        \"id\": 1,\n        \"title\": \"Test Event\",\n        \"date\": \"2022-12-12T00:00:00+00:00\",\n        \"city\": \"Test City\",\n        \"tickets_count\": 1\n    }\n}\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"event_not_found\",\n    \"message\": \"There is no event with this ID\"\n}\n```\n```json\n{\n    \"slug\": \"parameters_missing\",\n    \"message\": \"Not all required parameters were set\"\n}\n```\n#### POST /api/ticket/{TICKET_ID}\nUpdates a ticket\n\n##### Body\n```json\n{\n    \"firstName\": \"Laura\",\n    \"lastName\": \"Heimann\"\n}\n```\n\n##### Response (Successful)\n```json\n{\n    \"id\": 1,\n    \"firstName\": \"Laura\",\n    \"lastName\": \"Heimann\",\n    \"event\": {\n        \"id\": 1,\n        \"title\": \"Test Event\",\n        \"date\": \"2022-12-12T00:00:00+00:00\",\n        \"city\": \"Test City\",\n        \"tickets_count\": 1\n    }\n}\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"ticket_not_found\",\n    \"message\": \"There is no ticket with this ID\"\n}\n```\n```json\n{\n    \"slug\": \"parameters_missing\",\n    \"message\": \"Not all required parameters were set\"\n}\n```\n#### DELETE /api/tickets/{TICKET_ID}\nRemoves a ticket\n\n##### Response (Successful)\n```\nHTTP 200\n```\n\n##### Response (Unsuccessful)\n```json\n{\n    \"slug\": \"ticket_not_found\",\n    \"message\": \"There is no ticket with this ID\"\n}\n```\n\n## Credits\n- Symfony Docker Bootstrap by [Kévin Dunglas](https://dunglas.fr)\n- Uses [MaterialDesignIcons](https://materialdesignicons.com)\n- Uses html5doctor.com Reset Stylesheet by [Richard Clark](http://richclarkdesign.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaurawebdev%2Ftio_project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaurawebdev%2Ftio_project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaurawebdev%2Ftio_project/lists"}