MCPcopy Index your code
hub / github.com/a-b-street/abstreet

github.com/a-b-street/abstreet @v0.3.49

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.49 ↗ · + Follow
5,027 symbols 21,759 edges 440 files 1,115 documented · 22%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

A/B Street

DOI

Ever been stuck in traffic on a bus, wondering why is there legal street parking instead of a dedicated bus lane? A/B Street is a project to plan, simulate, and communicate visions for making cities friendlier to people walking, biking, and taking public transit. We create software to simulate traffic, edit streets and intersections, plan bike networks, create low-traffic neighborhoods, and educate the public about 15-minute neighborhoods through games. The project works anywhere in the world, thanks to OpenStreetMap.

Videos

Documentation

Project mission

We amplify the efforts of individuals and advocacy groups who campaign to transition cities away from private motor vehicles. We believe in transparent and reproducible analysis, so all of our work is open source and based on public data. We believe everybody should have a voice in shaping their city, so our software aims to be easy to use.

Why not leave city planning to professionals? People are local experts on the small slice of the city they interact with daily -- the one left turn lane that always backs up or a certain set of poorly timed walk signals. Laura Adler writes:

"Only with simple, accessible simulation programs can citizens become active generators of their own urban visions, not just passive recipients of options laid out by government officials."

Existing urban planning software is either proprietary or hard to use. A/B Street strives to be highly accessible, by being a fun, engaging game. See here for more guiding principles.

Credits

Core team:

See full credits

Contact dabreegster@gmail.com or follow @CarlinoDustin for updates.

Extension points exported contracts — how you extend this code

SimpleState (Interface)
Many states fit a pattern of managing a single panel, handling mouseover events, and other interactions on the map. Impl [27 …
widgetry/src/app_state.rs
Renderable (Interface)
Does something belong here or as a method on ID? If it ONLY applies to renderable things, then here. For example, trips [7 …
map_gui/src/render/mod.rs
GameRenderable (Interface)
Like map_gui's Renderable, but uses our ID type [5 implementers]
apps/game/src/render/mod.rs
CloneableAny (Interface)
Trick to make a cloneable Any from https://stackoverflow.com/questions/30353462/how-to-clone-a-struct-storing-a-boxed-tr [3 …
abstutil/src/clone.rs
SimCallback (Interface)
Callbacks [1 implementers]
sim/src/sim/mod.rs
ObjectID (Interface)
Objects in a `World` are uniquely identified by this caller-specified type [17 implementers]
widgetry/src/mapspace/world.rs
AppLike (Interface)
An application wishing to use the tools in this crate has to implement this on the struct that implements `widgetry::Sha [4 …
map_gui/src/lib.rs
GameplayState (Interface)
(no doc) [6 implementers]
apps/game/src/sandbox/gameplay/mod.rs

Core symbols most depended-on inside this repo

new
called by 3241
map_model/src/make/traffic_signals/mod.rs
clone
called by 945
abstutil/src/clone.rs
push
called by 859
abstutil/src/collections.rs
push
called by 740
sim/src/scheduler.rs
insert
called by 562
abstutil/src/collections.rs
as_ref
called by 373
widgetry/src/assets.rs
len
called by 355
abstutil/src/collections.rs
get_r
called by 241
map_model/src/map.rs

Shape

Method 3,235
Function 925
Class 681
Enum 155
Interface 26
Struct 5

Languages

Rust98%
TypeScript1%
Python1%
Go1%

Modules by API surface

map_model/src/map.rs106 symbols
widgetry/src/widgets/mod.rs78 symbols
sim/src/sim/queries.rs73 symbols
widgetry/src/widgets/panel.rs60 symbols
sim/src/trips.rs57 symbols
widgetry/src/widgets/button.rs56 symbols
map_model/src/objects/road.rs56 symbols
widgetry/src/text.rs54 symbols
apps/game/src/app.rs54 symbols
sim/src/lib.rs51 symbols
widgetry/src/mapspace/world.rs47 symbols
map_model/src/pathfind/v1.rs47 symbols

For agents

$ claude mcp add abstreet \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page