A Todo web app built for understanding the RESTful services. Built on Node.JS Express server, and authentication will be done using passport.js and all the data are stored into MongoDB server using mongoose.
- Signin/Signup locally
- Signin using Facebook and Google using Oauth services
- Google map to store location
- Time and Date picker jQuery plugins
- Store your todo tasks and shows your current todo tasks.
- nodemailer to mail the user notifying the deadlines.
- Boostrap frontend interface
Before you install make sure you have node.js and npm installed on your system. I have built and tested this code on Ubuntu 14.04. But this app should also work on different environment as well.
-
Install Mongodb on your system ( if you want to run local app)
-
clone this repo and then run
npm install
-
In
/config
creates two files :auth.js
should contain your authentication information such as oauth api keys and credentials for the mail server. It should be something like this:// config/auth.js // expose our config directly to our application using module.exports module.exports = { 'emailInfo' : { 'username' : 'email-address', 'password' : 'password' }, 'facebookAuth' : { 'clientID' : 'app-id', // your App ID 'clientSecret' : 'app-secret', // your App Secret 'callbackURL' : 'callback-address' }, 'googleAuth' : { 'clientID' : 'app-id', 'clientSecret' : 'app-secret', 'callbackURL' : 'callback-address' } };
database.js
It should contains the identifier to connect to database. It should contain something like this :
// config/database.js module.exports = { 'url' : 'mongodb://localhost/passport' // looks like mongodb://<user>:<pass>@addr:27017/<username> };
-
Choose a suitable DB for my app. MongoDB will be used.
-
Create a signup/signin page
- Simple email & password login
- Using OAuth service to login with G+ and FB
-
Create the Todo dashboard
-
Create TODO Schema
-
Add a date and time picker api : bootstrap-datetimepicker
-
Use Gmaps to select the locations
- Choose the current location by default But it depends whether browser allows/supports geolocation
- Reverse Geo-coding for getting place info
-
Store the location lat. and long. in the DBInstead Storing the location/Place name in DB
-
Show the current todo(s)
-
-
Fix the date & time insertion issue - It's difficult to insert the date/time into the mongodb. For that matter I will be using moment.js, which basically handles most of the issues related to time format conversions. But still needs some fix.
-
Sending email notification as the due time arrives
- Current plan is to use
mailgun-jsnodemailer for this purpose - This mail will have two options in it,
- Close : Means item is closed.[delete the task from the db]
- Push to tomorrow : Will extends the deadline by 1 day. [update the task, by extending the targetDate by 1 day]
- Current plan is to use
-
Host it on a webserver.
###Advance Features to add:
-
Add the Pagination in the ToDo Display (In the case of large number of todo(s) in the list)
-
Add some media queries to make a responsive design
-
Add the JS validations