Skip to content

built for contractors to display there work as well as allow the clients to create a demo kitchen/bathroom that will fit there needs!

License

Notifications You must be signed in to change notification settings

gudino27/489_project

Repository files navigation

489_PROJECT

last-commit repo-top-language repo-language-count

Built with the tools and technologies:

Express JSON Markdown npm .ENV
JavaScript React SQLite GNU%20Bash Docker


Table of Contents


Overview

a comprehensive digital solution that revolutionizes how your customers visualize and plan their dream kitchens and bathrooms. This custom-built platform bridges the gap between your expertise and your clients' vision, providing an intuitive design experience while streamlining your business operations.

Why 489_project?

This project aims to simplify complex design workflows and data visualization, enabling rapid development and deployment. The core features include:

  • 🧩 Modular UI Components: React-based interfaces with Tailwind CSS for consistent styling and easy customization.
  • πŸ”’ Secure User & Session Management: Handles authentication, session persistence, and role-based access control.
  • 🎨 Design Visualization & Preview: Interactive components for exploring and customizing kitchen layouts.
  • βš™οΈ Backend API Integration: Seamless data handling for user data, images, and project assets.
  • πŸ“Š Performance & Analytics Dashboards: Built-in tools for monitoring app performance and user engagement.
  • πŸš€ Scalable Architecture: Clear setup instructions and modular design for easy extension and maintenance.

For The Clients

The platform offers an intuitive, self-service design experience that empowers your customers to:

  1. Custom Room Designer
    • Design both kitchens and bathrooms
    • Drag-and-drop cabinet placement
    • Choose from preset material
    • See instant pricing as they build
    • Wall elevation views showing cabinet heights
    • Real-time design updates
    • Get detailed PDF quotes with itemized pricing
    • Include personal notes and preferences
    • Automatic submission to the team for review and contact

For The Business

Behind the scenes, you have complete control through a comprehensive admin panel:

  1. Dynamic Pricing Management

    • Update cabinet prices in real-time
    • Set material and color pricing
    • Seasonal adjustments without developer help
    • Competitive pricing strategies
  2. Portfolio Showcase

    • Upload and organize project photos
    • Categorize by room type (kitchen, bathroom, living room, bedroom,etc...)
    • Build customer confidence
  3. Customer Insights

    • Track all submitted designs
  4. Team Management

    • Add team member profiles
    • Showcase your expertise
    • Build trust with transparency
    • Manage user access and permissions

How It Works

Customer Journey

  1. Discovery - Clients browse your portfolio for inspiration
  2. Design - They create custom layouts using the intuitive demo designer
  3. Customize - Select materials, colors, and configurations
  4. Quote - Receive instant quotes
  5. Connect - Their design is sent directly to the team for review as it will also send email

Your Workflow

  1. Setup - Define your pricing and upload portfolio photos
  2. Monitor - Review incoming designs through the admin panel
  3. Follow Up - Contact interested clients with their custom designs in hand
  4. Convert - Close more sales with excited customers

Features That Drive Business

Lead Generation

  • Captures contact information with every quote request
  • helps encourage customers by budget through their design choices
  • Creates warm leads who have already invested time in planning

Competitive Advantage

  • Offer something competitors don't
  • Position the business as innovative and customer-focused
  • Reduce time spent on initial consultations
  • allow for more work driven consults

Security & Reliability

  • Secure admin authentication
  • Session management to prevent unauthorized access

Features

Component Details
βš™οΈ Architecture
  • Full-stack web app with React frontend and Node.js/Express backend
  • RESTful API design
  • Client-server separation
πŸ”© Code Quality
  • Consistent code style with ESLint and Prettier
  • Modular folder structure separating components, services, and utils
  • Use of async/await for asynchronous operations
πŸ“„ Documentation
  • Comprehensive README with setup instructions
  • Inline comments and JSDoc annotations
  • API documentation via Swagger or similar (if present)
πŸ”Œ Integrations
  • MongoDB via Mongoose for data persistence
  • JWT for authentication
  • Tailwind CSS for styling
  • Jest and React Testing Library for testing
  • Third-party APIs via nodemailer, html2canvas, jsPDF
🧩 Modularity
  • Component-based React architecture
  • Express routes and middleware separated into modules
  • Utility functions isolated in utils folder
πŸ§ͺ Testing
  • Unit tests with Jest for backend functions
  • Component tests with React Testing Library
  • API integration tests with Supertest
⚑️ Performance
  • Use of compression middleware for response optimization
  • Code splitting with React.lazy
  • Efficient image processing with Sharp
πŸ›‘οΈ Security
  • Helmet for HTTP headers security
  • express-rate-limit to prevent brute-force attacks
  • express-mongo-sanitize to prevent injection
  • dotenv for environment management
πŸ“¦ Dependencies
  • Major dependencies include React, Express, Tailwind CSS, SQLite, bcryptjs, jsonwebtoken
  • Dev dependencies include Jest, React Testing Library, nodemon

Project Structure

