* Resources

https://github.com/fukamachi/caveman/issues/112

* Static Pages

* Index
#+BEGIN_SRC
(defroute index "/" ()
#+END_SRC

* About
#+BEGIN_SRC
(defroute "/about" ()
#+END_SRC

* News
#+BEGIN_SRC
(defroute "/news" ()
#+END_SRC

* TODO List
#+BEGIN_SRC
(defroute ("/todo" :method :GET) ()
#+END_SRC

* Markdown Viewer
#+BEGIN_SRC
(defroute ("/markdown" :method :GET) (&key _parsed)
#+END_SRC

* Documentation
#+BEGIN_SRC
(defroute doc "/doc" (&key |org|)
#+END_SRC

* Simple Forms

* YDKs
#+BEGIN_SRC
(defroute ("/ydk" :method :GET) ()
(defroute ("/ydk" :method :POST) (&key _parsed)
#+END_SRC

* Label Maker
#+BEGIN_SRC
GET /label-maker
/label-maker/
(defroute ("/label-maker" :method :POST) (&key _parsed)
(defroute ("/label-maker" :method :GET) ()
(defroute ("/label-maker/instructions" :method :GET) ()
#+END_SRC

* QR Code
#+BEGIN_SRC
(defroute ("/qr" :method :GET) ()
(defroute ("/qr" :method :POST) (&key _parsed)
#+END_SRC

* Register

* Contact
#+BEGIN_SRC
(defroute ("/contact" :method :GET) ()
(defroute ("/contact/admin" :method :GET) ()
(defroute ("/contact" :method :DELETE) ()
(defroute ("/contact/:id/delete" :method :DELETE) (&key id)
(defroute ("/contact" :method :POST) (&key _parsed)
#+END_SRC

* Attachments
#+BEGIN_SRC
(defroute ("/upload" :method :GET) ()
(defroute ("/upload" :method :POST) (&key _parsed)
(defroute ("/upload/:id" :method :DELETE) (&key id)
#+END_SRC


* Cards
#+BEGIN_SRC
(defroute ("/cards" :method :GET) (&key _parsed)
(defroute ("/cards/search" :method :POST) (&key _parsed)
(defroute ("/cards/:id/view" :method :GET) (&key id)
(defroute ("/cards/ygo-set-items" :method :GET) (&key |set-id| |variant-id|)
(defroute ("/cards/:id/image" :method :GET) (&key id)
#+END_SRC


* Categories
#+BEGIN_SRC
(defroute ("/category/new-child" :method :POST) (&key _parsed)
(defroute ("/category/explain" :method :GET) ()
(defroute ("/category" :method :GET) (&key _parsed)
(defroute ("/category/search" :method :POST) (&key _parsed)
(defroute ("/category/:id/view" :method :GET) (&key id)
(defroute ("/category/list" :method :GET) (&key _parsed)
(defroute ("/category/:id/delete" :method :DELETE) (&key id)
(defroute ("/category/:id/rename" :method :POST) (&key id _parsed)
(defroute ("/category/fake-data" :method :GET) ()
(defroute ("/category/new-parent" :method :POST) (&key _parsed)
#+END_SRC

* Constructed Decks
#+BEGIN_SRC
(defroute ("/construct" :method :GET) ()
(defroute ("/construct/:id/view" :method :GET) (&key id)
(defroute ("/construct/:id/view" :method :POST) (&key id _parsed)
(defroute ("/construct/:id/select-sets" :method :GET) (&key id)
#+END_SRC

* Deck Templates
* Decks
#+BEGIN_SRC
(defroute ("/decks/:id/view" :method :GET) (&key id)
(defroute ("/decks/:id/generate-cover-images" :method :GET) (&key id)
(defroute ("/decks/:id/delete-generated-images" :method :DELETE) (&key id)
(defroute ("/decks/:id/to-category" :method :POST) (&key id _parsed)
(defroute ("/decks/:id/rename" :method :POST) (&key id _parsed)
(defroute ("/decks/:id/pull" :method :GET) (&key id)
(defroute ("/decks/cards-in-decks" :method :GET) (&key _parsed)
(defroute ("/decks/:id/name" :method :GET) (&key id)
(defroute ("/decks/by-category/:id" :method :GET) (&key id _parsed)
(defroute ("/decks/:id/html-listing" :method :GET) (&key id _parsed)
(defroute ("/decks/:id/html-text-listing" :method :GET) (&key id _parsed)
(defroute ("/decks/:id/text-listing" :method :GET) (&key id _parsed)
(defroute ("/decks/:id/image-listing" :method :GET) (&key id _parsed)
(defroute ("/decks/:id/delete" :method :DELETE) (&key id)
(defroute ("/decks/search" :method :GET) (&key _parsed)
(defroute ("/decks/search" :method :POST) (&key _parsed)
(defroute ("/decks/deck-select" :method :GET) (&key |id|)
(defroute ("/decks/category-select" :method :GET) (&key |deck-id| |category-id|)
(defroute ("/decks/kde/:id" :method :GET) (&key id)
(defroute ("/decks" :method :GET) (&key _parsed)
#+END_SRC

* Users
* Login
#+BEGIN_SRC
(defroute ("/user/login" :method :GET) ()
(defroute ("/user/login" :method :POST) (&key _parsed)
(defroute "/user/logout" ()
(defroute ("/user/register" :method :GET) ()
(defroute ("/user/register" :method :POST) (&key _parsed)
(defroute ("/user" :method :DELETE) (&key _parsed)
(defroute ("/user/:id/roles" :method :GET) (&key id)
(defroute ("/user/admin" :method :GET) ()
(defroute ("/user" :method :GET) ()
#+END_SRC

* Deck Builder
#+BEGIN_SRC
GET /builder
POST /builder name= race= archetype= attribute= passcode=
GET /builder/current-deck
POST /builder/current-deck  action=load id=N
POST /builder/current-deck  action=save
POST /builder/current-deck  action=clear
POST /builder/current-deck  action=rename name="New Name"

POST /builder/current-deck  action=add deck=main,side,extra passcode=N
POST /builder/current-deck  action=remove deck=main,side,extra index=N

(defroute ("/builder/delete" :method :DELETE) (&key _parsed)

GET /builder/saved-categories id=N
GET /builder/saved-decks
#+END_SRC

* Inventory
** TODO Multi Inventory
#+BEGIN_SRC
(defroute ("/inventory/new" :method :POST) (&key _parsed)
(defroute ("/inventory/import" :method :GET) ()
(defroute ("/inventory/:id/edit" :method :GET) (&key id)
(defroute ("/inventory/:id/edit" :method :POST) (&key id _parsed)
(defroute ("/inventory/patch" :method :PATCH) (&key _parsed)
(defroute ("/inventory/:id/delete" :method :DELETE) (&key id)
(defroute ("/inventory/variants/:id" :method :GET) (&key id)
(defroute ("/inventory" :method :GET) (&key _parsed)
(defroute ("/inventory" :method :POST) (&key _parsed)
(defroute ("/inventory/search" :method :POST) (&key _parsed)
(defroute ("/inventory/new" :method :GET) ()
#+END_SRC

* Workbench
#+BEGIN_SRC
(defroute ("/chat" :method :GET) ()
(defroute ("/html" :method :GET) (&key |path|)
(defroute ("/test" :method :GET) (&key _parsed)
#+END_SRC
