PDF/DXF/DWG File Parsing and Visualization

Job ID: 39368953

Budget: ₹75,000 – ₹150,000 INR

**Title**: Develop PDF/DXF/DWG File Upload, Parsing, and Canvas Visualization Module

**Project Description**:
We’re hiring a skilled freelance developer to create a specific module for a web application: uploading and parsing PDF, DXF, or DWG architectural drawings, detecting ,floors,rooms and objects (e.g., steps, tables, chairs), and visualizing them on an interactive canvas. This is a standalone task within a larger project, designed to protect intellectual property by modularizing development. Your work will integrate with our existing React.js frontend and Node.js backend, and other features will be handled by a separate team.

**Project Scope**:
Develop a module with the following features:

1. **File Upload**:
- Implement a drag-and-drop file upload interface using **react-dropzone** in a **React.js** (TypeScript) frontend.
- Accept only PDF, DXF, or DWG files; validate file types (.pdf, .dxf, .dwg); display a **shadcn/ui** toast for invalid files: “Please upload a valid architectural drawing (PDF, DXF, or DWG).”
- Store uploaded files on the server using **multer** in a **Node.js/Express** backend (/uploads folder).

2. **File Parsing & Object Detection**:
- Parse files to detect rooms and objects (steps, tables, chairs):
- For PDFs, use **pdf-lib** or **Tesseract.js** (OCR) to extract text (e.g., room labels) and lines (e.g., walls).
- For DXF/DWG, use **dxf-parser** or **Three.js** (for DWG geometry) to extract entities (rooms as polygons, objects as shapes).
- Simulate detection with mock data if parsing fails:
- Example output: `{ rooms: [{ name: "Living Room", width: 12, height: 10, x: 50, y: 50 }, { name: "Kitchen", width: 8, height: 12, x: 50, y: 200 }], objects: [{ type: "Table", x: 100, y: 100, width: 30, height: 30 }, { type: "Steps", x: 250, y: 50, width: 20, height: 40 }] }`.
- Save parsed data to a JSON file (parsedData.json).

3. **Canvas Visualization**:
- Render parsed data on a **Fabric.js** canvas in the React frontend:
- Rooms: Draggable rectangles with text labels (e.g., “Living Room: 12x10ft”).
- Objects: Shapes (e.g., table as a rectangle, steps as a polygon, chair as a smaller rectangle) with labels (e.g., “Table”).
- On load (no upload), display a demo canvas with:
- Rooms: Living Room (12x10ft, x: 50, y: 50, fill: #E5E7EB), Bedroom (10x10ft, x: 200, y: 50, fill: #D1D5DB), Kitchen (8x12ft, x: 50, y: 200, fill: #9CA3AF).
- Objects: Table (30x30px, x: 100, y: 100), Steps (20x40px, x: 250, y: 50), Chair (20x20px, x: 150, y: 150).
- Ensure objects are distinguishable (e.g., different fills or icons) and draggable within the canvas.

**Deliverables**:
- Code for the file upload, parsing, and canvas visualization module in /client (React) and /server (Node.js).
- Integration with existing UI (Tailwind CSS, shadcn/ui, blue-white theme: #1E3A8A primary, #F3F4F6 background).
- Dependencies installed: react-dropzone, Fabric.js, pdf-lib, dxf-parser, Tesseract.js (optional), pdf.js, react-toastify, shadcn/ui, multer.
- Clean, commented code emphasizing modularity (e.g., reusable parser).
- Instructions for local testing: “npm install && npm run dev” (client), “npm install && node server.js” (server).
- Optional: Suggestions for improving detection accuracy (e.g., alternative parsing libraries).

**Tech Stack**:
- **Frontend**: React.js, TypeScript, Tailwind CSS, shadcn/ui, Fabric.js, react-dropzone, react-toastify, pdf.js.
- **Backend**: Node.js, Express, multer, pdf-lib, dxf-parser, Tesseract.js (optional).
- **Storage**: JSON file (parsedData.json).

**Skills Required**:
- Strong experience with **React.js**, **TypeScript**, and **Fabric.js** for canvas visualization.
- Proficiency in **Node.js**, **Express**, and file parsing (PDF, DXF, DWG).
- Familiarity with libraries like **pdf-lib**, **dxf-parser**, or **Tesseract.js** for object detection.
- Ability to integrate with **shadcn/ui** and Tailwind CSS for a premium UI.
- Bonus: Experience with architectural drawings or image processing.

**Budget & Timeline**:
- Budget: $250–$700 USD (negotiable based on expertise).
- Timeline: 2–3 weeks for completion.
- Milestones:
- Week 1: File upload and parsing with mock data.
- Week 2: Canvas visualization with rooms and objects.
- Week 3 (if needed): Testing and integration.

**Why This Project?**:
- Contribute to a focused module for an innovative startup in India’s real estate market.
- Showcase your expertise in file parsing and canvas-based visualization.
- Work on a modular task that integrates with a larger project, minimizing IP overlap.

**How to Apply**:
- Submit a proposal with:
- Experience with React.js, Fabric.js, and file parsing (PDF/DXF/DWG).
- Examples of similar projects (e.g., canvas apps, image processing).
- Estimated timeline and budget.
- Bonus: Suggest tools or approaches for accurate room/object detection.

**Contact**: Message me via Freelancer.com to discuss details or clarify scope.

**Note**: This task is limited to file upload, parsing, and visualization. Other features (e.g., editing, AI) are handled by a separate team to protect intellectual property.

---

### Key Changes
- **Restricted Scope**: Focuses only on uploading PDF/DXF/DWG, parsing for rooms and objects (steps, tables, chairs), and visualizing on a canvas, excluding editing or other features.
- **Object Detection**: Adds detection of specific objects (steps, tables, chairs) alongside rooms, using mock data or libraries like Tesseract.js for PDFs.
- **IP Protection**: Emphasizes modularity and a narrow scope to prevent the freelancer from accessing the full app (e.g., no lighting design or AI).
- **UI Consistency**: Maintains integration with your prototype’s Tailwind CSS and shadcn/ui for a seamless look.

### Tips for Posting
- **Budget**: The $250–$700 range suits a focused task. Indian freelancers may bid lower, but prioritize those with parsing or canvas experience.
- **Screening**: Request portfolios with Fabric.js, PDF parsing, or architectural projects. Ask how they’ll handle DXF/DWG detection.
- **Milestones**: Pay after deliverables (e.g., 50% after parsing, 50% after visualization).
- **Integration**: Provide your prototype’s code structure (e.g., React components) to ensure compatibility.

### Next Steps
- **Post the Job**: Share this on Freelancer.com and review bids for relevant experience.
- **Prototype Context**: If you can share details about your Lovable.dev prototype (e.g., “File upload works, but no parsing”), I can refine future posts or prompts.
- **Other Modules**: Need a post or prompt for another task (e.g., lighting design for your team)? I’ve stored your project details for quick iteration.

Let me know if you want to adjust the budget, timeline, or add specific parsing requirements (e.g., more objects like doors) before posting! Ready to move forward, or need another focused post?

reference website
https://www.coohom.com/
Related categories: Python Data Processing OCR React.js Pytorch