Todo is a task management service that enables registered users to easily manage their tasks. Each task has a name as well as other optional values including due date, status, and description. The next version will include rank, so that tasks can be ordered by priority.
The Todo RESTful API is implemented as a Spring Boot app running an embedded version of Tomcat. The data store is a DynamoDB Local running in-memory. It uses JSON Web Tokens (JWT) for authentication.
- Before running or testing the app, you'll need install DynamoDB Local.
- Set
DYANMODB_HOME
in the run DynamoDB script (run-dynamodb.sh
) in the/scripts
directory.
- Run DynamoDB Local:
$ ./scripts/run-dynamodb.sh
- Then create the Todo app's tables:
$ ./scripts/create-dynamodb-tables.sh
- To build and run the project in place type:
$ gradle bootRun
Note: DynamoDB Local is configured to run in-memory, so these steps will need to be repeated on each run.
To just build the project type: $ gradle build
For information on installing Gradle go to https://gradle.org/install
To create and manage tasks, first create a user. See signup in the User section below.
Note: All dates are specified as strings, i.e., yyyy-MM-dd
or yyyy-MM-dd'T'hh:mm:ss
.
For a detailed reference of the Todo RESTful API go to https://todo.restlet.io.
Method | HTTP Requests | Description | Returns |
---|---|---|---|
signup | POST /users |
Create a user | A JWT object |
profile | GET /me |
View current user | User info |
login | POST/access-tokens |
Login user | A JWT object |
logout | DELETE/access-tokens |
Logout user | Nothing |
refresh | POST /access-tokens/refresh |
Refresh user token | JWT access token |
Method | HTTP Requests | Description | Returns |
---|---|---|---|
insert | POST /tasks |
Create a task | A task object |
list | GET /tasks |
Returns tasks | An array of task objects |
update | PUT /tasks/:id |
Update a task | A task object |
delete | DELETE /tasks/:id |
Delete a task | Nothing |
To reach a milestone for a major release, we'd like contributions for the following:
- Add task for ranking and priority sorting
- Implement task lists or categories
- Add support for SQL or NoSQL persistent data store
Contributions can be made by following these steps:
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
If you have any questions, please don't hesitate to contact me at [email protected].
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
By John Boyer, Rodax Software, Inc.