feat: complete house plan maker application

Full-featured house/apartment floor plan editor with:

- Turborepo monorepo (React/Vite client, Fastify/Prisma server, shared Zod schemas)
- 2D room editor with walls, doors, windows, furniture, electrical elements
- 3D room preview with Three.js (auto-hide nearest walls, bird's eye default)
- Wall projection views with interactive drag (elevation, position)
- Apartment floor plan view with room positioning
- Copy/paste, alignment tools, measurement tool, annotations
- Item-attached annotations with leader lines (visible on projections)
- Door open direction (LEFT/RIGHT/INWARD/OUTWARD) with swing arc
- Floor type textures (wood, tile, concrete, laminate, herringbone)
- Wall color picker for 3D view
- Furniture: bed, desk, wardrobe, sofa, table, chair, shelf, nightstand, dresser, bookcase, TV (with stand toggle), AC unit
- Furniture elevation support (wall-mounted items)
- Auto-save with dirty state tracking, batch save API
- Rotation-aware collision detection (SAT/OBB) with 3D elevation check
- Rotation-aware hit testing
- i18n (English/Russian) with locale-aware number formatting
- Dark mode with system preference detection
- Undo/redo, keyboard shortcuts, scale bar
- PDF/PNG/JSON export and JSON import
- Focus trap modal, toast notifications, tooltips
- Responsive layout with overlay palettes
This commit is contained in:
2026-04-05 22:34:03 +03:00
parent b84807bbdb
commit af8b9fe00f
188 changed files with 35795 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
/**
* Shared types and utilities for the House Plan Maker application.
*/
export interface HealthCheckResponse {
status: 'ok' | 'error';
timestamp: string;
}
// Types
export type {
Apartment,
ApartmentWithRooms,
ApartmentRoom,
CreateApartmentDto,
UpdateApartmentDto,
} from './types/apartment.js';
export type {
Point,
FloorType,
Room,
RoomFull,
CreateRoomDto,
UpdateRoomDto,
} from './types/room.js';
export { FLOOR_TYPES } from './types/room.js';
export type {
WallDirection,
Wall,
CreateWallDto,
OpeningType,
DoorOpenDirection,
WallOpening,
CreateWallOpeningDto,
UpdateWallOpeningDto,
ElectricalType,
ElectricalItem,
CreateElectricalItemDto,
UpdateElectricalItemDto,
FurnitureType,
FurnitureItem,
CreateFurnitureItemDto,
UpdateFurnitureItemDto,
Annotation,
BatchSyncOpeningsDto,
BatchSyncElectricalDto,
BatchSyncFurnitureDto,
} from './types/elements.js';
export {
WALL_DIRECTIONS,
OPENING_TYPES,
DOOR_OPEN_DIRECTIONS,
ELECTRICAL_TYPES,
FURNITURE_TYPES,
} from './types/elements.js';
export type {
ApiResponse,
ApiListResponse,
ApiErrorResponse,
} from './types/api.js';
// Zod schemas
export {
createApartmentSchema,
updateApartmentSchema,
type CreateApartmentInput,
type UpdateApartmentInput,
} from './schemas/apartment.schema.js';
export {
createRoomSchema,
updateRoomSchema,
type CreateRoomInput,
type UpdateRoomInput,
} from './schemas/room.schema.js';
export {
bulkUpdateWallsSchema,
createWallOpeningSchema,
updateWallOpeningSchema,
createElectricalItemSchema,
updateElectricalItemSchema,
createFurnitureItemSchema,
updateFurnitureItemSchema,
batchSyncOpeningsSchema,
batchSyncElectricalSchema,
batchSyncFurnitureSchema,
type BulkUpdateWallsInput,
type CreateWallOpeningInput,
type UpdateWallOpeningInput,
type CreateElectricalItemInput,
type UpdateElectricalItemInput,
type CreateFurnitureItemInput,
type UpdateFurnitureItemInput,
type BatchSyncOpeningsInput,
type BatchSyncElectricalInput,
type BatchSyncFurnitureInput,
} from './schemas/elements.schema.js';