kpi_student
The game brings us to the beginning of student life. You will start as a simple student with not a big amount of money in the new city, that is not ready for new visitors. Game contains:
- logical puzzles
- strategic elements
- puzzled plot
- not definitely solutions
- fortune
- a bit of mystery
- a lot of studies
- and much more
Could you survive all it's challenges? The KPI and his hostels are waiting for you.
weekly you will be fighting with boss
Features and Requests
Our game is not planned with hardcoded plot. Everyone can change it with the submission of plot fragment via our in-game submitting form.
In this project, a game will have those features:
- The user must log in to start the game in one of the following ways:
- Google account
- Github account
login form
- If the user has forgotten his password, he will be able to restore it at the next authorization attempt
- The user will be able to monitor and pump his character within the categories of actions presented in the game, namely, train him, monitor his health, finances
- The user will be able to log in on any device that supports the browser and then continue the game with the saved progress
- The game contains events. Events will affect the game progress, depending on the user decision and the state of the character. The episode will occur as the character develops and depending on the playing time
- Each user will be able to offer his event, which will have to go through the approval stage by other users to add to the game
- In the game, realized inside the game currency, which the user can spend on the development of his character and passing events
- The game has a scale of experience, which the user can replenish by performing various actions during the game
- Inside the game: time counts from the moment the user login until the moment the user left the game
- Also, inside the game, actions that the user will perform with his character in addition to proposing new events and voting will influence the time.
- We will use firebase for deploying on hosting, authenticate the user and store data for synchronization.
you create the game
CI/CD
- For CI we will use Github actions. We will test code with prettier, eslint and test available tests for node 10, 12, 14.
- For CD we will use Firebase GitHub actions to deploy a pull request on a temporary link and see the result. Also, after merging into master we will deploy the site on firebase hosting with a permanent link.
Demo of gameplay
The main page of screen
Example of game menu
Requirements
To start an adventure you need a modern browser with JavaScript support and nothing more.
Dependencies
We depend on
- Firebase library -> interaction with backend
- Web vitals -> testing web performance on client
Development dependencies
- React library
- Typescript -> typization for pure JS
- Jest -> testing library
- Prettier -> formater tool
- Eslint -> reduce common bugs with linter
- Husky -> library for git hooks
- pretty-quick -> for formating stage zone
- create-react-app -> template for creating react application
Architecture of application
Architecture as has been mentioned before is based on firebase services. Look more about architecture.
Available Scripts
Before running any command (you just need to to do that procedure only once):
npm i && cd backend/functions && npm i && cd ../frontend && npm i && npm i -g firebase-tools
In the project directory, you can run:
npm start
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
npm run test:watch
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
npm test
Launches the test runner in the CI test mode. See section on your own environment
npm run test:watch
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
npm run test:coverage
Launches the test runner with coverage in the interactive watch mode.
See the section about running tests with coverage for more information.
npm run format
Launches prettier on every file and write to drive.
npm run format:stage
Launches pretty-quick on stage files.
npm run check-format
Launches prettier on every file and check whether they properly formatted if not exit with an error.
npm run lint
Runs eslint against src directory
npm run lint:write
Runs eslint against the src directory and tries to fix errors and warnings.
npm build
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
npm eject
Note: this is a one-way operation. Once you eject
, you can’t go back!
If you aren’t satisfied with the build tool and configuration choices, you can eject
at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject
will still work, but they will point to the copied scripts so you can tweak them. At this point, you’re on your own.
You don’t have to ever use eject
. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However, we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
Learn More
You can learn more in the Create React App documentation.
To learn React, check out the React documentation.
FAQ
No question at this moment.
Contributing
We appreciate your help!
To contribute, please read the contribution guidelines at CONTRIBUTING.md
LICENSE
By using code in this repository, you agree with all statements in LICENSE file