Neighborly is a hyper‑local community hub that brings neighbors together through verified residency. The platform empowers residents to share posts, lend & borrow tools, exchange services, organize & RSVP to events, and create or sign community petitions—all within a secure, address‑verified environment.
-
User Authentication & Residency Verification
Secure sign‑up and login with proof‑of‑address upload, staff review, and JWT‑backed sessions. -
Geo‑Filtered Bulletin Board
Browse and post neighborhood updates filtered by ZIP, radius, and tags. -
Tool Sharing Marketplace
List, request, lend, and return tools with real‑time status and usage history. -
Service Exchange Platform
Offer and request local services, with built‑in request & fulfillment flows. -
Community Events Calendar
Create, RSVP, modify, and cancel events. Interactive map picker for location selection. -
Petitions & Civic Engagement
Launch petitions, track signature counts, and sign/un‑sign from personal dashboards. -
Personal Dashboards
- My Creations: All posts, events, services, petitions you’ve created.
- My Activity: All posts, RSVPs, sign‑ups, and petition signatures you’ve joined.
-
Media Handling
Secure image uploads via S3 presigned URLs & CloudFront CDN for fast, reliable delivery. -
Search & Filtering
Keyword, tag, and location radii filters powered by an integrated Mapbox/Leaflet picker. -
Responsive & Accessible UI
Built with React & MUI for desktop, tablet, and mobile; WCAG‑informed components.
-
Frontend
- React 18
- Material‑UI (MUI v5)
- Redux Toolkit & Axios
- Mapbox GL JS / Leaflet for maps
- Jest + React Testing Library + (planned) Cypress
-
Backend
- Python 3.11 & Django 4
- Django REST Framework (DRF) & DRF‑Spectacular (OpenAPI)
- SimpleJWT for token auth
- PostgreSQL on AWS RDS (SQLite for local dev)
-
Media & CDN
- AWS S3 for file storage
- CloudFront for global distribution
-
Infrastructure & CI/CD
- AWS EC2 + Nginx + Gunicorn
- GitHub Actions (build, tests, migrations, deploy)
- Docker‑Compose & GitHub Codespaces for dev environments
-
Observability (Roadmap)
- AWS CloudWatch (metrics & alarms)
- k6 load‑testing scripts
- Sentry for front‑end error tracking
- Git
- Python 3.9+
- Node.js 14+ & npm
git clone https://github.com/theadityamittal/Neighborly.git
cd Neighborly-
Create & activate a Python virtual environment:
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
Install dependencies and apply migrations:
pip install -r requirements.txt python manage.py migrate
-
Create a
.envfile (see.env.example) and set:ACCESS_KEY=your_aws_access_key_here SECRET_KEY=your_aws_secret_key_here BUCKET_NAME=your_bucket_name_here REGION_NAME=your_aws_region_here MAPBOX_ACCESS_TOKEN=your_mapbox_token_here -
Load the DB with dummies
python manage.py dev_setup
-
Run the backend:
python manage.py migrate python manage.py runserver
-
Navigate to the React app:
cd react-app -
Install & configure:
npm install cp .env.example .env.local # Update REACT_APP_BACKEND_URL as needed -
Start the frontend:
npm start
-
Open your browser at http://localhost:3000.
-
Backend Unit & API Tests
python manage.py test -
Frontend Unit Tests
cd react-app npm test -- --watchAll=false
The deploy workflow in GitHub Actions builds and pushes Docker images, migrates the database, and updates the EC2 fleet via SSH/GitHub Deployments. Configuration is defined in:
.github/workflows/deploy.yml
Interactive API docs are available at:
GET /api_doc/
Powered by DRF‑Spectacular (OpenAPI / Swagger UI).
- Fork the repo and create a feature branch.
- Develop against the latest
main. - Ensure all tests pass locally.
- Submit a Pull Request with clear descriptions and linked issues.
- Maintainers will review and merge after CI checks succeed.
This project is released under the MIT License. See LICENSE for details.
With each of the user fixtures loaded from the previous step dev_setup the default password for the user account is password123 for basic resident accounts.
NGO accounts have the password 123456 for simplicity.
To make a custom admin account, use python3 manage.py createsuperuser. After you make that account, you can immediately login without verificaiton as well!
Feel to use these accounts to look at the website! Or checkout the live site here: http://3.145.158.84/