https://github.com/throughnothing/prognosticator
Prognosticate, and stuff.
https://github.com/throughnothing/prognosticator
Last synced: 5 months ago
JSON representation
Prognosticate, and stuff.
- Host: GitHub
- URL: https://github.com/throughnothing/prognosticator
- Owner: throughnothing
- Created: 2019-06-04T23:12:39.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T06:05:31.000Z (over 3 years ago)
- Last Synced: 2023-04-14T01:26:35.415Z (about 3 years ago)
- Language: PureScript
- Size: 1.8 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Prognosticator
Prognosticator is a web app that allows users to record arbitrary
predictions that they have some opinion / conviction on,
and update and track their accuracy over time.
Prognosticator also serves as a playground for me to
learn [Halogen](https://github.com/slamdata/purescript-halogen)
and to learn about building web apps (server + client) in a
purely functional way with [Purescript](https://github.com/purescript/purescript).
## Design
Prognosticator is written in Purescript, leveraging Node.js, ExpressJS,
Halogen UI framework, PostgreSQL for persistance, and cookie-stored sessions
(via ExpressJS) to avoid needing a session store.
The `main` entry point for the node/express server is located in `src/Server/Main.purs`,
and the `main` entry point for the UI is located in `src/UI/Main.purs`.
## Development
Setting up your dev environment.
You will need to [install nix](https://nixos.org/nix/download.html),
if you don't have it already.
You will also want a PostgreSQL server available, the below
suggests using docker, with the provided docker helper script.
Finally, currently Prognosticator only supports sign-in with Google,
so you will need to have a Google AppID setup in your `.env` for
login and authentication to work.
```
# To run the server, and postgres server,
# you will need the proper environment
# variables set. Copy the .env.template
# file to .env and fill in the appropriate
# values before sourcing
. .env
# Start Postgres in Docker
# You can stop, rm, and start this container
# later with these commands:
# - docker stop prognosticator-pg
# - docker rm prognosticator-pg
# - docker start prognosticator-pg
db/local_docker.sh
# Install npm deps, spago, and purescript deps
make setup
# Migrate the database up
make db-migrate-up
# Run the server
# This builds the client-side app.js
# and then runs the local server
make serve
# Now you can view it in your browser
# http://localhost:port
```
## TODO
- [ ] Add sorting / pagination / filtering to queries
- [ ] Add ability to create forecasts on a question
- [ ] Add better error messages for Create Question / Forecast
- [ ] Add statistics for forecasts from the forecast group
- [ ] Add charts / graphs for forecasts over time
- [ ] Implement hot reloading with Parcel (https://github.com/justinwoo/halogen-parcel-hot-reload-demo)