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.
SERVER
defaults tolocalhost:8080
. This is enough to test running the server and the GNU/Linux client on the same machine.Set
SERVER=192.168.0.1
or 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.net
to 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)