Organize tournament with your own categories and settings, add participants and let our app help you track scores and manage the whole event!
Intuitive interface designed for desktop and mobile allows participants to input scores directly via phones or tablets.
Project was developed during Software Engineering classes at AGH University Of Science And Technology
- User can view
- upcoming competitions
- qualification results
- schedule and tournament info
- Organizer can also
- register and login
- modify
- competitions
- competition details
- categories and distances
- participants
- target assignments
- competitors scores
- System will
- generate target assignments
- collect and compute scores
- choose winners
- help in searching for competitors using historical data
- Dariusz Biela - Team Leader, Backend Architect
- Magdalena Górska - Frontend Architect
- Przemysław Skrobot - Tester Team Leader
- Weronika Wiszyńska - Frontend
- Aleksandra Rolka - Frontend
- Michał Żoczek - Backend
- Maciej Pieczonka - Tester
- Backend
- Node.js
- MongoDB
- Mongoose
- GraphQL
- Apollo Server
- Express
- jsonwebtoken
- Frontend
- React
- Redux
- Apollo Client
- Bootstrap
- Testing
- Jest
- Easy GraphQL Tester
- React Testing Library
- MongoDB Memory Server
- Mockingoose
- Supertest
- Selenium
- Easy GraphQL Load Tester
- k6
- Clone the repository
git clone git@github.com:Darkosz1012/amazonka.git
- Install packages for front and back with one simple command
npm install
- Create .env and fill with you settings:
ACCESS_TOKEN_SECRET = <key for access token authentication, should be generated randomly>
DATABASE_LINK = <mongodb+srv address>
PORT = <port number, 3001 by default and frontend settings should be aligned if set otherwise>
- Now you can launch application:
- Run backend:
npm run
- Run frontend:
cd frontnpm start
- Run backend:
At the moment there are unit tests mainly for functions and classes implementing complex logic, like authorization or data loaders. Mockingoose allows to mock values returned by Mongoose's functions.
Execution:
npm run test-unit
These tests verify GraphQL queries according to schema. Useful for validation of required parameters and their types.
Execution:
npm run test-graph
Basic assumption is to test backend functionalities provided via GraphQL API. MongoDB In-Memory Server isolates tests from real database and makes them much faster, additionally allowing to assert DB content. Supertest is responsible for handling HTTP requests and responses. Custom test framework encapsulates logic tied with GraphQL queries and makes tests short, simple and descriptive.
Execution:
npm run test-func
For now performance tests are conducted on dummy database generated with generate_test_database.js (create perf.env like .env beforehand). Easy-graphql-load-tester generates queries for k6 runner, which needs to be installed on your machine separately and can be configured with number of virtual users, test duration and more. Results are presented in command line and dumped to .json files. Queries may be auto-generated from GraphQL schema or custom.
Execution:
- start performance testing environment:
npm run start-perf-env
- run tests in other terminal:
npm run test-perf
Unit tests for React components use React Testing Library and Jest for preparing state, executing actions, events and asserting their results.
Execution:
npm run test-front
Selenium-based suites of tests for frontend: logging in and out, adding competitions, navigating admin panel etc. It requires Selenium browser plugin and importing test files into it.
Execution:
MVP is completed, although application is far from being finished. Project was handed for assignment on course's completion and graded positively, but requires more work and hopefully will be developed further.
Completed features are listed in Functionalities section.
Features in development:
- generation and management of eliminations
- inputting qualification scores by competitors verified with unique access codes
- personal archer stats
Features planned:
- generation of result cards for printing
- preparing tournament summary
- support for teams and mixed teams







