LotSlope is a lightning-fast, purely client-side web application designed to help home buyers, real estate agents, and developers quickly assess the terrain of any given address.
Instead of dealing with complex GIS software or expensive topography reports, LotSlope gives you a playful, instant verdict using 100% free, public APIs. It requires zero backend and costs $0 to run.
- 📍 Instant Geocoding: Type any address, and it instantly converts it to coordinates using the Nominatim free public service.
- 🗺️ Interactive Map: Drag, drop, and click anywhere on the Leaflet map to analyze custom locations instantly via reverse-geocoding.
- ⛰️ Elevation Sampling: Automatically generates a bounding box (approximate lot size) and samples the elevation at all four corners using the Open-Elevation API.
- 🎛️ Customizable Thresholds: Adjust what you consider "flat" or "steep" (in feet) using the intuitive UI, and the results update dynamically.
- 🎨 Playful UI: Features a bright, Duolingo-inspired chunky design with satisfying interactive elements and responsive mobile layouts.
Because LotSlope has no backend, everything happens directly in the browser:
- Forward Geocoding: When you search an address, we call the
nominatim.openstreetmap.org/searchAPI to get the center[lat, lng]. - Bounding Box: We mathematically generate a bounding box around the center coordinate to approximate the lot corners (NW, NE, SW, SE).
- Elevation Query: We batch query the 4 corner coordinates against
api.open-elevation.com/api/v1/lookup. - Analysis: We convert the resulting meters to feet, calculate the maximum elevation delta (highest point minus lowest point), and run it against the user's defined thresholds to output a verdict.
To run LotSlope locally, you'll need Node.js installed on your machine.
-
Clone the repository:
git clone https://github.com/YOUR_USERNAME/lotslope.git cd lotslope -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser: Navigate to
http://localhost:5173.
LotSlope is the perfect candidate for free hosting via GitHub Pages since it requires no database or server.
- In
vite.config.ts, add thebaseproperty if deploying to a subfolder:export default defineConfig({ plugins: [react()], base: '/lotslope/', // Required if deploying to username.github.io/lotslope })
- Run the deployment script:
(Ensure you have pushed your code to GitHub first!)
npm run deploy
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please note: The public Nominatim and Open-Elevation APIs have rate limits. If you are adding features that make heavy API calls, please ensure you respect their fair usage policies by debouncing and batching requests.
Distributed under the MIT License. See LICENSE for more information.
