Todo is a RESTful task management API implemented as a Spring Boot app and running DynamoDB Local.
Java Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
gradle/wrapper
scripts
src
.gitignore
LICENSE
README.md
build.gradle
gradlew
gradlew.bat
settings.gradle

README.md

Todo API

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.

Table of Contents

  1. Build and Run
  2. Reference
  3. Contributors
  4. License

Build and Run

Install DynamoDB Local

  1. Before running or testing the app, you'll need install DynamoDB Local.
  2. Set DYANMODB_HOME in the run DynamoDB script (run-dynamodb.sh) in the /scripts directory.

Run as a Spring Boot App

  1. Run DynamoDB Local: $ ./scripts/run-dynamodb.sh
  2. Then create the Todo app's tables: $ ./scripts/create-dynamodb-tables.sh
  3. 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.

Build the App

To just build the project type: $ gradle build

For information on installing Gradle go to https://gradle.org/install

Reference

Getting Started

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.

API Overview

User

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

Tasks

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

Contributors

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:

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

If you have any questions, please don't hesitate to contact me at john@rodaxsoft.com.

License

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.