Creating and sharing list containing todo tasks.
- Files and architecture
- Environment
- Installation
- Functionality
- Technologies
- Authors
- Important links
- References
- Frontend - Angular
- components
- dashbaord - to show all lists, add ,remove task and share lists among friends
- subtask - to show nested tasks
- friends - to send and receive friend request and add and remove them from your friends list
- login - to login and forgot password of user's account
- signup - to create a new account
- services
- app - call all api's related to user
- list - call all api's related to user's lists
- socket - to emit and listen to events for RTC(Real Time Communication)
- pipes
- search - to search tasks or subtasks from list
- filter - to filter users
- filter-friends - to filter friends and friendRequests
- components
- Backend - Node.js
- config - Redis and MongoDB configuration
- controllers - contains function for each route
- libs - libraries
- middlewares - for checking authorization
- models - Database Models and schemas
- routes - api routes
- app.js - connection and imports
- Clone or Download Zip
git clone https://github.com/sauravgarg001/TODO-list-backend.git
- Goto TODO-list-backend directory
cd TODO-list-backend
- Install all dependencies
npm install
-
Create database and copy Endpoint and Redis Password, update the given info in config/configApp.js file.
redis: {
url: 'redis://<endpoint>',
password: '<redis password>'
}
- Run server
npm start
- Open given below url on browser
http://localhost:3000/
- Clone or Download Zip
git clone https://github.com/sauravgarg001/TODO-list-frontend.git
- Goto TODO-list-frontend directory
cd TODO-list-frontend
- Install all dependencies
npm install
- Run server
ng serve
- Open given below url on browser
http://localhost:4200/
- User can signup and create account and then login to dashboard
- Forgot password option can be used in case the user doesn't remember password. An OTP is send to the registered email of user. After entering the correct OTP and new password the passsword gets changed.
- At dashboard user has an option to create new list or his previous active list will appear if any.
- User can create subtasks of any task, and there is also an option to search each task at any level.
- User can select any list from his lists to be in active list.
- If the User has edit access he/she can add or remove tasks from the list.
- If the user is Owner of list he/she can add, remove or change access to edit or readonly for contributers.
- All the contributers of list can see the updated list in real time.
- User can send or accpet friend requests from the users list.
- Node.js - JavaScript runtime
- Angular - Frontend JavaScript Framework
- JavaScript - Programming language
- MongoDB - NoSQL database
- Saurav Garg - Initial work - sauravgarg001
- API Documentation
- Socket Endpoints Documentation
- Github repository for frontend
- Github repository for frontend build version
- Github repository for backend
- Hosted app on AWS
- Count subdocument array with conditional field: https://stackoverflow.com/questions/46339175/mongodb-aggregation-conditional-adding-field-based-on-value-in-array
- Mongoose instance .save() not working when embedded array object changed: https://stackoverflow.com/questions/47123599/mongoose-instance-save-not-working-when-embedded-array-object-changed
- Font Awesome 5: https://github.com/FortAwesome/angular-fontawesome
- Get child node index: https://stackoverflow.com/questions/5913927/get-child-node-index
- Mixed Schema Type: https://mongoosejs.com/docs/2.7.x/docs/schematypes.html