Skip to content

LEVIII007/SaaS_Workspace

Repository files navigation

SAAS_WORKSPACE.GIT-logo

SAAS_WORKSPACE.GIT

Unite, Innovate, Elevate!

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

Built with the tools and technologies:

JavaScript HTML5 PostCSS Autoprefixer Redis YAML React
ESLint TypeScript Docker Socket.io Stripe JSON


πŸ”— Table of Contents

πŸ“ Overview

Realtime Collaborative Workspace

Tech Stack: Next.js 13, Drizzle ORM, Supabase, Tailwind, WebSockets, Redis, Docker Duration: Aug 2024 – Oct 2024

This project is a Realtime Collaborative Workspace designed to enhance team collaboration by allowing multiple users to work simultaneously. Key features include:

Real-Time Collaboration: Users can see real-time cursors, text selection, and presence indicators, significantly improving team interaction and productivity.

Enhanced Security: Implemented custom email-based two-factor authentication (2FA) and integrated payment management for secure account access.

Optimistic UI Updates: Leveraged WebSockets to deliver real-time collaboration experiences and multiple cursor visibility, ensuring a smooth user interface.

Integrated Chat: Provided a real-time chat feature for collaborators using Redis and WebSockets, facilitating seamless communication within the shared workspace.

Optimized Deployment: Dockerized the application with a multi-stage build, ensuring efficient deployment and resource management.

This project demonstrates a robust approach to building collaborative applications that prioritize user experience and security while leveraging modern web technologies.


πŸ‘Ύ Features

Feature Description
βš™οΈ Architecture The project has a modular architecture with components like email templates and configuration files for component interdependencies. It uses Next.js for server actions and Tailwind for CSS optimization.
πŸ”© Code Quality The codebase includes a range of dependencies for frontend and backend development, with configurations for tools like PostCSS and ESLint to ensure consistent code quality and styling standards.
πŸ“„ Documentation The repository contains critical files like emailTemplate.html for generating dynamic email content, aiding in user engagement. Documentation seems detailed, especially for frontend components and tool configurations.
πŸ”Œ Integrations Key integrations include Stripe, Supabase for authentication, Redis for caching, and Socket.io for real-time communication. The project also utilizes Docker for containerization and environment management.
🧩 Modularity The codebase showcases modularity through components like React hooks, navigation menus, and avatars, promoting reusability and easier maintenance of the software components.
πŸ§ͺ Testing Testing frameworks and tools are not explicitly mentioned in the repository details. Consider implementing testing strategies like Jest or React Testing Library to ensure robust code quality.
⚑️ Performance Efficiency and performance can be optimized further through tools like PostCSS for CSS optimization and code bundling. Monitoring resource usage and optimizing dependencies could enhance overall performance.
πŸ›‘οΈ Security Security measures like SSL/TLS, data encryption, and access control mechanisms should be emphasized given the sensitive nature of user data and transactions when integrating payment gateways like Stripe.
πŸ“¦ Dependencies The project relies on a wide range of dependencies for frontend and backend development, with libraries like TailwindCSS, Drizzle-ORM, and Supabase-js playing critical roles in functionality and styling.

πŸ“‚ Repository Structure

└── SaaS_Workspace.git/
    β”œβ”€β”€ Dockerfile
    β”œβ”€β”€ README.md
    β”œβ”€β”€ components.json
    β”œβ”€β”€ docker-compose.yml
    β”œβ”€β”€ drizzle.config.ts
    β”œβ”€β”€ emailTemplate.html
    β”œβ”€β”€ migrations
    β”‚   β”œβ”€β”€ 0000_huge_trauma.sql
    β”‚   β”œβ”€β”€ 0001_breezy_arclight.sql
    β”‚   β”œβ”€β”€ 0002_romantic_union_jack.sql
    β”‚   β”œβ”€β”€ 0003_safe_rattler.sql
    β”‚   β”œβ”€β”€ 0004_loving_tombstone.sql
    β”‚   β”œβ”€β”€ 0005_acoustic_reptil.sql
    β”‚   β”œβ”€β”€ meta
    β”‚   └── schema.ts
    β”œβ”€β”€ next.config.mjs
    β”œβ”€β”€ package-lock.json
    β”œβ”€β”€ package.json
    β”œβ”€β”€ postcss.config.js
    β”œβ”€β”€ public
    β”‚   β”œβ”€β”€ BannerImage.png
    β”‚   β”œβ”€β”€ appBanner.png
    β”‚   β”œβ”€β”€ avatars
    β”‚   β”œβ”€β”€ cal.png
    β”‚   β”œβ”€β”€ client1.png
    β”‚   β”œβ”€β”€ client2.png
    β”‚   β”œβ”€β”€ client3.png
    β”‚   β”œβ”€β”€ client4.png
    β”‚   β”œβ”€β”€ client5.png
    β”‚   β”œβ”€β”€ cover.png
    β”‚   β”œβ”€β”€ cypresslogo.svg
    β”‚   β”œβ”€β”€ icons
    β”‚   β”œβ”€β”€ next.svg
    β”‚   └── vercel.svg
    β”œβ”€β”€ src
    β”‚   β”œβ”€β”€ app
    β”‚   β”œβ”€β”€ components
    β”‚   β”œβ”€β”€ lib
    β”‚   β”œβ”€β”€ middleware.ts
    β”‚   └── pages
    β”œβ”€β”€ tailwind.config.js
    β”œβ”€β”€ tailwind.config.ts
    └── tsconfig.json

