A full-stack web application for managing zoning updates for real estate parcels. This tool demonstrates integration with real estate data to enable visualization, selection, and updating of zoning designations.
View the project repository: https://github.com/Alachan/zoning-management-app
- Interactive map display with real estate parcels
- Select single or multiple parcels (shift+click for multiple on desktop)
- Update zoning types for selected parcels
- View statistics about selected parcels:
- Total area
- Distribution by zoning type
- Before/after comparisons for updates
- Mobile-responsive design with dedicated mobile selection mode
- Full audit logging of all changes
- React 19
- Leaflet (via react-leaflet) for map display
- Recharts for data visualization
- Tailwind CSS for styling
- Axios for API communication
- Java 21
- Spring Boot 3.4.5
- JPA/Hibernate for database access
- PostgreSQL for data storage
- Java Development Kit (JDK) 21
- Node.js 18+ and npm
- PostgreSQL 12+
- Maven 3.9+
-
You need a local PostgreSQL database for the application:
- The external real estate database is already provided and configured
- The application's internal database schema will be created automatically via Spring Boot
-
You only need to update the connection details for your local PostgreSQL database in the backend configuration.
-
Clone the repository
git clone https://github.com/Alachan/zoning-management-app.git cd zoning-management-app/backend/zoning-tool -
Configure the database connection in
src/main/resources/application.properties:# Local database configuration (update with your settings) spring.datasource.jdbc-url=jdbc:postgresql://localhost:5432/your_local_db spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=org.postgresql.Driver # External Database (already configured - do not change) external.datasource.jdbc-url=jdbc:postgresql://108.61.159.122:13432/postgres external.datasource.username=real_estate external.datasource.password=ZT9b0qv6iQ external.datasource.driver-class-name=org.postgresql.Driver
-
Build and run the backend
./mvnw spring-boot:run
The backend will start on http://localhost:8080
-
Navigate to the frontend directory
cd ../../frontend -
Install dependencies
npm install
-
Configure the API endpoint in
.env(create this file if it doesn't exist)VITE_API_BASE_URL=http://localhost:8080 -
Start the development server
npm run dev
The frontend will start on http://localhost:5173
- Open the application in your browser
- The map will load with parcels color-coded by their zoning type
- Click on parcels to select them:
- On desktop: Use SHIFT+click to select multiple parcels
- On mobile: Toggle selection mode using the button in the top bar
- Choose a zoning type from the dropdown
- Click "Update Zoning" to apply the changes
- View statistics on the right sidebar (desktop) or bottom panel (mobile)
- The external database is accessible and contains the real estate parcels data in the
real_estate_zoningtable - Users have basic knowledge of zoning types and understand what they're changing
- The PostgreSQL database supports geometry/spatial data types (PostGIS extension)
- Permissions to apply zoning changes are managed outside the application (no user authentication is implemented)
- The application demonstrates how zoning data can be integrated into residential analytics platforms to support property lifecycle management, underwriting, and valuation processes
config- Database configurationcontroller- REST API endpointsdto- Data transfer objects for API communicationexception- Custom exception classesmodel- Entity classesrepository- Data access interfacesservice- Business logic
components- React componentslayout- Page layout componentsmap- Map-related componentsstats- Statistics visualizationzoning- Zoning update interface
hooks- Custom React hooksservices- API service functionsutils- Utility functions and constants
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Real estate data provided by Spatial Laser
- Map tiles from OpenStreetMap
- Icons from React Icons