A collaborative tool for the next project for individuals and engineering teams looking for more organization. This tool was borne from the desire for the #100Devs community (community of 50,000 and growing engineers) to utilize this as a way to organize as indiviudals and for teams to utilize without the distractions that you might find on Trello or Github.
At a system design level, we chose to leverage the nested model nature of MongoDB and the inherent synergy with React Node apps. With this in mind, we can definitely improve the app through refactors and optimizations through database queries. We can also introduce caching via Redis or Memcached. Caching frequently used data would be a good next step to improve performance across the app. By caching more frequently used data, we can avoid having to recalculate certain aspects within our app.
We can also introduce libraries to manage state better throughout the application such as Redux, Mobx, or Recoil. With a state management library, managing state would become more predictable, debuggable, and will bring efficient handling of more complex state changes.
Testing is something that we would have liked to add in the beginning. It would have made PR reviews a lot faster and would have standardized the code base even more so than just having ES lint to leverage.
With this project, we initially used Daisy UI for its free easy-to-use components, but after realizing the accessibility for users was sub-par (modals were completely inaccessible), we refactored our app to use out-of-the-box tailwind as it offered a better user experience.
Overall, this was a great learning process from team dynamics and team building, to learning the technical aspects of a single page application utilizing the MERN stack among other notable packages such as dndkit and passport.
Something that was especially important to increase efficiency and boosted our learning was pairing and mobbing. My pairing together to solve for an agreed-upon issue proved dividends as both parties are able to teach, give back, and ultimately learn together.
The new skills that we have picked up with this project are invaluable and will provide a good launching pad for projects both big and small for years to come.
- MERN Stack Technology
- Git Branch Best Practices (Feature Branching)
- GitHub Project Organization (Issues, PRs, Discussions)
- Agile Scrum
- Communications Skills
- Time Management
- Conflict Resolution
- Chat Room Functionality
- Integrations to Github and Discord
- State Management Library (Redux/Recoil)
- Refactoring drag and drop
- JWT Authentication
- Websockets
- React Router
Clone the project
git clone kandoo
Go to the project directory
cd kandoo
Install dependencies
npm install
Install dependencies for client sub-directory
cd client
npm install
Install dependencies for server sub-directory
cd server
npm install
Start the server
npm run start