🧩 Modules

.
File Summary
next.config.mjs Enables server actions and specifies allowed image domains for the Next.js application in the parent repository.
postcss.config.js Optimizes CSS with Tailwind by processing Tailwind CSS plugins for styling and layout consistency across the SaaS apps frontend components.
package-lock.json The emailTemplate.html file in the SaaS_Workspace repository serves as a critical component for generating dynamic email content within the application. This file contains the HTML template used to structure and format emails sent to users, enhancing user engagement and communication within the platform. This feature is essential for providing a seamless and personalized user experience, making it a key element in the overall architecture of the SaaS_Workspace repository.
emailTemplate.html This code file, components.json, serves as a crucial configuration file within the parent repositorys architecture. It defines the various components and their interdependencies, facilitating the seamless integration and functioning of the software components within the SaaS Workspace. By outlining the structure and relationships between components, this file plays a pivotal role in orchestrating the collaboration and cohesion of different parts of the system, ensuring efficient communication and operation within the overall software environment.
tsconfig.json Defines TypeScript compiler options, aliases paths for clear module resolution, enables JSX preservation, and optimizes performance for the Next.js project within the repository.
tailwind.config.js The code file emailTemplate.html in the parent repository SaaS_Workspace is crucial for generating customizable email templates used within the application. It enables dynamic content insertion and styling to produce professional and engaging emails for various user interactions. This file plays a key role in maintaining consistent branding and communication standards across the platform, enhancing user experience and promoting better engagement.
drizzle.config.ts Defines database configuration for migration. Loads environment variables and sets up the schema path, migration output directory, driver, and database credentials using the specified URL. Logs an error if the database URL is missing.
package.json Code File SummaryThis code file drizzle.config.ts in the parent repository is crucial for configuring the frontend applications data fetching and caching mechanisms. It facilitates seamless integration with Apollo Client, ensuring efficient communication between the UI components and the GraphQL server. By defining custom cache behavior and network settings, this file optimizes data retrieval and storage processes, contributing to enhanced performance and user experience within the application.
components.json Defines component settings, styles, and aliases for the SaaS platform. Establishes Tailwind CSS configurations, component paths, and utility aliases within the project structure. Facilitates consistent UI development and component integration across the codebase.
docker-compose.yml Facilitates Docker container setup for production and development environments, defining services, ports, and environment variables. Shares the same.env file for both environments, enhancing consistency and ease of configuration management within the repositorys architecture.
tailwind.config.ts Defines Tailwind CSS configuration with content paths for dynamic styling across project components. Extends theme with radial and conic gradient background images. No plugins specified.
Dockerfile Enables multi-stage Docker builds for seamless deployment of the Next.js application. Divided into stages for dependency installation, building, and running production. Delivers an optimized, standalone container with production assets and configurations, exposing the app on port 3000 for seamless execution.
src
File Summary
middleware.ts Implements middleware to enforce authentication rules based on session status and URL paths, redirecting unauthorized users to login or signup pages.
src.lib
File Summary
types.ts Defines form schemas and server types for handling email, password, workspace creation, and banner uploads in the parent repositorys backend.
constants.ts This code file contributes to the parent repositorys architecture by providing email template functionality. It allows for the customization and rendering of email templates used within the SaaS workspace application, enhancing communication with users. The critical features include handling various email layouts and content structures to ensure clear and engaging communication.
utils.ts Enables merging CSS classes, formatting prices, fetching URLs, posting data, and converting seconds to a date. The code supports the repositorys architecture by providing essential utility functions for frontend and API interactions.
src.lib.stripe
File Summary
stripeClient.ts Enables asynchronous loading of Stripe client for secure payment processing in the SaaS_Workspace app. Utilizes loadStripe and caches client instance to enhance performance and user experience.
adminTasks.ts SummaryThis code file plays a critical role in managing the database schema migrations for the SaaS Workspace application. It contains SQL scripts for various migration steps and a TypeScript file for schema definition. By executing these migrations, the code ensures that the database structure aligns with the applications evolving needs. This vital process enables seamless updates and enhancements to the system's data model, supporting the overall functionality and scalability of the SaaS Workspace platform.
index.ts Creates a centralized Stripe instance with specified API version and app details for seamless payment integration across the SaaS workspace.
src.lib.hooks
File Summary
useSupabaseRealtime.tsx The useSupabaseRealtime.tsx file in the src/lib/hooks directory of the repository facilitates real-time data synchronization with the Supabase backend. This functionality enhances the responsiveness and interactivity of the application by updating data in real-time without manual refreshes or polling. The file leverages the createClientComponentClient function from the codebase to establish a seamless connection to Supabases real-time database, ensuring timely updates to the user interface.
src.lib.providers
File Summary
next-theme-provider.tsx Enables theme management in Next.js app via NextThemesProvider. Integrates theme-related functionalities seamlessly with children components, enhancing user experience.
socket-provider.tsx Enables real-time communication via Socket.IO client setup for seamless integration with React components. Manages socket connection status and event handling for enhanced user experience within the SaaS application workspace.
state-provider.tsx The state-provider.tsx file in the src/lib/providers directory serves as a crucial component responsible for managing the client-side state within the application. Through the useClient hook, this code file encapsulates the logic and functionality required for handling state management operations, enabling seamless interaction and communication between various components of the application. This centralized state provider plays a pivotal role in ensuring efficient state handling and propagation throughout the frontend of the project.
supabase-user-provider.tsx Enables user authentication and subscription status retrieval using the Supabase service. Utilizes React context to provide user and subscription data throughout the application. Promotes seamless integration of user-related functionalities within the repositorys frontend architecture.
subscription-modal-provider.tsx Enables subscription modal control and presentation using React context for seamless integration with user subscription status and product details.
src.lib.supabase
File Summary
supabase.types.ts This code file in src/lib/supabase/supabase.types.ts is responsible for importing the InferSelectModel from the drizzle-orm library. This import likely plays a crucial role in defining and handling the selection models within the Supabase integration, contributing to the overall data modeling and retrieval operations in the repositorys architecture.
queries.ts The code file contributes to the parent repository by implementing a scalable and efficient email template system. It allows for easy customization of email content while maintaining consistency in design. This feature is essential for enhancing communication with users and clients through automated emails.
schema.ts This code file plays a crucial role in managing database migrations within the SaaS_Workspace.git repository. It ensures that the database structure stays up-to-date with the applications evolving needs by applying sequential migration scripts. This process is essential for preserving data integrity and supporting new features without causing disruptions. The structured approach to handling migrations in this file aligns with the repositorys architecture, promoting a robust and scalable database management strategy.
db.ts Loads environment variables, connects to a PostgreSQL client, and initializes the drizzle ORM with schema in the SaaS Workspace repository, ensuring smooth database setup.
src.lib.server-actions
File Summary
auth-actions.ts Enables user authentication actions like login and signup using Supabase. Integrates with the server to handle user credentials securely, preventing duplicate sign-ups. Supports user authentication workflows seamlessly within the parent repositorys architecture.
src.components.landing-page
File Summary
custom-card.tsx Defines a custom card component for the landing page, enhancing visual appeal and user experience by structuring content with header, body, and footer sections.
title-section.tsx Creates a dynamic title section with a pill element for React components in the landing page, allowing customization of the main title, subheading, and pill content. This component enhances visual appeal and content presentation within the SaaS_Workspace application.
header.tsx The header.tsx file in the src/components/landing-page directory of the repository plays a crucial role in the frontend architecture. It defines the structure and behavior of the header component for the landing page of the SaaS application. This component likely includes branding elements, navigation links, and potentially interactive features to enhance user experience. By utilizing the useClient hook and integrating an image component from Next.js, it contributes to creating a visually appealing and functional header section for the application.
src.components.banner-upload
File Summary
banner-upload-form.tsx SummaryThis code file plays a critical role in the SaaS Workspace repository by defining the projects essential components and configurations. It contributes to the overall architecture by orchestrating the setup of the project's backbone, ensuring seamless integration of various modules, and encapsulating crucial project settings.
banner-upload.tsx Enables uploading banners for workspaces or files via a dialog trigger component. Facilitates seamless integration with state providers and Supabase types within the repositorys architecture.
src.components.quill-editor
File Summary
quill-editor.tsx The emailTemplate.html file in the SaaS_Workspace repository serves as a critical component for generating and formatting email templates within the projects architecture. This file enables the customization and styling of emails sent by the SaaS platform, enhancing user communication and experience.
src.components.settings
File Summary
settings.tsx Enables users to manage settings through a visual dialog trigger in the application. Integrates a SettingsForm component to provide a seamless user experience for configuring preferences.
settings-form.tsx The settings-form.tsx file in the src/components/settings directory is a key component in the SaaS Workspace repository. It encapsulates the functionality for managing client settings within the application. By leveraging the use client' hook, this code file enables users to efficiently modify and save their individual preferences within the SaaS platform. Overall, this piece of code plays a crucial role in enhancing user experience and customization capabilities in the SaaS Workspace project.
src.components.trash
File Summary
trash-restore.tsx This code file plays a crucial role in managing the backend data schema for the SaaS workspace application. It defines database migrations, ensuring smooth transitions and updates to the data structure as the application evolves. This critical component supports the overall architecture by maintaining data integrity and facilitating seamless database changes in alignment with the applications growth and feature enhancements.
trash.tsx Enables users to access a Trash feature with a dialog UI for restoring items. Integrates a CustomDialogTrigger component and TrashRestore functionality. Enhances user experience within the parent repositorys frontend architecture.
src.components.dashboard-setup
File Summary
dashboard-setup.tsx SummaryThis code file, dashboard-setup.tsx, facilitates the setup and configuration of the dashboard within the SaaS workspace application. It provides essential functionality for users to customize and personalize their dashboard settings efficiently. By leveraging this component, users can tailor their workspace environment to suit their specific needs, enhancing their overall experience and productivity within the application.
src.components.chat-support
File Summary
chat-support.tsx This code file within the parent repository is essential for configuring email templates used in the SaaS Workspace application. It plays a vital role in defining the visual and messaging aspects of emails sent out by the platform. By managing the content and layout of these email templates, this code file helps maintain a consistent and professional communication standard with users.
src.components.global
File Summary
logout-button.tsx Enables user logout handling with Supabase authentication in React. Uses Next.js navigation and global state management. Dispatches workspace data reset upon logout.
Loader.tsx This code file serves the vital function of defining the database migrations for the parent repositorys architecture, ensuring seamless evolution of data schemas. It plays a crucial role in managing the structure and integrity of the database as the system grows and changes over time. Through specifying incremental changes to the database schema, this file enables the smooth transition between different versions of the database, maintaining data consistency and reliability across the SaaS workspace application.
tooltip-component.tsx Enables tooltip functionality in UI components using React, offering a seamless way for users to view additional contextual information. Enhances user experience by providing informative pop-up messages triggered by specific actions on the interface.
custom-dialog-trigger.tsx Enables creating customizable dialog triggers with dynamic content, headers, and descriptions. Integrates seamlessly into the UI dialog component for a sleek user experience within the parent repositorys architecture.
subscription-modal.tsx Repository StructureThe glo component in the src/components directory plays a crucial role in the parent repositorys architecture. It serves as a central hub for global styles and layout components, ensuring consistency and coherence across various parts of the application. The glo component encapsulates design principles and standardizes UI elements, fostering a unified and cohesive user experience. This foundational component significantly contributes to the overall aesthetic and usability of the application by establishing design guidelines and facilitating seamless integration of design elements throughout the project.
emoji-picker.tsx Enables dynamic emoji selection within popover UI for React components, facilitating emoji interaction and communication in the application.
workspace-creator.tsx The workspace-creator.tsx component within the global directory is pivotal in managing user clients and authentication within the workplace creation process. This component leverages the useSupabaseUser hook to streamline user authentication functionality, ensuring a seamless and secure experience for users interacting with the workspace creation feature. This crucial piece plays a key role in the overall architecture by facilitating user management operations in the context of workspace creation.
mode-toggle.tsx Enables theme switching with icons, using Next.js and Lucide React libraries. It integrates smoothly with the parent repositorys structure, enhancing user experience in toggling between light and dark modes.
collaborator-search.tsx The emailTemplate.html file in the SaaS_Workspace repository provides a standardized template for email communication within the project. This file ensures consistent branding and styling across all email notifications sent by the system. Its presence helps maintain a professional and cohesive user experience throughout the platforms email interactions.
src.components.sidebar
File Summary
mobile-sidebar.tsx Enables dynamic mobile navigation with custom icons. Toggles between sidebar and pages display on click. Maintains selected navigation state for seamless user experience.
folders-dropdown-list.tsx The code file in this repository plays a crucial role in managing email templates for a SaaS application. It ensures the seamless integration of customizable email content for various user interactions within the platform. By centralizing email template handling, this code enhances the user experience by delivering consistent and engaging communication.
selected-workspace.tsx Generates dynamic workspace links with logos for a SaaS dashboard. Handles logo retrieval and click actions, enhancing user experience in navigating different workspaces within the application.
sidebar.tsx This code file plays a crucial role in managing database migrations within the SaaS_Workspace.git repository. It ensures that the database schema stays up-to-date with the evolving needs of the application. By organizing and executing migration scripts, it helps in maintaining data integrity and consistency across different versions of the software.
plan-usage.tsx Implements dynamic plan usage display based on folder count and subscription status. Calculates and visualizes usage percentage for the free plan, updating in real-time.
native-navigation.tsx Implements sidebar Native Navigation with Home, Settings, and Trash links using React components. Enhances user experience by enabling quick access to workspace-related functionalities within the SaaS application.
user-card.tsx This code file plays a crucial role in managing the repositorys database migrations. It ensures smooth transitions and updates to the database schema as the project evolves. By organizing and executing database migration scripts, it helps maintain data integrity and consistency across different versions of the application. This file serves as a key component in the overall architecture of the repository, contributing to the projects scalability and robustness.
Dropdown.tsx EmailTemplate.htmlThe EmailTemplate.htmlfile in theSaaS_Workspace.git` repository serves as a critical component for generating email content within the application. This HTML file contains the structure and design elements necessary to create visually appealing and informative emails that are sent to users. By leveraging this template, the application can maintain a cohesive and professional communication channel with its users, enhancing the overall user experience and brand image.
workspace-dropdown.tsx Code SummaryThe workspace-dropdown.tsx file in the src/components/sidebar/ directory enhances the user experience in the workspace sidebar of the app. By leveraging the useAppState hook from the state-provider, it dynamically updates the workspace based on client interactions. This component contributes to the overall functionality of the workspace interface, ensuring a seamless and responsive navigation experience for users.
src.components.icons
File Summary
cypressDiamongIcon.tsx Illustrates a React component rendering a custom SVG icon, enhancing UI with Cypress branding. The icons design and coloring align well with the repositorys frontend components, contributing to a cohesive user interface experience.
cypressMessageIcon.tsx Contribute a React component for displaying a customized message icon with dynamic styling based on user interactions.
cypressTemplatesIcon.tsx This code file, drizzle.config.ts, plays a crucial role in configuring the build process for the SaaS_Workspace repository. It defines settings and options for the Drizzle framework, which enhances the development experience by providing features like hot module replacement and optimized production builds. By customizing these configurations in drizzle.config.ts, the repository ensures efficient development workflows and streamlined deployment processes for the entire project.
cypressHomeIcon.tsx Generates a Cypress home icon component in React with customizable fill colors for dark and light themes. It encapsulates an SVG icon, enhancing the visual appeal of the platforms user interface components.
cypressPageIcon.tsx This code file, drizzle.config.ts, plays a crucial role in configuring and managing the deployment of components within the SaaS_Workspace.git repository. It facilitates the seamless integration of various components, ensuring smooth interactions and functionality across the software ecosystem. By defining essential settings and connections, this file enables effective communication and collaboration between different parts of the system, enhancing the overall performance and user experience of the SaaS platform.
cypressTrashIcon.tsx This code file serves the critical function of managing database migrations within the SaaS_Workspace repository. By organizing and executing a sequence of migration scripts, it ensures the seamless evolution of the database schema as the application grows and changes over time. This crucial aspect of the architecture facilitates maintaining data integrity and supporting new features without disrupting the existing system operations.
cypressSettingsIcon.tsx This code file, components.json, serves as a crucial configuration file within the SaaS_Workspace.git repository. It defines the various components, services, and modules that comprise the architecture of the SaaS workspace. By outlining the structure and dependencies of these elements, components.json plays a key role in orchestrating the seamless integration and function of the different parts within the repository.
cypressProfileIcon.tsx Defines a Cypress profile icon component for the SaaS Workspace app, employing React to render an SVG with a circle and path. The icon styling changes on hover, enhancing user interaction within the application.
cypressMarketIcon.tsx This code file contributes to handling the email templating functionality within the SaaS_Workspace.git repository. It plays a crucial role in managing the generation and styling of emails sent from the system. The file likely contains HTML markup and possibly some dynamic content placeholders to personalize email messages. This feature is essential for maintaining effective communication with users and stakeholders of the SaaS application.
src.components.ui
File Summary
toaster.tsx Implements a UI toaster component for displaying toast notifications. Uses the ToastProvider to render toasts with titles, descriptions, and optional actions. Integrates with useToast hook to manage toast state and display.
accordion.tsx Improve user interface interaction by enhancing accordion functionality for collapsible sections. Dynamically control content visibility with toggles and animations within the React component.
alert-dialog.tsx This code file plays a crucial role in the SaaS workspace repository by managing the middleware for the application. It defines how incoming requests are processed and prepared before reaching the main application logic. This helps ensure a streamlined flow of data and enhances security by implementing necessary checks and validations.
sheet.tsx This code file in the parent repository primarily handles the email templates used in the SaaS application. It plays a crucial role in generating visually appealing and informative emails for various communication purposes within the application. The file contributes to enhancing user engagement and overall user experience by ensuring that the emails sent from the platform are well-designed and effectively convey important information.
progress.tsx Implements a UI Progress component with dynamic value rendering using Radix UI.
badge.tsx Implements a dynamic badge component for UI elements in the repository. Utilizes variant styles like primary, secondary, destructive, and outline. Abstraction allows flexibility in rendering different badge types based on props.
label.tsx Defines label variants for UI elements using Radix UI, enhancing accessibility and design consistency in the web application.
scroll-area.tsx Enables interactive scrolling functionality. Connects React components to provide smooth scrolling with customizable bars. Enhances user experience in a visually appealing manner within the projects UI component structure.
input.tsx Defines reusable Input component for forms, enhancing user experience with customizable styling and accessibility attributes in a React-based UI.
textarea.tsx Enables creation of customizable text areas for React components, ensuring consistent styling and functionality across the application.
toast.tsx This code file plays a crucial role in managing the middleware layer of the application within the parent repositorys architecture. It handles key functionalities related to processing and routing incoming requests, ensuring efficient communication between different components of the system. By orchestrating middleware operations, this code file contributes significantly to the overall performance and functionality of the application.
separator.tsx Defines a custom Separator component for UI rendering. Integrates Radix UI library for styling and orientation options. Enhances visual separation in the user interface with customizable decoration settings.
popover.tsx Enables interactive popovers in the UI by controlling trigger behavior and content display. Implements styling and animations for a visually engaging user experience within the SaaS_Workspace repositorys frontend architecture.
form.tsx The emailTemplate.html file in the repository provides the HTML template for email content. This file is crucial for generating visually appealing and structured emails to be sent out by the SaaS application. It plays a significant role in enhancing user engagement and communication efficiency within the platform.
select.tsx The emailTemplate.html file in this repository contains the HTML template used for rendering email content. This file plays a crucial role in defining the visual structure and styling of the emails sent out by the SaaS application. By encapsulating the email design within this template, it ensures consistency in branding and user experience across all communication channels. This fosters a professional and cohesive appearance for email notifications, enhancing the overall user engagement and reinforcing the brand identity of the platform.
button.tsx The code file in this repository plays a crucial role in managing and orchestrating the software components required for a SaaS application. It leverages a configuration file to define the components and dependencies within the system. This file serves as a high-level blueprint for the applications architecture and guides the deployment process using Docker containers. By encapsulating these details, it enhances the scalability and maintainability of the overall system.
dialog.tsx This code file plays a crucial role in managing and orchestrating various components within the SaaS_Workspace repository. It contributes to the overall architecture by defining essential configurations and settings, ensuring smooth integration and operation of the software components. The file helps streamline the functionality and behavior of the application, enhancing its performance and usability within the repository environment.
alert.tsx Implements Alert UI components with variant styling for dynamic alerts in the React-based application. Exports Alert, AlertTitle, and AlertDescription components for displaying customizable alert messages with different visual styles based on the variant type.
navigation-menu.tsx EmailTemplate.htmlThe emailTemplate.html` file in the repository serves as a critical component for managing email templates within the SaaS Workspace project. This file encapsulates the design and content structure required for various automated email communications sent to users. It plays a key role in ensuring consistent branding and messaging across all email interactions, enhancing user engagement and communication effectiveness in the platform.
use-toast.ts This code file plays a crucial role in managing database migrations within the SaaS_Workspace.git repository. It facilitates the seamless evolution of the database schema over time by organizing and executing SQL scripts for each migration step. This ensures that the database structure stays in sync with the applications evolving requirements, enabling efficient data management and enhancing overall system robustness and scalability.
avatar.tsx Enables rendering avatars with customizable styles and fallback options for the UI components library in the repository.
tooltip.tsx Implements tooltips using Radix UI in the UI components section. Provides Tooltip, TooltipTrigger, TooltipContent, and TooltipProvider for popovers with various animations and styles.
card.tsx Defines reusable UI components for cards with header, title, description, content, and footer sections. Optimized for React apps.
src.components.ui.chat
File Summary
message-loading.tsx Generates a loading animation component for chat messages with animated circles moving vertically, providing visual feedback and enhancing user experience within the messaging feature of the application.
chat-input.tsx Enables text input with customized styling and functionality for chat messages within the UI component hierarchy, enhancing user interaction in the SaaS workspace application.
chat-bubble.tsx The code file in this repository plays a key role in orchestrating the communication between various components within the SaaS Workspace project. It facilitates seamless integration of features and functionalities by defining clear interfaces and standardizing data flows. This code helps ensure a cohesive architecture and efficient collaboration among different modules, enhancing the overall performance and maintainability of the system.
expandable-chat.tsx Src/components/Header.tsxSummary:The Header` component in this code file plays a critical role in the parent repositorys frontend architecture by providing the top-level navigation and branding for the application. It ensures a consistent and user-friendly interface by prominently displaying essential features and branding elements across various pages. This component enhances the overall user experience by allowing seamless navigation and clear identification of the application's identity and purpose.
chat-message-list.tsx Enables rendering of chat message lists in the SaaS Workspace app. Styled and scrollable, it organizes messages vertically. Integrated with React for flexible user interface development.
src.pages.api.socket
File Summary
io.ts Implements real-time communication using Socket.IO server for API endpoint, establishing connections, creating/joining rooms, exchanging changes, and emitting events. Handles initialization and reuse of the server instance efficiently within the SaaS workspace repository.
src.app
File Summary
layout.tsx Defines the main layout structure and global styles for the web app. Integrates theme provider, user authentication, real-time socket communication, and toast notifications. Facilitates a consistent UI experience across pages.
globals.css This code file plays a crucial role in the SaaS_Workspace repository by defining the configuration for component dependencies and settings. It ensures seamless integration and communication between various software components within the repositorys architecture, ultimately enhancing the modularity and scalability of the system.
src.app.(auth)
File Summary
template.tsx Defines a reusable React template component for rendering children within a fixed screen-height container with centered content, aiding in consistent layout design across the applications authentication pages.
src.app.(auth).login
File Summary
page.tsx The code in src/app/auth manages user authentication within the SaaS Workspace repository. It provides critical features for securing user access to the application and ensuring proper authorization throughout the system.
src.app.(auth).signup
File Summary
page.tsx This code file in the src/app/auth/signup/page.tsx directory of the repository allows users to sign up for the platform. It features a client interface that enables smooth interaction with the signup process. The main purpose of this code is to provide a user-friendly signup page that integrates seamlessly with the authentication system of the application, enhancing the user experience.
src.app.(site)
File Summary
layout.tsx Enables rendering a consistent layout in the (site) app by incorporating a Header component atop the main content. Simplifies maintenance and enhances user experience by ensuring a standardized visual structure across pages.
page.tsx Src/app/(site)/page.tsxSummaryThis file defines the structure and layout of a specific page within the (site) section of the application. It imports a reusableTitleSectioncomponent for the landing page and utilizes a customButton` component from the UI library. The code focuses on creating an engaging and interactive user interface for this particular page, enhancing the overall user experience within the designated section of the application.
src.app.(main).dashboard
File Summary
layout.tsx Enables rendering of main dashboard layout, fetching active products with prices, and providing subscription modal context. Enhances user experience by incorporating chat support feature.
page.tsx Enables server-side rendering of the dashboard page, authenticating the user and retrieving relevant data from the database. Handles workspace ownership, user subscription status, and redirects based on the workspace ID.
src.app.(main).dashboard.[workspaceId]
File Summary
layout.tsx Enables seamless user experience by displaying the main dashboard layout with interactive sidebars and chat support, optimizing screen space for a dynamic workspace.
page.tsx Enables dynamic rendering of workspace details. Retrieves data and handles redirects if errors occur or no data is found. Utilizes QuillEditor component to display workspace content based on workspaceId provided in the URL.
src.app.(main).dashboard.[workspaceId].[folderId]
File Summary
page.tsx Enables rendering of dynamic folder content from a workspace in the dashboard. Displays folder details using a Quill editor component. Handles redirection in case of errors or missing data.
src.app.(main).dashboard.[workspaceId].[folderId].[fileId]
File Summary
page.tsx Empowers dynamic file viewing within the dashboard based on unique file IDs. Retrieves file details, redirects if errors, and renders a Quill editor component for rich text editing. Enhances user experience through seamless file navigation and editing capabilities.
src.app.api.create-checkout-session
File Summary
route.ts Implements checkout session creation with Stripe integration and user authentication using Supabase. Handles customer creation, subscription setup, and error handling. Key features include session configuration and redirection URLs for successful and canceled transactions.
src.app.api.auth.callback
File Summary
route.ts Handles OAuth callback requests, exchanges code for session on successful auth, and redirects to dashboard. Leverages Supabases auth helpers for Next.js, enhancing user authentication within the repositorys architecture.
src.app.api.create-portal-link
File Summary
route.ts Generates billing portal link for authenticated user using Supabase and Stripe integration, ensuring seamless navigation between platforms within the SaaS Workspace repository.
src.app.api.webhook
File Summary
route.ts The code file in src/app plays a vital role in the parent repositorys architecture by defining the main application logic and user interface components. It orchestrates various functionalities and components to create a seamless user experience for the SaaS platform. This code file encapsulates the core features of the application, ensuring smooth interaction and effective workflow for end-users.
migrations
File Summary
0002_romantic_union_jack.sql Defines database schema relationships for workspace collaborators linking to users and workspaces. Handles foreign key constraints to ensure data integrity during operations.
0000_huge_trauma.sql Defines database schema for files, folders, and workspaces. Establishes relationships and constraints to ensure data integrity. Essential for organizing and managing content within the SaaS platform.
schema.ts This code file in the SaaS_Workspace repository plays a crucial role in managing database migrations. It organizes a series of SQL scripts that evolve the database schema over time, ensuring seamless updates and data consistency across the application. These migrations are essential for maintaining the integrity and structure of the database as the software evolves.
0004_loving_tombstone.sql Defines table schema and alters foreign key constraints to ensure data integrity for workspaces, collaborators, files, and folders in the repository database.
0003_safe_rattler.sql Implements a critical database alteration by adding a unique identifier to the collaborators table. Essential for maintaining data integrity and enabling efficient querying within the system's architecture.
0001_breezy_arclight.sql Defines subscription table structure with foreign key constraint, ensuring data consistency for user subscriptions.
0005_acoustic_reptil.sql Tables for chats and messages with respective foreign key constraints. Ensures data integrity and relationships between workspaces, chats, and users are maintained in the SaaS workspace architecture.
migrations.meta
File Summary
0001_snapshot.json Code File SummaryThis code file, drizzle.config.ts, plays a crucial role in configuring the build settings for the front-end application of the repository. It defines various parameters and options that impact the deployment and optimization of the user interface components. By customizing these configurations, the code aims to streamline the development process and enhance the performance of the web application.
0005_snapshot.json This code file plays a crucial role in managing email templates within the SaaS_Workspace.git repository. It contributes to the architecture by facilitating the customization and rendering of dynamic email content for various functionalities within the system. The file ensures that emails sent from the platform are visually appealing and effectively communicate with users.
0002_snapshot.json Code SummaryThis code file serves as a crucial configuration file within the repositorys architecture, defining the settings and behavior for the frontend application. It plays a key role in orchestrating the integration of various components, ensuring seamless communication and functionality across the system. By centralizing these configurations, it streamlines the development process and enhances the overall user experience. Its meticulous design and implementation reflect the commitment to building a robust and scalable software solution.
0000_snapshot.json EmailTemplate.htmlThe emailTemplate.html` file in the repository serves as a critical component for defining the layout and design of email templates used within the SaaS workspace application. It encapsulates the visual structure and content presentation specifically tailored for email communications sent from the platform. By incorporating standardized design elements and dynamic content placeholders, this file streamlines the process of crafting consistent and professional email messages, enhancing the overall user experience and branding coherence.
0003_snapshot.json This code file in the parent repository plays a critical role in defining the email template used within the SaaS application. It ensures a consistent and professional layout for all outgoing emails, contributing to a cohesive user experience. This template is essential for conveying important information to users effectively and maintaining brand identity. Its structure and design align with the overall visual theme of the application, enhancing communication and engagement with users.
_journal.json Tracks version history and metadata for schema migrations in PostgreSQL.-Records timestamps and tags for each migration entry.-Supports breakpoints to allow for easy debugging and maintenance.
0004_snapshot.json This code file enhances the SaaS workspace repository by managing and executing database migrations. It ensures seamless transitions and updates to the database schema, enabling smooth evolution of the systems data structure over time. The migrations directory within the repository houses individual SQL scripts for each migration, ensuring precise control and versioning of the database schema changes. This critical feature maintains data integrity and consistency throughout the softwares lifecycle.

πŸš€ Getting Started

πŸ”– Prerequisites

TypeScript: version x.y.z

πŸ“¦ Installation

Build the project from source:

  1. Clone the SaaS_Workspace.git repository:
❯ git clone https://github.com/LEVIII007/SaaS_Workspace.git
  1. Navigate to the project directory:
❯ cd SaaS_Workspace.git
  1. Install the required dependencies:
❯ npm install

πŸ€– Usage

To run the project, execute the following command:

❯ npm run build && node dist/main.js

πŸ§ͺ Tests

Execute the test suite using the following command:

❯ npm test

πŸ“Œ Project Roadmap

  • Task 1: Implement feature one.
  • Task 2: Implement feature two.
  • Task 3: Implement feature three.

🀝 Contributing

Contributions are welcome! Here are several ways you can contribute:

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/LEVIII007/SaaS_Workspace.git
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


πŸŽ— License

This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.


πŸ™Œ Acknowledgments

  • List any resources, contributors, inspiration, etc. here.