benitlux -
An unofficial app and mailing list to keep faithful bargoers informed of the beers available at the excellent Brasserie Bénélux.
This project is composed of three softwares:
- A mobile app and social network,
- a server with a RESTful API for the mobile app and a web interface to subscribe to the mailing list
- and a daily background program which updates the DB and send emails.
The mobile app is available on the Nit F-Droid repository, see http://nitlanguage.org/fdroid. The web interface is currently published at http://benitlux.xymus.net.
Compile and execute
First, choose a server and set the SERVER environment variable accordingly.
It can be localhost, a local development server or the official server.
SERVERdefaults tolocalhost:8080. This is enough to test running the server and the GNU/Linux client on the same machine.Set
SERVER=192.168.0.1or to your IP to quickly setup a development server. This allows you to work and test both the clients and the server.Set
SERVER=benitlux.xymus.netto use the official server, it should work with all clients. It is not advised to use the official server with unstable clients.
Mobile client
Build and run on GNU/Linux with make bin/benitlux && bin/benitlux
Build and install for Android with: make bin/benitlux.apk && adb install -rd bin/benitlux.apk
Build and simulate for iOS with: make bin/benitlux.app && ios-sim launch bin/benitlux.app
Server
Install all required development packages. Under Debian or Ubuntu, you can use: apt-get install libevent-dev libsqlite3-dev libcurl4-gnutls-dev sendmail
Compile with: make
Launch the daily background program with: bin/benitlux_daily (the argument -e sends the emails)
Launch the server with: bin/benitlux_web
The Web interface will be accessible at http://localhost:8080/
Features and TODO
- [x] Web page parser
- [x] Daily mailer
- [x] Web interface
- [x] Serialization and deserialization of data classes
- [x] Android app
- [x] iOS app
- [ ] Charlevoix location support
- [ ] Authenticate unsubscribe actions over GET
- [x] Social network and location updates
- [ ] Event updates
Content
- benitlux: An unofficial app and mailing list to keep faithful bargoers informed of the beers available at the excellent Brasserie Bénélux. (contrib/benitlux)
- android (contrib/benitlux/android)
- res (contrib/benitlux/android/res)
- src (contrib/benitlux/src)
- benitlux_model: Database and data model to be used by servers and clients (contrib/benitlux/src/benitlux_model.nit)
- client (contrib/benitlux/src/client)
- android: Android variant improved with platform specific services (contrib/benitlux/src/client/android.nit)
- android_proto: Android variant without modification, pure prototype (contrib/benitlux/src/client/android_proto.nit)
- base: Common services for the Benitlux app (contrib/benitlux/src/client/base.nit)
- client: Portable Benitlux app (contrib/benitlux/src/client/client.nit)
- features (contrib/benitlux/src/client/features)
- checkins: On location checkin services (contrib/benitlux/src/client/features/checkins.nit)
- debug: Debugging features accessible from the user preference menu (contrib/benitlux/src/client/features/debug.nit)
- manual_checkins: Variation adding a button to manually check in and out (contrib/benitlux/src/client/features/manual_checkins.nit)
- push: Push notification support (contrib/benitlux/src/client/features/push.nit)
- translations: Support for translating the app to different languages, implements French (contrib/benitlux/src/client/features/translations.nit)
- ios: iOS variant using a button to check in/out and local notifications (contrib/benitlux/src/client/ios.nit)
- views (contrib/benitlux/src/client/views)
- beer_views: Window to list beers and other beer-related views (contrib/benitlux/src/client/views/beer_views.nit)
- home_views: Main home window (contrib/benitlux/src/client/views/home_views.nit)
- social_views: Window to list beers and other beer-related views (contrib/benitlux/src/client/views/social_views.nit)
- user_views: User preference window and other user-related view (contrib/benitlux/src/client/views/user_views.nit)
- correct: Correct errors in beer names before using data from the DB (contrib/benitlux/src/correct.nit)
- report (contrib/benitlux/src/report.nit)
- server (contrib/benitlux/src/server)
- benitlux_controller: Actions for the Web interface of Benitlux (contrib/benitlux/src/server/benitlux_controller.nit)
- benitlux_daily: Daily program to fetch and parse the Web site, update the database and email subscribers (contrib/benitlux/src/server/benitlux_daily.nit)
- benitlux_db: Database interface to be used by the Web server and daily program (contrib/benitlux/src/server/benitlux_db.nit)
- benitlux_social: Social features acting on the database (contrib/benitlux/src/server/benitlux_social.nit)
- benitlux_view: View logic of the Web interface Benitlux (contrib/benitlux/src/server/benitlux_view.nit)
- server: Web server for Benitlux (contrib/benitlux/src/server/server.nit)
- android (contrib/benitlux/android)