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:
@@ -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';
|
||||
Reference in New Issue
Block a user