Skip to content

BlaiseTAPPA/roomify

Repository files navigation

Roomify

An AI-first design environment that transforms 2D floor plans into photorealistic 3D architectural renders instantly.

Roomify eliminates the need for complex, manual 3D modeling by leveraging generative AI. Designed for architects, interior designers, real estate agents, and hobbyists, it provides a seamless drag-and-drop interface to rapidly prototype and visualize spaces.


Features

  • Instant 3D Rendering: Upload a 2D floor plan and get a highly detailed, top-down 3D render generated by Gemini 2.5 Flash.
  • Zero-Config Backend: Powered entirely by Puter.js, handling authentication, key-value storage, and static file hosting seamlessly.
  • Drag & Drop Uploads: A smooth, intuitive file upload experience with simulated progress feedback for excellent UX.
  • Modern Full-Stack Architecture: Built on the newly released React Router v7 (absorbing Remix capabilities) for optimized client and server-side routing.
  • Beautiful, Utility-First UI: Styled with Tailwind CSS v4 and Lucide React icons for a clean, professional aesthetic.

Technology Stack


Project Structure

roomify/
├── app/                  # Application core
│   ├── root.tsx          # Root layout and global Puter auth provider
│   ├── routes.ts         # Centralized routing configuration
│   ├── app.css           # Global Tailwind v4 theme CSS variables
│   └── routes/           # Page components (home.tsx, visualizer.$id.tsx)
├── components/           # Reusable UI components
│   ├── ui/               # Base UI elements (Button, etc.)
│   ├── Navbar.tsx        # Global navigation and auth controls
│   └── Upload.tsx        # Drag-and-drop file uploader with progress animation
├── lib/                  # Business logic and external service integrations
│   ├── ai.actions.ts     # Interface with Puter AI for image generation
│   ├── puter.action.ts   # Puter Auth and KV database wrappers
│   ├── puter.hosting.ts  # Puter FS operations for dynamic static hosting
│   └── constants.ts      # Shared constants and core AI prompting logic
└── public/               # Static assets

Getting Started

Because Roomify uses Puter.js as a Serverless Backend, there is no need to configure a database, set up an auth provider, or manage API keys. Puter handles this contextually in the browser.

Prerequisites

  • Node.js (v18 or higher recommended)
  • npm or yarn

Installation

  1. Clone the repository:

    git clone [https://github.com/BlaiseTAPPA/roomify.git](https://github.com/BlaiseTAPPA/roomify.git)
    cd roomify
  2. Install dependencies:

    npm install
  3. Start the development server:

    npm run dev
  4. Open the app: Navigate to http://localhost:5173 in your browser.


Docker Deployment

Roomify includes a multi-stage Dockerfile optimized for minimal production builds.

# Build the Docker image
docker build -t roomify .

# Run the container
docker run -p 3000:3000 roomify

How It Works

  1. Authentication: Users sign in seamlessly via the Puter.js overlay.
  2. Upload: A 2D floor plan (.png or .jpg) is dropped into the uploader.
  3. Hosting & State: The file is converted to a Base64 string, dynamically hosted on a newly provisioned Puter subdomain, and the user is routed to the visualizer.
  4. AI Generation: The visualizer passes the hosted image and a strict architectural prompt to Puter's AI service, querying the Gemini 2.5 model.
  5. Result: The UI updates with the generated 3D render, allowing the user to view their visualized space.

Contributing

Contributions are welcome! If you'd like to improve Roomify, please feel free to fork the repository, create a feature branch, and submit a Pull Request.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

About

An AI-powered design tool that instantly transforms 2D floor plans into photorealistic 3D architectural renders using React Router v7, Puter.js, and Gemini 2.5 Flash.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors