Ephemeral is a responsive browser-based app for finding and posting local events.
See the production site at ephemeralmap.com
Users can scroll around the map in order to quickly see events that are happening now or very soon. They can add comments, ratings, and photos to existing events, and can also very easily also post their own events which will then appear on the map for everyone to see.
Here's a quick overview of the app's architecture, with links to sample files.
- Client app is built with Ionic, Angular, and the Google Maps API.
- Directory of main client files
- Main app.js
- Example: Marker factory
- Node Server - runs on Express.
- Directory of API routes
- Main server.js
- Example: Events controller
- Example: Authentication via Passport
- Databases - our primary DB is PostgreSQL.
- Example schema/model: events. The DB instantiated with Knex and then wrapped with the Bookshelf ORM.
- Photo uploads and hosting handled via Amazon's S3.
- Build System - we use Gulp.
- Gulpfile for live reload, sass, linting, testing, etc.
- Testing - we use Mocha and Chai
- Test suite
Ephemeral relies on five other project repos, all authored in-house.
- Lytics: our very own server analytics suite. Available to anyone via
$ npm install lytics
. - Splash: our welcome page.
- Parser: a server that handles data scraping, language processing, and external API requests in order to populate the events database
- Geocoding: a server that handles and throttles outgoing requests to the Google Geocoding API
- LISTnr: a Python/Django app that looks for event-related text blobs and forwards candidates to Parser.
We welcome feedback, suggestions, and pull requests! Please review our Contribution guidelines.
So you want your own copy, eh? Great!
- Clone down this repo and the Parser repo separately.
- In your terminal, run
$ npm install
in each repo's root directory. - Set up a local PostgreSQL instance on port 5432 and give it a database named "base9."
- New to PostgreSQL? Postgresapp.com makes it very easy to get started (on OSX at least).
- run
$ gulp
in the root of each repo to initialize the local server. By default, Ephemeral and Parser run on port 9000 and 8000 respectively. - Visit http://localhost:9000 in your browser to interact with the client application.