Skip to content

pdx-daniel/doors

Repository files navigation

Doors

A workspace-scoped people-location mapping application. Map your people and places across mobile and web from a single codebase.

Stack

Layer Technology
API Elysia on Bun
Database PostGIS 16 (Docker)
Mobile React Native 0.80 + NativeWind
Web react-native-web via Webpack
Map MapLibre GL JS / MapLibre RN
Client SDK Eden Treaty — fully typed, auto-generated
Basemap Planetiler → PMTiles
Quality Biome (format + lint) + TypeScript

Prerequisites

  • Bun ≥ 1.2
  • Docker Desktop (for PostGIS)

Quick start

cp .env.example .env      # configure database credentials
bun install               # install all dependencies
bun run db:up             # start PostGIS
bun run db:migrate        # apply SQL migrations
bun run db:seed           # load Portland dev data

Run the API

bun run dev:server        # http://localhost:3000

Run the mobile / web app

bun run dev:mobile        # Metro bundler (for iOS/Android)
bun run dev:web           # Webpack dev server → http://localhost:3001
bun run ios               # launch iOS simulator

Basemap tiles (optional)

bun run basemap:refresh   # generate Oregon PMTiles via Planetiler Docker

Project structure

doors/
├── apps/
│   ├── server/           # Elysia API — routes, middleware, DB queries
│   └── mobile/           # React Native app (iOS/Android/Web)
├── packages/
│   └── api/              # Eden Treaty client & shared type schemas
├── data/                 # Planetiler output (gitignored)
├── docker-compose.yml    # PostGIS service
├── biome.json            # Lint + format config
└── tsconfig.base.json    # Shared TypeScript config

API routes

All data routes are versioned under /v1 and require the X-Workspace-Id header.

Method Path Description
GET /health Service health
GET /v1/locations List locations
GET /v1/people List people
GET /v1/map/people GeoJSON FeatureCollection for map viewport
GET /v1/stats/* Histogram stats (location type, etc.)

Development

bun run check             # format + lint + safe fixes
bun run typecheck         # TypeScript across all workspaces
bun run ci                # read-only Biome check (CI)

Database

  • bun run db:up / bun run db:down — start/stop PostGIS
  • bun run db:migrate — run SQL migrations
  • bun run db:seed — seed Portland sample data
  • bun run db:reseed — clear dev workspace data and reseed

The seeded workspace ID is exported as DEV_WORKSPACE_ID from @doors/api.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors