# Wishlists

A [Rocket](https://rocket.rs) based web application written in Rust for
maintaining a board of wishlists for a family or group of friends. 
Similarly to a Wiki, all lists can be edited by everyone, as a board with
physical lists would also allow.

## Building

Because Rocket still requires a nightly version of Rust, Wishlist also
requires it.  The application has been tested with `nightly-2017-12-21`.

Wishlists uses a customized Bootstrap-style, to compile this, the
Ruby implementation of Sass 

```
$ gem install sass
...
$ scss static/scss/wishlists.scss:static/csss/wishlists.css
```

## Usage

The lists are stored as plain text files (in Markdown format) under the
`lists` subdirectory.  As an administrator of the application, you should
touch a file with the extension `.list` in this subdirectory to create
lists.  The resulting list names are the title cased version of the snake
cased filenames.  For example to create a list for "John Doe":

```
$ touch lists/john_doe.list
```

After creating new lists, start (or restart) the application and then visit:
http://localhost:8000/.

For setting up production or staging environments, see the
[Rocket documentation](https://rocket.rs/guide/configuration/) about
configuring different environments.

## To Do

There are still quite some things left to do.  Here are some points of
improvement for the future:

* Use a Rust-implementation for Sass
* Support different sets of lists (for different environments)
* Get rid of hardcoded strings in the UI (for example the name of my family)
* Add i18n to support several languages
* Support locking a list while editing it in the client so other clients
  cannot edit it

## License

Wishlists is licensed under the MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT).
