Hey there! The project is very interesting! I'm looking forward to seeing how it progresses.
From what I understand, the project is about a web-based modeller where several people can collaborate, isn't it? If so, I wouldn't choose IFC.js as a starting point.
The main reason is that, as far as I know, the raison d'ĂȘtre of IFC is the communication between programs from different vendors in order to be able to use the information of one in another (for example, so that a pillar defined in Revit becomes a native pillar of a structural calculation software). Therefore, unless you want to take advantage of building models defined in other software (e.g. BlenderBIM) and their information, I think that using IFC as a format can bring you more difficulties than advantages. Note that the IFC is intended as a persistence structure, not as an efficient data structure to keep in memory in runtime.
Using something like Three.js or Babylon.js you would have it much easier using glTF objects for persisting models such as doors, windows, etc, and using JSON to serialise and reconstruct the geometry of the scenes between sessions. In my opinion, this will make your life easier, as you can create a data schema that suits your project and not worry about having to adapt your structure to the IFC schema, which is already a major effort. For example, if you decide to work in IFC and a user creates a window, when saving the scene you will have to make sure that the relative coordinate system of all the geometric entities that build that window follows is adapted to the IFC schema. On the other hand, if you use JSON, you can simply do something like:
{
"buildingName": "Building_01",
"buildingOpenings": [
{ "windowModel": "...", "openingPosition": "...", "openingSize": "..." }
]
}
Anyway, this is just my opinion, so if you decide to try IFC.js, I will help you as much as I can!