aboutsummaryrefslogtreecommitdiff
path: root/lib/Server.hs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* use OsPath instead of FilePath in easy casesstuebinm2024-05-201-2/+2
| | | | | | | | | this is still far from being supported by most libraries, but does make it possible to remove some uses of String (though most times, there is a conversion back to String later). Note that using the default.nix now only works on nixpkgs-unstable for a bit; using the newer filepath package on stable leads to broken other packages.
* new feature: Server.Frontend.Tickerstuebinm2024-05-161-1/+12
| | | | | | | | A simple way to have "announcements" available via API, and otherwise distinct from the service announcements which show up in Gtfs Realtime. These are meant to go e.g. be embedded on the operator's website, or in other places where it's not as easy to display per-trip specific messages.
* config: add a debug mode optionstuebinm2024-05-151-3/+6
| | | | | this is meant to be false by default, and otherwise relaxes requirements on e.g. incoming pings, which are inconvenient when testing by hand.
* restructure: split web frontend into several modulesstuebinm2024-05-091-2/+2
|
* restructure: split up the server modulestuebinm2024-05-081-276/+73
|
* restructure: get the tracker to work againstuebinm2024-05-021-67/+112
| | | | | | | | | | | | | | | This should hopefully be the final (major) part of the restructuring: a tracker no longer has to know which trip it is on (and indeed it has no idea for now), instead the server keeps state about which trips are currently running and will insert incoming pings in a hopefully reasonable manner, based on their geoposition & time. There's lots of associated TODO items here (especially there should be manual overrides for all this logic in the web ui), but that's work for a future me. (incidentally, this also adds support for sending all log messages out via ntfy-sh)
* restructure: save a ticket's stop in the databasestuebinm2024-04-241-88/+119
| | | | now mostly independent of the gtfs, but still no live-reloading of it.
* restructure: have "tickets" independent of gtfsstuebinm2024-04-201-41/+50
| | | | | | this is mostly meant to guard against the gtfs changing under tracktrain, and not yet complete (e.g. a ticket does not yet save its expected stops, which it probably should).
* general housekeepingstuebinm2024-04-171-10/+5
| | | | | jumps to GHC2021 as default language, adds in some fields, moves the old org mode glossary to markdown, etc.
* change server timetables apistuebinm2023-05-261-1/+2
|
* expose sequence length of trip to onboard unitstuebinm2023-05-261-0/+1
|
* expose the gtfs.zip used in the APIstuebinm2023-05-201-6/+9
|
* simple on-board toolsstuebinm2023-03-111-8/+19
| | | | | | these are just enough to send train positions to tracktrain with the current API, but are somewhat brittle (e.g. will fail if not restarted between trips, etc.)
* don't hardcode cssstuebinm2023-02-231-5/+6
|
* oauth2 via uffdstuebinm2023-01-221-7/+6
| | | | | | this is unfortunately uffd-specific, since oauth2 is apparently sort of a vague standard. But since it doesn't actually do much it should probably be possible to make it fully configurable & generic if needed.
* simple realtime position mapstuebinm2022-12-131-1/+9
| | | | | (what was that about doing the realtime stuff somewhere else and /not/ in this monolithic server thingie? oh well …)
* a subscribe websocket for real-time location infostuebinm2022-12-121-7/+36
| | | | (for a leaflet map view or sth which isn't implemented yet)
* simple prometheus metricsstuebinm2022-10-161-5/+16
|
* remove some extrapolation bugsstuebinm2022-09-141-3/+3
|
* on-board-unit: display estimated delay etc.stuebinm2022-09-111-3/+5
|
* gtfs realtime: add tripUpdate feedstuebinm2022-09-101-3/+3
|
* use websockets for the on-board-unitstuebinm2022-09-101-32/+31
|
* guess at future delays (horrible, incorrect, and unfinished)stuebinm2022-08-311-2/+2
|
* some config thingyesodstuebinm2022-08-281-1/+4
| | | | | works kinda well, but doesn't complain about unknown config values in json, which is kinda hmpf tbh
* this does way too much tbh (also functioning delays)stuebinm2022-08-281-5/+17
| | | | most of it deals with timezones, and all the weird implications that has
* controlroom: lots of pretty little knobsstuebinm2022-08-271-41/+37
| | | | (also some database schema changes, for good measure)
* control room: translations & form inputstuebinm2022-08-141-2/+2
| | | | still basic, but works pretty well overall
* controlroom: replace servant/lucid with yesodstuebinm2022-08-141-1/+4
| | | | aka use something meant for webapps to write the webapp
* somewhat functioning control roomstuebinm2022-07-111-1/+1
| | | | | | tbh i've kinda lost track at what has all been changed in this, but the control room form handling now works, and i can write announcements into the database. Now on to making it do useful things!
* don't have the ControlRoom API in Swaggerstuebinm2022-07-071-2/+2
| | | | | | just causes pain and isn't really useful for anything since it's a webform API meant to be used by the web frontend, not by other applications.
* barebones webform API & frontendstuebinm2022-07-031-0/+2
|
* remove some unused importsstuebinm2022-07-031-30/+11
|
* add service monad (with built-in logging)stuebinm2022-07-031-19/+20
|
* websockets and better (empty) response messagesstuebinm2022-07-021-48/+65
| | | | (tough mostly untested)
* better module namesstuebinm2022-07-021-1/+1
|
* rudimentary admin api implementationstuebinm2022-07-021-2/+17
|
* gtfs realtime: add vehicle positionsstuebinm2022-07-021-1/+2
| | | | | | (or at least something that looks like it might be correct — though it carries very little information, and lacks things like what the next stop along the route is)
* more or less functional servicealerts for gtfs rtstuebinm2022-07-021-62/+8
| | | | (kinda barebones, but the important things should be there)
* gtfs realtime proof of conceptstuebinm2022-07-021-1/+63
| | | | | | | | this adds a package for protobuf stuff, generated via hprotoc. Seems to work kinda fine? (the generated API is horrible though, will have to write some wrappers for that)
* optional date parameter for the timetable endpointstuebinm2022-06-271-4/+8
| | | | (mostly to make debugging easier, but also more generially useful i guess)
* foreign keys are a thingstuebinm2022-06-161-47/+19
| | | | | | (and they can be useful, too!) Also, documentation & deleting imports / extensions that aren't used.
* actually use the databasestuebinm2022-06-161-96/+103
| | | | | | (at least for a few simple things) Also, more modules!
* add some persist stuffstuebinm2022-06-151-22/+35
| | | | | this doesn't yet actually use the database, but it's getting close to 3am and I should probably go to bed or something
* generate OpenAPI docsstuebinm2022-06-101-37/+69
| | | | lots of lenses in this stuff :(
* restructure GTFS typesstuebinm2022-06-061-8/+6
| | | | | | | unfortunately doesn't quite get rid of all the type family still since it's just too useful … but does reduce it somewhat. Also, maps are much easier for looking things up than vectors!
* better aeson genericsstuebinm2022-06-061-2/+7
| | | | (template haskell doesn't work well with type families, unfortunately)
* basic server setupstuebinm2022-06-051-0/+96