Hi!
I'm Yohan Arias and this is the Planning Poker System, a project in response to challenge from Workana. The app is build using NodeJS, VueJS including their respectives Frameworks (AdonisJS and Quasar). These frameworks let us keep a clean code using best practices.
- The app has a structure very similar to Laravel (MVC), in this case just Model - Controller.
The Rest API has the following endpoints:
- Show all of issues availables.
- If issue not exists generate a new one.
- Must receive a payload with the intended name. ie:
{"name": "Yurmira"}
- When the user wants leave the issue
- Reject votes when status of
{:issue}
is notvoting
. - Reject votes if user not joined
{:issue}
. - Reject votes if user already
voted
orpassed
.
During voting
status the votes are secret.
- Issue is
voting
:{ "status": "voting", "members": [ {"name": "Yurmira", "status": "voted"}, {"name": "Juan", "status": "waiting"}, {"name": "Yohan", "status": "passed"} ] }
- Issue is
reveal
when all users emitted their votes:{ "status": "reveal", "members": [ {"name": "Yurmira", "status": "voted", "value": 20}, {"name": "Juan", "status": "voted", "value": 20}, {"name": "Yohan", "status": "passed"} ], "avg": 20 }
The app updates the issues, voting and participants info in realtime.
Redis is used to store the data.
The frontend is developed using Vue 2.
It has an interface:
- Create or join an issue by number
- Show board with cards for voting
- Show a list of members and the status of each one
- Allow users to vote, pass or leave the issue
To run this code you need:
- Docker and docker-compose installed
Then:
- Clone this repo:
git clone [email protected]:elyohan14/dev_challenges.git
. - Run
docker-compose up
.
Check if services are up and running:
- Node backend in localhost:8082
- Front dev server with demo in localhost:8080
- Run
npm run test
on backend_node