A free/libre code and information platform for reviews of anything

Erik Moeller 0504ba9d61 RTE: Fix jumpy initial cursor in Firefox 12 hours ago
assets 4ac04839a5 New review feature: Front-end logic 9 months ago
bin c333084ef1 Start using Node6 ES6 features 6 months ago
config 0fab6a4a9f Add search 1 month ago
frontend 0504ba9d61 RTE: Fix jumpy initial cursor in Firefox 12 hours ago
locales 27f3ce1da6 Localisation updates from https://translatewiki.net. 2 days ago
maintenance 0fab6a4a9f Add search 1 month ago
manifests 0e1482d3f5 add missing comma 6 months ago
models 65fa30218b Automatically disambiguate reserved slugs 3 weeks ago
routes 213395da2e Automatically match RTE height to textarea; other tweaks 5 days ago
static 231b392478 Make RTE dialogs modal 19 hours ago
tests db65e91b58 Major refactor of error-handling code 2 months ago
tools ac49a5d3fc Fix IRC nick regaining code, don't define username twice 3 months ago
util 213395da2e Automatically match RTE height to textarea; other tweaks 5 days ago
views 213395da2e Automatically match RTE height to textarea; other tweaks 5 days ago
.eslintrc.json 0de5dada85 Integrate ProseMirror rich-text editor 6 days ago
.gitignore 0de5dada85 Integrate ProseMirror rich-text editor 6 days ago
.jshintrc f9136684ef Implement team join/leave logic, including for closed teams 8 months ago
.snyk cb956b95db fix: package.json & .snyk to reduce vulnerabilities 2 weeks ago
CODE_OF_CONDUCT.md a4ceae8e4a Add setup instructions & code of conduct 8 months ago
Gruntfile.js 0de5dada85 Integrate ProseMirror rich-text editor 6 days ago
LICENSE 75f1238f71 Veeeery basic express skeleton + i18n 10 months ago
README.md e562271f3e Credit ProseMirror in README 4 days ago
Vagrantfile 9564f2666a Improvements to Vagrant setup 6 months ago
app.js cc0b7e8303 Explain route order 4 weeks ago
auth.js 88096f2eba Add support for associating reviews with teams. 6 months ago
db.js 7b0f9df9b8 Gracefully handle database connection failures. 7 months ago
package.json 0de5dada85 Integrate ProseMirror rich-text editor 6 days ago
process.json a63c0c52f0 Ensure debug messages are shown when app is run in cluster mode 7 months ago
search.js 0387454842 Also search review title 1 month ago

README.md

lib.reviews

A free/libre code and information platform for reviews of absolutely anything.

The site is at: https://lib.reviews/

At this point, you need an invite code to make an account. Follow lib_reviews on Twitter and send a public ping, and we'll respond with the private invite code. To keep up with development, add our development diary to your favorite feed reader.

Technical background

Our technical choices include:

  • Node.js LTS (currently the Node.js 6 series)
  • Express as lightweight framework
  • RethinkDB as primary backend
  • ElasticSearch as search backend
  • Thinky as ODM
  • Handlebars for front-end templating
  • LESS for CSS
  • PureCSS for grid system & basic styling
  • Grunt as a build system
  • Babel to transpile ES6+ code
  • ava as a test runner
  • pm2 for process management, monitoring and deployment
  • ProseMirror as the rich-text editing framework

This project follows a strong philosophy of progressive enhancement. That means that client-side UI features should always be optional, not required -- the primary functionality of the site should be available without JavaScript and on low-end devices.

We also try to add keyboard shortcuts where relevant, and generally follow existing conventions for those (from Wikipedia, Google and other sites).

We aim to be multilingual in UI and content, and are exclusively using translatable strings throughout the user interface.

Setup & contributing

This is very much an open project and we'd love your help! :) To get started, clone the repository to your local computer. You will need the current Node.js stable release. Switch to your check-out directory and then run npm install. Run grunt to build the JavaScript. Make sure you also have RethinkDB up and running before starting the service.

You can customize your development configuration by copying config/default.json5 to config/development.json5. Finally, run npm start and visit localhost at the configured port number. Note we require access to two ports -- one for HTTP, one for HTTPS.

The startup scripts use pm2, which you can safely install globally alongside the local version. It's a handy tool that keeps the process running in the background, balances it across multiple cores if available, lets you manage log files, etc. If for any reason you just want to run the server without pm2, you can always fire up node bin/www instead.

Any pull requests must be under the CC-0 License. This project has adopted a code of conduct to make sure all contributors feel welcome.

Using Vagrant

If you're familiar with Vagrant and VirtualBox, you may find it easier to configure a working environment using our Vagrantfile. To install using Vagrant, simply type

vagrant up

in the main directory, and follow the instructions printed on screen. All dependencies will be installed automatically within a virtualized Debian environment.

Relevant related projects