Skip to content

Conversation

@embire2
Copy link

@embire2 embire2 commented Aug 27, 2025

overview

this pr introduces a comprehensive multi-user authentication and workspace isolation system to bolt.diy, transforming it from a single-user application to a full-featured multi-user platform without requiring a database.

developer: keoma wright

major features

authentication system

  • beautiful login/signup pages with glassmorphism design
  • avatar upload support
  • jwt token authentication with bcrypt password hashing
  • session management with 7-day remember me option
  • security event logging and audit trail

user management

  • comprehensive admin panel at /admin/users
  • user statistics dashboard
  • search and filter capabilities
  • safe deletion with confirmation
  • user activity monitoring

workspace isolation

  • user-specific indexeddb storage
  • isolated chat histories
  • personal project files
  • separate deployment configurations

personalized experience

  • custom greeting with first name
  • time-based greetings
  • user menu with avatar display
  • member since tracking

technical implementation

file-based storage

no database required - uses secure file-based storage in .users/ directory

security features

  • bcrypt password hashing
  • jwt tokens
  • password complexity requirements
  • failed login logging
  • ip tracking

new components

  • authentication pages and protected routes
  • user menu with avatar display
  • admin management panel
  • personalized welcome messages

documentation

comprehensive documentation included in multiuser_documentation.md

getting started

  1. install: pnpm install
  2. setup: mkdir -p .users && chmod 700 .users
  3. start: pnpm run dev
  4. navigate to /auth

developed by keoma wright - 27 august 2025

Keoma Wright and others added 10 commits August 27, 2025 11:35
Implements comprehensive project import functionality with the following capabilities:

- **Drag & Drop Support**: Intuitive drag-and-drop interface for uploading project files
- **Multiple Import Methods**:
  - Individual file selection
  - Directory/folder upload (maintains structure)
  - ZIP archive extraction with automatic unpacking
- **Smart File Filtering**: Automatically excludes common build artifacts and dependencies (node_modules, .git, dist, build folders)
- **Large Project Support**: Handles projects up to 200MB with per-file limit of 50MB
- **Binary File Detection**: Properly handles binary files (images, fonts, etc.) with base64 encoding
- **Progress Tracking**: Real-time progress indicators during file processing
- **Beautiful UI**: Smooth animations with Framer Motion and responsive design
- **Keyboard Shortcuts**: Quick access with Ctrl+Shift+I (Cmd+Shift+I on Mac)
- **File Preview**: Shows file listing before import with file type icons
- **Import Statistics**: Displays total files, size, and directory count

The implementation uses JSZip for ZIP file extraction and integrates seamlessly with the existing workbench file system. Files are automatically added to the editor and the first file is opened for immediate editing.

Technical highlights:
- React hooks for state management
- Async/await for file processing
- WebKit directory API for folder uploads
- DataTransfer API for drag-and-drop
- Comprehensive error handling with user feedback via toast notifications

This feature significantly improves the developer experience by allowing users to quickly import their existing projects into bolt.diy without manual file creation.

🤖 Generated with Claude Code

Co-Authored-By: Claude <[email protected]>
This update dramatically improves the Netlify deployment experience by allowing users to connect their Netlify account directly from the deploy dialog without leaving their project.

Key improvements:
- **Unified Deploy Dialog**: New centralized deployment interface for all providers
- **Inline Connection**: Connect to Netlify without leaving your project context
- **Quick Connect Component**: Reusable connection flow with clear instructions
- **Improved UX**: Step-by-step guide for obtaining Netlify API tokens
- **Visual Feedback**: Provider status indicators and connection state
- **Seamless Workflow**: One-click deployment once connected

The new DeployDialog component provides:
- Provider selection with feature highlights
- Connection status for each provider
- In-context account connection
- Deployment confirmation and progress tracking
- Error handling with user-friendly messages

Technical highlights:
- TypeScript implementation for type safety
- Radix UI for accessible dialog components
- Framer Motion for smooth animations
- Toast notifications for user feedback
- Secure token handling and validation

This significantly reduces friction in the deployment process, making it easier for users to deploy their projects to Netlify and other platforms.

🤖 Generated with Claude Code

Co-Authored-By: Claude <[email protected]>
- Add @iconify-json/simple-icons for brand icons
- Replace external image URLs with UnoCSS icon classes
- Use proper brand colors for Netlify and Cloudflare icons
- Ensure icons display correctly without external dependencies

This fixes the 'no image' error in the deployment dialog by using
reliable icon fonts instead of external CDN images.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
… isolation system

