Community-driven micro-improvement platform for neighborhoods. Report, track, and fix local issues with real-time updates and interactive maps.
- πΊοΈ Interactive Map - View and report issues on an interactive map with clustering
- π Geolocation - Automatically center map on your current location
- πΈ Photo Uploads - Attach photos to issue reports
- π Upvoting System - Support issues that matter to you
- π¬ Real-time Comments - Discuss issues with other community members
- π Live Updates - See new issues and updates in real-time via WebSocket
- π― Advanced Filtering - Filter by severity, status, and tags
- π Admin Dashboard - Verify, close, and manage issues
- π€ Export Data - Export issues as CSV or GeoJSON
- π± Responsive Design - Works on desktop, tablet, and mobile
- React 18 - UI library
- React Router - Navigation
- React Bootstrap - UI components
- Leaflet - Interactive maps
- Socket.io Client - Real-time communication
- Axios - HTTP client
- React Toastify - Notifications
- React Dropzone - File uploads
- date-fns - Date formatting
- Node.js 16+ and npm
- Backend server running (see backend README)
-
Navigate to frontend directory
cd frontend -
Install dependencies
npm install
-
Create environment file
cp .env.example .env
-
Configure environment variables Edit
.envfile:REACT_APP_API_URL=http://localhost:5000/api REACT_APP_SOCKET_URL=http://localhost:5000
-
Start development server
npm start
The app will open at
http://localhost:3000
npm start- Start development servernpm run build- Build for productionnpm test- Run testsnpm run eject- Eject from Create React App (irreversible)
frontend/
βββ public/
β βββ index.html # HTML template
β βββ manifest.json # PWA manifest
βββ src/
β βββ components/ # React components
β β βββ AdminPanel.js # Admin dashboard
β β βββ CommentSection.js
β β βββ FilterSidebar.js
β β βββ IssueCard.js
β β βββ IssueForm.js
β β βββ IssueList.js
β β βββ Loader.js
β β βββ MapView.js # Map component
β β βββ Navbar.js
β βββ context/
β β βββ AuthContext.js # Authentication state
β βββ pages/
β β βββ Home.js # Main map view
β β βββ IssuePage.js # Issue details
β β βββ Login.js # Auth page
β β βββ Profile.js # User profile
β βββ styles/
β β βββ main.css # Global styles
β βββ api.js # API configuration
β βββ socket.js # Socket.io setup
β βββ App.js # Main app component
β βββ index.js # Entry point
βββ package.json
βββ README.md
-
Browse Issues
- View all reported issues on the interactive map
- Click clusters to zoom in and see individual issues
- Click markers to see issue details
-
Report an Issue
- Click "Report Issue" button
- Click on the map to select location
- Fill in title, description, severity, and tags
- Upload photos (optional)
- Submit
-
Engage with Issues
- Upvote issues you care about
- Add comments and suggestions
- View issue history and updates
-
Track Your Activity
- View your reported issues in your profile
- See issues you've upvoted
- Track resolution status
-
Access Admin Dashboard
- Navigate to
/admin(link appears in navbar for admins)
- Navigate to
-
Manage Issues
- Verify legitimate issues
- Close resolved or invalid issues
- Delete spam or inappropriate content
-
Export Data
- Export issues as CSV for spreadsheet analysis
- Export as GeoJSON for GIS software
| Variable | Description | Default |
|---|---|---|
REACT_APP_API_URL |
Backend API URL | http://localhost:5000/api |
REACT_APP_SOCKET_URL |
Socket.io server URL | http://localhost:5000 |
The app uses Socket.io for real-time updates:
- New Issues - See new issues appear on the map instantly
- Upvotes - Vote counts update in real-time
- Comments - New comments appear immediately
- Status Changes - See when issues are verified or closed
Edit src/components/MapView.js:
- Change default center coordinates
- Adjust zoom levels
- Customize marker icons
Edit src/styles/main.css:
- Update color scheme (CSS variables)
- Modify spacing and layout
- Customize component styles
Edit src/components/FilterSidebar.js:
- Add or remove severity levels
- Customize available tags
- Modify status options
-
Build the app
npm run build
-
Serve static files
- The build folder contains optimized production files
- Serve with any static hosting service (Netlify, Vercel, etc.)
- Or serve from your backend server
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile browsers
- Check that Leaflet CSS is properly loaded
- Verify tile server URLs are accessible
- Check browser console for errors
- Ensure backend Socket.io server is running
- Check CORS settings on backend
- Verify Socket.io connection in browser console
- Clear localStorage and try again
- Check token expiration settings
- Verify backend auth endpoints
- Check file size limits (max 5MB)
- Verify upload endpoint configuration
- Check backend storage configuration
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - See LICENSE file for details
For issues and questions:
- Open an issue on GitHub
- Contact the development team
- Check documentation
Built with β€οΈ for better neighborhoods