# Introduction
Opaque JS is designed to serve as a client-side ORM for different kinds of APIs.
Opaque JS provides a beautiful, simple interface for working with your resourceful APIs. Each resource has a corresponding "Model" which is used to interact with that API-endpoint. Models allow you to query for data in your APIs, as well as creating, updating or deleting data in your API-endpoint.
No matter if you use a REST API, a Websocket connection or if your endpoint even has realtime functionality with Socket.IO. Opaque JS can serve as an ORM with support for all these technologies. And if your specific kind of endpoint is not supported, you can easily extend Opaque JS to fit your needs.