What it does
Its an employee management system where you can create, modify and delete employees. Linked to an NFT system to prove eomployment in the company and also a DAO to vote for outstanding employees. This comes with an internal company token to buy perks and benefits.
How we built it
Choosing a problem we want to solve
The first step we had to take was deciding the direction we wanted to go with this by choosing a problem to solve. The idea came very quickly after we realized how many problems we ware facing with late payments due to not only company liability,but also for holidays delaying the date of payments.
#### The Bases of the project With a direction to follow, we now need a clear idea of this project should provide. At this phase we did a lot a brainstorming trying to figure out what we should add and what was to advanced for a MVP. We came up with the main parts for the app to function correctly:
- Employees contract to contain data structures and keep track of time
- Payroll to hold the payment token
- DAO do run and register the voting sections
- Chainlink Automation to call the app daily and update all the state variables
#### Transforming the ideas into code Once we know what we ware going for we just had to break down the whole app into small pieces for a better version control and testing purposes. At this phase we also imagined a lot of extra functionalities that could be added, but ware too "company specific" for a MVP.
#### Using the app as the final user Putting the app to production, testing in the final environment. This was also useful to see if the user experience was intuitive and easy to pick up for newcomers.
Challenges we ran into
Trimming down the project
In begging, one of the biggest problems was finding out what was really necessary for the base project and keeping it simple. Not only is hard to let a good idea out of the final version because its too complex, but also finding good methods of executing simple ideas in an even simpler way.
Working as a team
Having to deal with other people's code can be though, and good communication is not always present, specially with multiple time zones. We mitigated this issue by asking member of the team to explain the project and comparing version, that way we ware sure that we ware always on the same page and going in the same direction.
Version control
Using git as a team is also very different than just pushing simple code to a remote repo. We also ran into to merging conflicts and compatibility issues. We learned git functionalities that we didn't know before and got better as a team.
Accomplishments that we're proud of
Having a contract automation working
This opens the door to so many possibilities: lotteries, payroll contract, voting deadlines, crowd funding. We ware actually very surprised of how easy it was to get it working.
Creating a DAO
Creating something that can be used as a decision maker is awesome, specially on the blockchain and in a decentralized way. DAOs can be an app on its on and we are so happy that we ware able to build one on top of a working app.
Agreeing as a team
With so many ideas and different minds thinking at the same time its difficult do agree on what should stay in the project or be added latter on. We had to think beside ourselves and put the project in first place to do that, and we did as a team first and include not what we though would be cool but what the project need at the moment.
What we learned
Project management
We learned that before the first line a of code we need a LOT of planning and designing. Going directly to VSC can be a very bad idea, because chaining some that is already built can be way more expansive than just deleting a square in a diagram.
Working as a team
Using git as a team and developing the habit of always being aware of whats happening in other sectors of the project.
Keep it simple
Its easy to think of the new AWS or any other trillion dollar idea of your choice, but trust me: keep it simple. The MPV should give the feeling of a potential product to be developed, not a finished app. Creating a simple application can also provide a better testing experience and more security, since we only a few functionalities
What's next for Payrollio
Synchronizing payment day
Making all the payments occur at the end of the month. This can save a lot of gas by avoiding looping everyday and also to give a better employee experience, since you electricity bill will never come at the 17th of the month.
Improve security
We are not experts. We did our best, but there are probably still some security vulnerabilities in the code, which means its not production ready yet.
Getting into the legal requirements
Different countries have different work laws, depending on the company that picks us we can very easily transpire that into to the contract.
More data structures and specific functionalities
The contract that we have is the basic version of what a payroll system would need plus a few extra features. Depending of the goals or hierarchy of a company we could add, modify or even remove parts of the contract. Doing this by ourselves in the MPV phase without any demand would be just gambling.
Log in or sign up for Devpost to join the conversation.