@@ 1,34 @@
+#lang racket
+(require web-server/dispatch
+ web-server/servlet
+ web-server/servlet-env
+ web-server/http)
+(require json)
+
+(define cands (list "ohea" "rtsn" "qfuy"))
+
+; how this is not a provided function is beyond me
+(define/contract (response/json jsexpr)
+ (-> jsexpr? response?)
+ (response/full
+ 200 #f (current-seconds) #"application/json"
+ empty (list (jsexpr->bytes jsexpr))))
+
+(define (candidates req)
+ (response/json cands))
+
+(define (vote req)
+ (response/xexpr
+ '(html (body (p "you're going to vote")))))
+
+(define-values (dispatcher url-generator)
+ (dispatch-rules
+ [("candidates") candidates]
+ [("vote") vote]
+ [else candidates]))
+
+(serve/servlet dispatcher
+ #:port 5598
+ #:command-line? #f
+ #:servlet-path ""
+ #:servlet-regexp #rx"")