{"id":13907392,"url":"https://github.com/hack4impact-upenn/maps4all","last_synced_at":"2026-03-11T20:15:43.859Z","repository":{"id":50214161,"uuid":"51207396","full_name":"hack4impact-upenn/maps4all","owner":"hack4impact-upenn","description":"Generalized application for displaying location-based resources on a map","archived":false,"fork":false,"pushed_at":"2022-12-08T00:51:58.000Z","size":10565,"stargazers_count":33,"open_issues_count":20,"forks_count":11,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-07-18T07:39:27.347Z","etag":null,"topics":["flask","maps","python"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hack4impact-upenn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-06T15:20:01.000Z","updated_at":"2024-05-17T16:44:19.000Z","dependencies_parsed_at":"2023-01-25T01:45:37.828Z","dependency_job_id":null,"html_url":"https://github.com/hack4impact-upenn/maps4all","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hack4impact-upenn/maps4all","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack4impact-upenn%2Fmaps4all","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack4impact-upenn%2Fmaps4all/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack4impact-upenn%2Fmaps4all/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack4impact-upenn%2Fmaps4all/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hack4impact-upenn","download_url":"https://codeload.github.com/hack4impact-upenn/maps4all/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack4impact-upenn%2Fmaps4all/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30398664,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T18:46:22.935Z","status":"ssl_error","status_checked_at":"2026-03-11T18:46:17.045Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","maps","python"],"created_at":"2024-08-06T23:01:55.092Z","updated_at":"2026-03-11T20:15:43.845Z","avatar_url":"https://github.com/hack4impact-upenn.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"﻿# Maps4All [![Circle CI](https://circleci.com/gh/hack4impact/maps4all.svg?style=svg)](https://circleci.com/gh/hack4impact/maps4all)  [![Code Climate](https://codeclimate.com/github/hack4impact/maps4all/badges/gpa.svg)](https://codeclimate.com/github/hack4impact/maps4all) [![Test Coverage](https://codeclimate.com/github/hack4impact/maps4all/badges/coverage.svg)](https://codeclimate.com/github/hack4impact/maps4all/coverage) [![Issue Count](https://codeclimate.com/github/hack4impact/maps4all/badges/issue_count.svg)](https://codeclimate.com/github/hack4impact/maps4all)\n\n## Team Members\n\n- Annie Meng\n- Arman Tokanov\n- Ben Sandler\n- Brandon Obas\n- Daniel Zhang\n- Elizabeth Hamp\n- Hana Pearlman\n- Katie Jiang\n- Kyle Rosenbluth\n- Natasha Narang\n- Rani Iyer\n- Sanjay Subramanian\n- Stephanie Shi\n- Veronica Wharton\n\n## Synopsis\n\nA generalized Flask application for displaying location-based resources on a map.\n\n## Setting up\n\n##### Clone the repo\n\n```\n$ git clone https://github.com/hack4impact/maps4all.git\n$ cd maps4all\n```\n\n##### Initialize a virtualenv\n\n```\n$ pip install virtualenv\n$ virtualenv -p python3 venv\n$ source venv/bin/activate\n```\n(If you're on a mac) Make sure xcode tools are installed\n```\n$ xcode-select --install\n```\n\n##### Install the dependencies\n\n```\n$ pip install -r requirements.txt\n```\n\n##### Other dependencies for running locally\n\nYou need to install [Foreman](https://ddollar.github.io/foreman/) and [Redis](http://redis.io/). Chances are, these commands will work:\n\n```\n$ gem install foreman\n```\n\nFor Mac (using [homebrew](http://brew.sh/)):\n\n```\n$ brew install redis\n```\n\nFor Linux (Fedora)\n\n```\n$ sudo dnf install redis\n```\n\nFor Linux (Debian/Ubuntu):\n\n```\n$ sudo apt-get install redis-server\n```\n\nIf you don't want to install redis locally, you can use Redis container with docker\n\n```\n$ docker pull redis:latest\n$ docker run -d -p 6379:6379 --name maps4all-redis redis:latest\n```\n\n##### Set your environment variables\n\nCreate a `.env` file in your directory and include the following variables:\n* `ADMIN_EMAIL` and `ADMIN_PASSWORD` allow you to login as an administrator to Maps4All on your local machine.\n* `FILEPICKER_API_KEY` is an API key which you can obtain [here](https://dev.filestack.com/signup/free/).\n* `MAIL_PASSWORD` and `MAIL_USERNAME` are your login credentials for [Sendgrid](https://sendgrid.com/).\n* `GOOGLE_API_KEY`, `GOOGLE_API_1`, and `GOOGLE_API_2` are API keys for Google maps. They can be obtained [here](https://developers.google.com/maps/documentation/javascript/get-api-key#step-1-get-an-api-key-from-the-google-api-console).\n* `TWILIO_ACCOUNT_SID` and `TWILIO_AUTH_TOKEN` allow you to use the Twilio API to send text messages. They can be obtained through the [Twilio console](https://www.twilio.com/login).\n\nYour `.env` file should look something like this:\n```\nADMIN_EMAIL=admin@maps4all.org\nADMIN_PASSWORD=password123\nFILEPICKER_API_KEY=XXXXXXXXXXXXXXXX\nMAIL_USERNAME=janedoe\nMAIL_PASSWORD=password123\nGOOGLE_API_KEY=XXXXXXXXXXXXXXXX\nGOOGLE_API_1=XXXXXXXXXXXXXXXX\nGOOGLE_API_2=XXXXXXXXXXXXXXXX\nTWILIO_ACCOUNT_SID=XXXXXXXXXXXXXXXX\nTWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXX\n```\n\n##### Create the database\n\n```\n$ python manage.py recreate_db\n```\n\n##### Other setup (e.g. creating roles in database)\n\n```\n$ python manage.py setup_dev\n```\n\n##### [Optional] Add fake data to the database\n\n```\n$ python manage.py add_fake_data\n```\n\n## Running the app\n\n```\n$ source venv/bin/activate\n$ honcho start -f Local\n```\nThen navigate to `http://localhost:5000` on your preferred browser to open the web app.\n\n## Project Structure\n\n\n```\n├── Procfile\n├── README.md\n├── app\n│   ├── __init__.py\n│   ├── account\n│   │   ├── __init__.py\n│   │   ├── forms.py\n│   │   └── views.py\n│   ├── admin\n│   │   ├── __init__.py\n│   │   ├── forms.py\n│   │   └── views.py\n│   ├── assets\n│   │   ├── scripts\n│   │   │   ├── app.js\n│   │   │   └── vendor\n│   │   │       ├── jquery.min.js\n│   │   │       ├── semantic.min.js\n│   │   │       └── tablesort.min.js\n│   │   └── styles\n│   │       ├── app.scss\n│   │       └── vendor\n│   │           └── semantic.min.css\n│   ├── assets.py\n│   ├── decorators.py\n│   ├── email.py\n│   ├── main\n│   │   ├── __init__.py\n│   │   ├── errors.py\n│   │   ├── forms.py\n│   │   └── views.py\n│   ├── models.py\n│   ├── static\n│   │   ├── fonts\n│   │   │   └── vendor\n│   │   ├── images\n│   │   └── styles\n│   │       └── app.css\n│   ├── templates\n│   │   ├── account\n│   │   │   ├── email\n│   │   │   ├── login.html\n│   │   │   ├── manage.html\n│   │   │   ├── register.html\n│   │   │   ├── reset_password.html\n│   │   │   └── unconfirmed.html\n│   │   ├── admin\n│   │   │   ├── index.html\n│   │   │   ├── manage_user.html\n│   │   │   ├── new_user.html\n│   │   │   └── registered_users.html\n│   │   ├── errors\n│   │   ├── layouts\n│   │   │   └── base.html\n│   │   ├── macros\n│   │   │   ├── form_macros.html\n│   │   │   └── nav_macros.html\n│   │   ├── main\n│   │   │   └── index.html\n│   │   └── partials\n│   │       ├── _flashes.html\n│   │       └── _head.html\n│   └── utils.py\n├── config.py\n├── manage.py\n├── requirements\n│   ├── common.txt\n│   └── dev.txt\n└── tests\n    ├── test_basics.py\n    └── test_user_model.py\n```\n\n## License\n[MIT License](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhack4impact-upenn%2Fmaps4all","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhack4impact-upenn%2Fmaps4all","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhack4impact-upenn%2Fmaps4all/lists"}