🚀 Major Feature: Multi-User System for bolt.diy

This transforms bolt.diy from a single-user application to a comprehensive
multi-user platform with isolated workspaces and personalized experiences.

## ✨ Key Features

### Authentication System
- Beautiful login/signup pages with glassmorphism design
- JWT-based authentication with bcrypt password hashing
- Avatar upload support with base64 storage
- Remember me functionality (7-day sessions)
- Password strength validation and indicators

### User Management
- Comprehensive admin panel for user management
- User statistics dashboard
- Search and filter capabilities
- Safe user deletion with confirmation
- Security audit logging

### Workspace Isolation
- User-specific IndexedDB for chat history
- Isolated project files and settings
- Personal deploy configurations
- Individual workspace management

### Personalized Experience
- Custom greeting: '{First Name}, What would you like to build today?'
- Time-based greetings (morning/afternoon/evening)
- User menu with avatar display
- Member since tracking

### Security Features
- Bcrypt password hashing with salt
- JWT token authentication
- Session management and expiration
- Security event logging
- Protected routes and API endpoints

## 🏗️ Architecture

- **No Database Required**: File-based storage in .users/ directory
- **Isolated Storage**: User-specific IndexedDB instances
- **Secure Sessions**: JWT tokens with configurable expiration
- **Audit Trail**: Comprehensive security logging

## 📁 New Files Created

### Components
- app/components/auth/ProtectedRoute.tsx
- app/components/chat/AuthenticatedChat.tsx
- app/components/chat/WelcomeMessage.tsx
- app/components/header/UserMenu.tsx
- app/routes/admin.users.tsx
- app/routes/auth.tsx

### API Endpoints
- app/routes/api.auth.login.ts
- app/routes/api.auth.signup.ts
- app/routes/api.auth.logout.ts
- app/routes/api.auth.verify.ts
- app/routes/api.users.ts
- app/routes/api.users..ts

### Core Services
- app/lib/stores/auth.ts
- app/lib/utils/crypto.ts
- app/lib/utils/fileUserStorage.ts
- app/lib/persistence/userDb.ts

## 🎨 UI/UX Enhancements

- Animated gradient backgrounds
- Glassmorphism card designs
- Smooth Framer Motion transitions
- Responsive grid layouts
- Real-time form validation
- Loading states and skeletons

## 🔐 Security Implementation

- Password Requirements:
  - Minimum 8 characters
  - Uppercase and lowercase letters
  - At least one number
- Failed login attempt logging
- IP address tracking
- Secure token storage in httpOnly cookies

## 📝 Documentation

Comprehensive documentation included in MULTIUSER_DOCUMENTATION.md covering:
- Installation and setup
- User guide
- Admin guide
- API reference
- Security best practices
- Troubleshooting

## 🚀 Getting Started

1. Install dependencies: pnpm install
2. Create users directory: mkdir -p .users && chmod 700 .users
3. Start application: pnpm run dev
4. Navigate to /auth to create first account

Developer: Keoma Wright

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Complete installation and setup guide
- User and admin documentation
- API reference for all endpoints
- Security best practices
- Architecture overview
- Troubleshooting guide

Developer: Keoma Wright
- Updated date from December 2024 to 27 August 2025
- Updated year from 2024 to 2025
- Reflects current development timeline

Developer: Keoma Wright
- Landing page now shows chat prompt by default (guest access)
- Added beautiful non-invasive multi-user activation button
- Users can continue as guests without signing in
- Multi-user features must be actively activated by users
- Added 'Continue as Guest' option on auth page
- Header shows multi-user button only for non-authenticated users
- Changed modal background to use bolt-elements colors for proper theme support
- Updated text colors to use semantic color tokens (textPrimary, textSecondary)
- Fixed button styles to ensure readability in both light and dark modes
- Updated header multi-user button with proper contrast colors
- Integrated GitHub deployment feature from upstream
- Maintained our simplified DeployDialog approach
- Added GitHub as a deployment option in DeployDialog
- Resolved merge conflicts in DeployButton.tsx
- Fixed TypeScript type checking for GitHub deploy result
- All deployment providers (Netlify, Vercel, GitHub) now working together
@Stijnus Stijnus self-assigned this Aug 30, 2025
@Stijnus
Copy link
Collaborator

Stijnus commented Sep 6, 2025

Please review your commit these are 20+ lines that are been changed that is to much...I will close this for now and commit a new pr whit the changes of what you will be fixing.

@Stijnus Stijnus closed this Sep 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants