Spatial Furbish is a full-stack furniture e-commerce platform with an integrated 3D room planner. Users can browse and purchase furniture, visualize pieces in a customizable room layout, and manage orders — all in one place. Admins have a dedicated dashboard for managing products, categories, orders, customers, reviews, and textures.
- 3D Room Planner with furniture placement and floor/wall texture customization
- User authentication with JWT and role-based access control
- Product browsing, filtering, and detailed product views
- Shopping cart and order placement
- Real-time updates via Socket.IO
- Image uploads via Cloudinary
- Admin dashboard for full platform management
- Responsive UI with Tailwind CSS and shadcn/ui components
- Frontend: React 19, TypeScript, Vite, Tailwind CSS, Three.js / React Three Fiber
- Backend: Node.js, Express.js
- Database: MongoDB, Mongoose
- Real-time: Socket.IO
- Storage: Cloudinary
- Deployment: Docker
├── client/ # React frontend (Vite + TypeScript)
├── server/ # Express backend (Node.js)
└── README.md # Project documentation
This guide will help you set up the project locally for development.
- Node.js 18+
- MongoDB Atlas account (or local MongoDB)
- Cloudinary account
- Clone the repository:
git clone https://github.com/BrianFdo03/spatial-furbish.git - Navigate to the project directory:
cd spatial-furbish - Install dependencies for both client and server:
cd client && npm install cd ../server && npm install
Create a .env file in the server/ directory based on the following:
MONGO_URI=your_mongodb_connection_string
PORT=3000
NODE_ENV=development
JWT_SECRET=your_jwt_secret
CLIENT_URL=http://localhost:5173
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
Run the client and server in separate terminals:
# Client
cd client && npm run dev
# Server
cd server && npm run dev
Build the client and start the server:
cd client && npm run build
cd ../server && npm start
Both client and server include Dockerfiles for containerized deployment.
npm run dev: Starts the development server (client or server)npm run build: Builds the client for productionnpm start: Starts the production servernpm run lint: Runs ESLint on the client
Contributions are welcome. Please fork the repository and submit a pull request.
Follow the existing code style and ensure new features are tested before submitting.
This project is licensed under the MIT License - see the LICENSE file for details.
- Nayananayaka Ranasinghe
- Lokupulukkuttiralage Perera
- Ungamandadige Fernando
- Rathnayaka Rathnayake
For support, please open an issue in the repository.