Currently i'm working with my own physics engine, however given the fact that the emscripten ports have gotten incredibly good, i wanted to try and incorporate Box2D into my entity system for the next project (and Bullet for future ones). Currently though, my own physics engine works on components directly, like Position (x, y), Dynamic (mass, velocity, drag) or Collidable (friction, restitution), which allows the user to pick an choose what kind of a body the entity is dynamically and fiddle with the variables directly, this isn't possible with Box2D, so i'll somehow have to create a component out of the Box2D objects.
Do you guys have any experience with this? Incorporating OOP engines like Box2D or Bullet seems daunting when i try to think about it, for example the physics component would hold the position, so my rendering system would require a physics component, which isn't desirable, since not every sprite i render is a physics object, etc. To solve issues like these, i thought about just creating a Position component and having the rendering system hold entities with a Position or Box2DBody and Sprite components, but i'm not sure if this is the most robust solution. I'd love to hear some input from people that have experience with these things.