Lunch is an Android application to bring together like-minded people over lunch.
Lunch integrates with Facebook and has users choose desirable conversation topics to set up a basic profile. Users can then view 'matches' based on location, similar topics chosen, and similar Facebook likes (much like Tinder).
Screenshots coming soon!
-
angular HTML/JS application framework
-
ionic HTML5 mobile application framework wrapping angular
-
The client was built using angular and ionic for a clean, mobile-friendly feel
-
cordova Package JavaScript as a native Android application
-
The client was ported to Java (for Android) using Apache's phonegap
-
neo4j Graph database
-
Neo4j was used to quickly retrieve matches for similarly-minded users
By using neo4j instead of a 'traditional' RDBMS, entire tables do not need to be iterated over to find similar users. Instead, searches are localized to the originating node (the requesting user). Much (but not all) of our queries were done through API endpoints in neo4j-swagger.
Your application IDs, provided through Facebook and Google, will need to be available to the mobile application.
- In
app/scripts/app.js
, set the correct IDs forfbAPI
,gcmAPI
, andAPIHost
.
fbAPI
: your Facebook App ID
gcmAPI
: your Google Project Number
APIHost
: the location of your own server
Server side variables are set through the shell, and accessed using process.env.VAR_NAME
in node. An actual deployment may need these to be configured in a deployment script, the format of which is dependant on your hosting service.
export GCM_KEY=your.Google.API.key
This is needed for Google Cloud Messaging (push notification service) to work.
export BASE_URL=http://your.api.endpoint
If you are running the server from a local machine (http://localhost:8008
), this can be skipped.
export NEO4J_URL=http://your.neo4j.server:7474
If you are running neo4j from a local machine (http://localhost:7474
), this can be skipped.
Off the bat, you'll need to use grunt and a local instance of neo4j.
- npm install -g grunt-cli
-
If you use brew,
brew install neo4j
-
If you're not using brew, an image is available off of the neo4j site
You'll need to set up a symbolic link to the binary to get it in your path,
ln -s /where/you/install/neo4j/bin/neo4j /usr/local/bin/neo4j
- Once installed, spin up the database with
neo4j start
You can boot up a client through a browser, emulator, or mobile device. Push notifications will only function if the client is booted on a mobile device.
To facilitate testing, there is a mock polyfill for push notifications, but it will only work if the application is entered through the login screen, with window.localStorage.fbtoken
undefined.
-
npm i && grunt start:client
Start up the client through a web browser -
npm i && grunt start:android
Start up a client through a connected android device or local emulator
This will only work if you have configured your android to run in debug mode with your machine.
Logging is available through morgan and colog. To enable logging, set your shell's DEVELOPMENT variable to enable logging. Using bash and zsh, export DEVELOPMENT=true
.
npm start
A mock dataset is available for the database. To empty your database and repopulate with mock data, run node test/populateDatabase.js
.