└── 489_project/
    β”œβ”€β”€ README.md
    β”œβ”€β”€ cabinet-photo-server
    β”‚   β”œβ”€β”€ config.js
    β”‚   β”œβ”€β”€ database
    β”‚   β”œβ”€β”€ init-database.js
    β”‚   β”œβ”€β”€ package-lock.json
    β”‚   β”œβ”€β”€ package.json
    β”‚   β”œβ”€β”€ server.js
    β”‚   └── uploads
    └── kitchen-designer
        β”œβ”€β”€ .gitignore
        β”œβ”€β”€ README.md
        β”œβ”€β”€ package-lock.json
        β”œβ”€β”€ package.json
        β”œβ”€β”€ postcss.config.js
        β”œβ”€β”€ public
        β”œβ”€β”€ src
        └── tailwind.config.js

Project Index

489_PROJECT/
__root__
β¦Ώ __root__
File Name Summary
README.md - Provides an overview of the 489 project, outlining its core purpose within the overall architecture
- It highlights how the project integrates key components to facilitate specific functionalities, ensuring clarity on its role in supporting the systems objectives
- This summary emphasizes the projects contribution to the broader codebase, guiding users on its primary use and significance.
kitchen-designer
β¦Ώ kitchen-designer
File Name Summary
README.md - Defines the core structure and setup instructions for the React-based kitchen designer application, facilitating development, testing, and deployment workflows
- Serves as the foundational entry point that integrates user interface components, enabling users to visualize and customize kitchen layouts within a modular, scalable architecture
- Ensures smooth project initialization and guides developers through build and deployment processes.
tailwind.config.js - Defines the Tailwind CSS configuration to customize the design system, including color palette and typography, ensuring consistent styling across the kitchen designer application
- It integrates project-specific themes with utility classes, supporting a cohesive visual identity and streamlined development process within the overall architecture.
postcss.config.js - Configures PostCSS to integrate Tailwind CSS and Autoprefixer, streamlining the styling workflow within the project
- It ensures consistent application of utility-first CSS and automatic vendor prefixing, supporting responsive and cross-browser compatible designs across the entire codebase
- This setup enhances maintainability and efficiency in managing styles for the kitchen designer application.
package.json - Defines the core configuration and dependencies for the kitchen designer application, establishing the projects structure, development environment, and build scripts
- It ensures consistent setup across development and production, enabling seamless execution of the React-based frontend and backend services, and supporting features like user authentication, data visualization, and PDF generation within the overall architecture.
src
β¦Ώ kitchen-designer.src
File Name Summary
setupTests.js - Enhances testing capabilities within the project by integrating custom matchers for DOM assertions, facilitating more expressive and reliable tests
- Supports the overall testing framework of the kitchen-designer application, ensuring consistent and accurate validation of user interface components during development and quality assurance processes.
sessionManager.js - Manages user sessions by handling creation, validation, and expiration through secure cookies, ensuring persistent authentication within the application
- Implements inactivity-based session timeout to enhance security and provides mechanisms for session refresh and logout callbacks
- Integrates seamlessly into the overall architecture to maintain secure, user-friendly access control across the project.
AdminPanel.js - Provides the core interface for administrative functions within the application, enabling user authentication, session management, and navigation across key management areas such as pricing, photos, employees, designs, and user roles
- Facilitates secure access control and dynamic content rendering based on user permissions, supporting efficient management of the overall kitchen design platform.
UserManagement.js - Provides comprehensive user management functionalities within the application, enabling administrators to view, create, edit, and deactivate users
- Integrates with backend APIs for user data handling and maintains a responsive interface with modals and status indicators
- Serves as a core component for managing user roles, permissions, and activity status, supporting overall security and user lifecycle workflows.
EmployeeManager.js - The EmployeeManager.js file serves as the central component for managing employee data within the kitchen designer applications architecture
- It provides functionalities to display, add, edit, delete, and reorder employee profiles, facilitating dynamic and interactive management of team members
- This component interacts with a backend API to fetch and persist employee information, ensuring data consistency across the application
- Overall, it encapsulates the user interface and logic necessary for maintaining an up-to-date and organized view of employees, supporting the broader goal of streamlined team management within the project.
DesignPreview.js - DesignPreview ComponentThe DesignPreview component serves as a central visual interface within the application, enabling users to explore and interact with different room designsβ€”specifically kitchens and bathrooms
- It dynamically displays relevant floor plans and wall views based on the selected room, providing an intuitive preview experience
- The component manages various view modes, including floor and wall perspectives, and supports fullscreen viewing for detailed inspection
- Overall, it facilitates seamless navigation and visualization of design options, integrating core design data into an accessible and interactive user interface.
desinger.js - The desinger.js file serves as the core component of the Kitchen Designer application, orchestrating the user interface and interaction flow for customizing kitchen and bathroom layouts
- It manages the applications current step (e.g., dimension input or design editing), tracks the active room being worked on, and maintains detailed state data for each rooms dimensions, elements, materials, and colors
- Additionally, it integrates functionalities such as generating PDF quotes and providing intuitive icons for actions like rotation, deletion, and pricing, thereby enabling users to efficiently design, visualize, and generate professional proposals within the overall architecture of the kitchen design platform.
index.js - Sets up the React application by rendering the main App component into the DOM, establishing the entry point for the user interface
- It integrates performance measurement tools to monitor app efficiency and ensures the application initializes within Reacts strict mode for enhanced debugging and stability, forming the foundational layer of the overall project architecture.
catergoryPhotoManager.js - The categoryPhotoManager.js component serves as a centralized interface for managing categorized photos within the kitchen designer application
- It enables users to upload, organize, and edit images across multiple room categories such as kitchen, bathroom, and living room
- By providing functionalities like reordering, editing, and deleting photos, it supports dynamic content curation that enhances the visual presentation and customization of design portfolios
- This component integrates seamlessly into the overall architecture by interacting with backend APIs for data persistence and maintaining a responsive, user-friendly experience for managing visual assets across different project categories.
PriceManagement.js - Provides an interface for managing and updating pricing data related to cabinets, materials, and colors within the kitchen design application
- Facilitates loading, editing, and saving price configurations, ensuring real-time adjustments align with backend data
- Serves as a central component for maintaining accurate cost parameters, supporting dynamic pricing strategies across the overall architecture.
reportWebVitals.js - Facilitates performance monitoring by collecting key web vitals metrics such as CLS, FID, FCP, LCP, and TTFB
- Integrates with the overall architecture to enable tracking of user experience and application responsiveness, supporting performance optimization efforts across the project
- This module ensures that performance data is captured efficiently for analysis and improvement.
DesignViewer.js - DesignViewer ComponentThe DesignViewer component serves as the central interface for managing and visualizing user-created kitchen designs within the application
- It facilitates fetching, displaying, and filtering design data from the backend API, providing users with an organized view of their designsβ€”whether all, new, or viewed
- Additionally, it maintains and presents relevant statistics, such as total designs and counts based on their viewed status
- This component integrates design previews and ensures secure data access through authentication headers, contributing to a cohesive user experience in the overall architecture of the kitchen design platform.
App.js - Defines the primary navigation structure for the kitchen design application, orchestrating routing between the main design interface, administrative management, and design preview sections
- Facilitates seamless user transitions across core functionalities, ensuring a cohesive user experience within the overall architecture.
AnalyticsDashboard.js - Provides a comprehensive analytics dashboard for monitoring key website metrics, user activity, and engagement trends
- It fetches and visualizes data such as page views, unique visitors, and activity logs, enabling users to analyze performance over customizable periods
- The component supports real-time data refreshes and displays recent activities, facilitating data-driven decision-making within the overall application architecture.
cabinet-photo-server
β¦Ώ cabinet-photo-server
File Name Summary
package.json - Provides the core server setup for the cabinet photo management application, enabling secure, scalable, and efficient handling of user authentication, image uploads, and data processing
- Integrates essential middleware and dependencies to support API endpoints, image manipulation, and security best practices, forming the backbone of the system’s architecture for managing and serving cabinet-related photos.
init-database.js - The init-database.js file establishes the foundational data layer for the cabinet photo management application
- It initializes and configures the SQLite database, creating essential tables to store photo metadata and optional category information
- This setup enables efficient organization, retrieval, and management of photo assets within the system, serving as the backbone for features related to photo storage, categorization, and display ordering across the entire codebase.
server.js - Server.jsThis file serves as the core server setup for the cabinet photo management application
- It establishes the Express.js server, configures middleware for handling CORS, JSON payloads, and file uploads, and integrates essential services such as image processing, authentication, and email notifications
- Overall, it orchestrates the backend infrastructure to support secure user interactions, photo uploads, and data management within the applications architecture.
config.js - Defines and manages core configuration settings for the cabinet photo server, including environment validation, security, database, email, file uploads, CORS, rate limiting, and logging
- Ensures necessary directories are created, facilitating a consistent and secure environment for server operation within the overall architecture.
database
β¦Ώ cabinet-photo-server.database
File Name Summary
db-helpers.js - This code file, db-helpers.js, serves as the core database interaction layer for the cabinet photo management system
- It provides streamlined functions to retrieve photo dataβ€”such as fetching all photos, individual photos by ID, and photos filtered by categoryβ€”facilitating efficient data access within the application
- By abstracting database operations, it supports the overall architectures goal of managing and serving cabinet photo assets reliably and securely, ensuring seamless integration between the applications backend and its persistent storage.

Future Enhancements

  • 3D visualization capabilities
  • Integration with supplier catalogs
  • Automated email follow-ups
  • Mobile app version

Acknowledgments

  • Credit Jaime gudino, cabinet.com, doc creattion help from gitdocify enhanced further to fit our needs, etc.

About

built for contractors to display there work as well as allow the clients to create a demo kitchen/bathroom that will fit there needs!

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •