{"id":16327376,"url":"https://github.com/willsams/example-soccer-association","last_synced_at":"2026-02-08T21:32:32.923Z","repository":{"id":41830494,"uuid":"448581513","full_name":"WillSams/example-soccer-association","owner":"WillSams","description":"Full stack example application for a fictional youth soccer club.  Utilizes React for the frontend and a GraphQL API backend using Express + AWS MongoDB. ","archived":false,"fork":false,"pushed_at":"2024-05-02T16:40:06.000Z","size":8259,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T04:32:18.236Z","etag":null,"topics":["apollo-server-express","aws-dynamodb","docker","docker-compose","dynamodb","expressjs","graphql-api","javascript","jest","jwt-authorization","nodejs","nosql","nvm","reactjs","redux","redux-saga"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WillSams.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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":{"ko_fi":"samswebs"}},"created_at":"2022-01-16T14:42:58.000Z","updated_at":"2024-02-06T15:37:15.000Z","dependencies_parsed_at":"2023-11-07T17:36:53.560Z","dependency_job_id":"9d107ab9-da28-4c9d-91dc-fed252ab9625","html_url":"https://github.com/WillSams/example-soccer-association","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/WillSams%2Fexample-soccer-association","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillSams%2Fexample-soccer-association/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillSams%2Fexample-soccer-association/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillSams%2Fexample-soccer-association/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WillSams","download_url":"https://codeload.github.com/WillSams/example-soccer-association/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246932304,"owners_count":20856964,"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":["apollo-server-express","aws-dynamodb","docker","docker-compose","dynamodb","expressjs","graphql-api","javascript","jest","jwt-authorization","nodejs","nosql","nvm","reactjs","redux","redux-saga"],"created_at":"2024-10-10T23:11:16.105Z","updated_at":"2026-02-08T21:32:32.834Z","avatar_url":"https://github.com/WillSams.png","language":"JavaScript","funding_links":["https://ko-fi.com/samswebs"],"categories":[],"sub_categories":[],"readme":"# Example Site - Deportivo de Carolina Fútbol Club\n\nA full-stack application using JavaScript for frontend ([React](https://react.dev/)), backend ([Express](https://expressjs.com/)), and a serverless NoSQL database ([AWS DynamoDB](https://aws.amazon.com/dynamodb/)).\n\n![text](images/frontend-1.png)\n![text](images/frontend-2.png)\n![text](images/frontend-3.png)\n![text](images/dynamodb-1.png)\n\nFor a KeystoneJS 4.0 example abandoned March 2019, see the `abandoned` branch.\n\n## Pre-requisites\n\nTo run the service, you will need to install the following tools.\n\n* [NodeJS](https://nodejs.org/en/)\n* [Docker](https://www.docker.com/)\n\nThe below are optional but highly recommended:\n\n* [nvm](https://github.com/nvm-sh/nvm) - Used to manage NodeJS versions.\n* [Direnv](https://direnv.net/) - Used to manage environment variables.\n- Install [direnv](https://direnv.net) for persisting environment variables needed for development.\n\n## Getting Started\n\nFirst, we'll need to set up our environment variables.  You can do this by either:\n\n* Manually exporting the necessary environment variables in your shell.  These are listed in the [`./envrc.example`](./envrc.example) file.\n\nor\n\n* Use optionally use **Direnv**.\n\n```bash\ncp .envrc.example .envrc\ndirenv allow\n```\n\n### Install Node.js Packages\n\nExecute the following within your terminal:\n\n```bash\nnvm use                                 # To eliminate any issues, install/use the version listed in .nvmrc.\nnpm i                                   # Install packages needed for the repository root\ncd frontend \u0026\u0026 npm i --legacy-peer-deps # Install packages needed for the frontend\ncd backend \u0026\u0026 npm                       # Install packages needed for the backend\ncd ..                                   # Navigate back to the root of the repository\n```\n\n### Create the database\n\nFinally, let's create and seed the `Deportivo-development` database, simply run `npm run seed`.  However, be careful as this command re-creates the database every execution of it.\n\n## Development\n\nTo run both the frontend and backend concurrently:\n\n```bash\ndocker-compose up -d  # runs the database in the background\nnpm run dev           # runs both the frontend and backend\n```\n\nAlso, you just execute the backend via `npm run dev:backend`.  to verify the backend is working:\n\n```bash\ncurl http://localhost:$API_PORT/about\n```\n\nAlso, you shoud be able to create a team:\n\n```bash\n# First, grab an access token provided by the backend API\nACCESS_TOKEN=$(curl -s -X GET \\\n  -H 'accept: application/json' \\\n  'http://localhost:4040/api/token' | jq -r '.token')\n\n# Creating a team\ncurl -X POST \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n-d '{ \"query\": \"mutation { createTeam(input: { teamId: \\\"test-team-1\\\", teamName: \\\"Test Team\\\", arena: \\\"Test Team Arena\\\" }) { Id Metadata TeamName Arena } }\"}' \\\nhttp://localhost:4040/api/graphql\n\n# Retrieving the team we just created\ncurl -X POST \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n-d '{ \"query\":\"query { team(teamId: \\\"test-team-1\\\") { Id Metadata TeamName Arena  } }\"}' \\\nhttp://localhost:4040/api/graphql\n```\n\nYou can also acces the Apollo GraphiQL (interactive test playground) instance at [http://localhost:$API_PORT/graphql](http://localhost:$API_PORT/graphql).\n\n![text](images/api-1.png)\n\nAdditionally, you can visually view, create, or delete DynamoDB tables.  Navigate to [http://localhost:8001](http:/localhost:8001) in your browser to access.  This will require the `DYNAMO_ENPOINT` environment variable to be set in the terminal.  See `.envrc.example` for details.\n\n![text](images/dynamodb_admin.png)\n\n## Testing\n\nBoth the backend and frontend utilizes [Jest](https://jestjs.io/).  To run these tests, simply execute `npm run test:frontend` or `npm run test:backend`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillsams%2Fexample-soccer-association","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillsams%2Fexample-soccer-association","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillsams%2Fexample-soccer-association/lists"}