Developing Internet of Things (IoT) applications can be a complex task for many developers, requiring knowledge of sensor hardware, deployment characteristics, network limitations, and multiple protocols. Because of this, IoT development has been largely centered around research scientists and domain experts, with only a limited number of simple applications coming from the broader community. We present a software architecture that seeks to simplify and accelerate the development of IoT applications, making them accessible to a larger community of developers. To keep the system simple yet flexible, it focuses on a limited number of abstractions, relying on the developers and administrators to enforce additional constraints where necessary. We present a model system and a prototype implementation, along with experiences developing applications.