Make a searchable address book from a contact spreadsheet. http://codeforamerica.github.io/citybook
CityBook aims to make it easier for administrative staff who maintain contact lists to create a searchable, mobile-responsive web app that uses their spreadsheet as a data source.
Based on the CfA 2015 Richmond Fellowship team's Search-RVAHealth project.
CityBook emphasizes simplicity and flexibility over adherence to a data standard. You can add any columns with any title to your CityBook spreadsheet and they will displayed. However, some column names are required or receive special treatment:
Displayed as an <h1>
element. It corresponds to the main title of your entry.
Displayed as a button that users can click or tap to launch a call. Cells should contain a single telephone number. Most mobile telephone applications are flexible in how they parse a phone number, so these may use any common telephone format (e.g. 123-456-7890, (123)456-7890, 1234567890, etc.).
Displayed as a button that launches Google Maps directions to the location in the cell. It's a good idea to test the addresses you enter by searching for them in Google Maps. If your address is incomplete or does not return a result, the user may have difficulty finding the right location.
All other data types are displayed in the "Show Details" section. The column header will appear as bold text with a colon (i.e. a Key-Value format).
git clone https://github.com/codeforamerica/citybook.git
npm install
Create a PostgreSQL databse named citybook, or edit the development block of config/config.js
to the name of your database.
Running in development mode enables WebpackDevServer hot-module-reloading on port 3000. Use port 8080 for testing back-end functionality.
npm run dev
Bundles everything into bundle.js.
webpack
npm start
git remote add production https://git.heroku.com/citybook.git``` (Open an issue to be added as a collaborator on heroku)
### Database Migration
Make your changes, then run:
`node_modules/.bin/sequelize db:migrate`
### What is this built with?
This project uses [Tabletop.js](https://github.com/jsoma/tabletop) for the spreadsheet access, [Handlebars](http://handlebarsjs.com/) for some templating, [List.js](http://www.listjs.com/) for the searchable list, and [Bootstrap](http://getbootstrap.com/) for the styles.
The instruction page template was generated by using the [Cayman theme](https://github.com/pietromenna/jekyll-cayman-theme) by [Jason Long](http://github.com/jasonlong).