@scoova/geofences
v1.0.2
Published
Geofences client for the Scoova platform — stored named polygons + point-in-polygon checks. Use it for service-area gating, no-parking zones, depot perimeters.
Maintainers
Readme
@scoova/geofences
Standalone TypeScript client for the Scoova geofences API at
https://api.scoo-va.info/v1/geofences/*.
Stored named polygons plus point-in-polygon containment checks. Useful for service-area gating, no-parking zones, depot perimeters, school zones, congestion zones — anything where a location needs to be tested against a set of regions.
No dependencies on other @scoova/* packages.
Install
npm install @scoova/geofencesQuick start
import { GeofencesClient } from '@scoova/geofences';
const client = new GeofencesClient({
apiKey: process.env.SCOOVA_API_KEY, // optional; falls back to env then 'demo'
});
// Save a polygon
const created = await client.create({
name: 'Manhattan service area',
geometry: {
type: 'Polygon',
coordinates: [[
[-74.020, 40.700],
[-73.910, 40.700],
[-73.910, 40.880],
[-74.020, 40.880],
[-74.020, 40.700],
]],
},
});
// List everything on the account
const all = await client.list();
// Point-in-polygon
const { inside } = await client.check(40.748, -73.985);
console.log(inside.map(g => g.name)); // ['Manhattan service area']
// Delete
await client.delete(created.id);Methods
| Method | Description |
| --- | --- |
| list() | Every geofence on the account. |
| get(id) | One geofence by id, with full geometry. |
| create({ name, geometry }) | Save a new geofence. Geometry must be GeoJSON Polygon or MultiPolygon. Returns the full record. |
| delete(id) | Remove one. |
| check(lat, lon) | Returns every geofence on the account whose polygon contains the point. |
Every method accepts an optional second-argument { locale, signal } to
override the client-default locale or cancel the request.
Locale
const client = new GeofencesClient({ locale: 'fr' });Sent as ?locale=fr and Accept-Language: fr. Per-call locale overrides the
client default; missing locale falls back to en server-side.
Accepted codes: en, en-US, en-GB, en-CA, fr, es, de, it,
pt-BR, nl, plus their regional variants.
Errors
import { GeofencesClient, GeofencesError } from '@scoova/geofences';
try {
await client.get('does-not-exist');
} catch (e) {
if (e instanceof GeofencesError) {
console.log(e.statusCode); // 404
console.log(e.code); // 'NOT_FOUND'
}
}License
Apache-2.0. Copyright 2026 Scoova.
