-
Notifications
You must be signed in to change notification settings - Fork 6
App Specification
Simple Todo App. ReSTy endpoint for Backbone JS app.
- This is not some sort of code golf exercise (code should be pragmatic, idiomatic and easy to read for a beginner)
- This is not a speed competition (don't sacrifice readability for speed)
- Must conform to a baseline API?
- Must at least have in memory persistence
Manually adding external (non-framework) libraries should be avoided as much as possible. The intent of this project is to show what the framework can do rather than what cool libraries you can add to make things pretty.
Model is simple
id: Number or UUID
title: Title of Todo
order: Number specifying ordering of items
complete: Boolean specifying if Todo is complete or not
Application API must provide following endpoints
GET / Returns index.html (from webapp submodule - __NEED TO DOCUMENT THIS__)
GET /todos Returns JSON of all todos
POST /todos Accepts JSON encoded body returns created Todo (e.g. with the ID field populated) or Invalid response (400 Status Code) with validation errors (__do we constrain these - I think not?__)
PUT /todos/[id] Accepts a JSON encoded body of a Todo and the Todo with an [id] will be updated. If [id] does not exist a 404 is returned (__define body of 404???__)
Quick sanity check is that the app must serve and work with the Backbone TodoMVC application (modified without localStorage adapter). A simple implementation of that can be added as a submodule is available
Optional project with a No JS solution can be provided
The projects folder should be as descriptive as possible without being overly verbose. You should hint at what frameworks are in play e.g.
play-2-scala uses Play! 2, Scala, basic in-memory persistence
play-2-scala-mongo-no-js uses Play! 2, Scala, MongoDB persistence and is a No JS version
Each pull request for a new framework submission must have working code and a README.md file with the following contents
- Description of frameworks used
- How to build/run app
- Required software (potentially versions as well)