mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							137 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							137 lines
						
					
					
						
							3.6 KiB
						
					
					
				| # CLAUDE.md
 | |
| 
 | |
| This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
 | |
| 
 | |
| ## Development Commands
 | |
| 
 | |
| ### Starting the Application
 | |
| ```bash
 | |
| # Start Rails server
 | |
| PORT=3001 bundle exec rails s -p 3001
 | |
| 
 | |
| # Start Webpack dev server (separate terminal)
 | |
| bundle exec ./bin/shakapacker-dev-server
 | |
| 
 | |
| # Or start both with foreman
 | |
| foreman start -f Procfile.dev
 | |
| ```
 | |
| 
 | |
| ### Database Operations
 | |
| ```bash
 | |
| # Create and migrate database
 | |
| rails db:create db:migrate
 | |
| 
 | |
| # Reset database
 | |
| rails db:drop db:create db:migrate
 | |
| 
 | |
| # Run seeds
 | |
| rails db:seed
 | |
| ```
 | |
| 
 | |
| ### Testing
 | |
| ```bash
 | |
| # Run all tests
 | |
| bundle exec rspec
 | |
| 
 | |
| # Run specific test file
 | |
| bundle exec rspec spec/path/to/test_spec.rb
 | |
| 
 | |
| # Run system tests with visible browser
 | |
| HEADLESS=false bundle exec rspec spec/system/
 | |
| 
 | |
| # Run tests with coverage
 | |
| COVERAGE=true bundle exec rspec
 | |
| ```
 | |
| 
 | |
| ### Code Quality
 | |
| ```bash
 | |
| # Ruby linting
 | |
| bundle exec rubocop
 | |
| bundle exec rubocop -a  # auto-correct
 | |
| 
 | |
| # JavaScript linting
 | |
| yarn eslint
 | |
| 
 | |
| # ERB linting
 | |
| bundle exec erblint --lint-all
 | |
| 
 | |
| # Security scanning
 | |
| bundle exec brakeman
 | |
| ```
 | |
| 
 | |
| ### Asset Management
 | |
| ```bash
 | |
| # Install JavaScript dependencies
 | |
| yarn install
 | |
| 
 | |
| # Compile assets for production
 | |
| bundle exec rails assets:precompile
 | |
| 
 | |
| # Start webpack dev server
 | |
| bundle exec ./bin/shakapacker-dev-server
 | |
| ```
 | |
| 
 | |
| ## Application Architecture
 | |
| 
 | |
| ### Core Domain Models
 | |
| - **Template**: PDF form templates with fields for signing/filling
 | |
| - **Submission**: Instance of a template being processed with specific submitters
 | |
| - **Submitter**: Individual who needs to fill/sign a document within a submission
 | |
| - **User**: System users (admins, team members) who manage templates and submissions
 | |
| - **Account**: Multi-tenant organization container
 | |
| 
 | |
| ### Key Relationships
 | |
| - Templates belong to Accounts and have many Submissions
 | |
| - Submissions have many Submitters (signing parties)
 | |
| - Each Submitter has specific fields to complete
 | |
| - CompletedSubmitter and CompletedDocument track completion state
 | |
| 
 | |
| ### Frontend Architecture
 | |
| - **Rails Views**: Server-rendered ERB templates with Turbo for interactivity
 | |
| - **Vue.js Components**: Used for complex interactive forms (template builder, submission forms)
 | |
| - **Stimulus**: Lightweight JavaScript controllers for DOM interactions
 | |
| - **Tailwind CSS**: Utility-first CSS framework with DaisyUI components
 | |
| 
 | |
| ### Background Jobs (Sidekiq)
 | |
| - Document processing and PDF generation
 | |
| - Email notifications and reminders
 | |
| - Webhook deliveries
 | |
| - Search indexing
 | |
| 
 | |
| ### File Storage
 | |
| - Uses Active Storage for file management
 | |
| - Supports local disk, AWS S3, Google Cloud, Azure storage
 | |
| - PDF processing with HexaPDF library
 | |
| - Image processing with ruby-vips
 | |
| 
 | |
| ### API Structure
 | |
| - RESTful JSON API under `/api` namespace
 | |
| - API authentication via access tokens
 | |
| - Webhook system for real-time integrations
 | |
| - OpenAPI documentation in `docs/openapi.json`
 | |
| 
 | |
| ## Key Configuration Files
 | |
| - `config/routes.rb`: Main routing configuration with API and web routes
 | |
| - `config/application.rb`: Rails application configuration
 | |
| - `shakapacker.yml`: JavaScript build configuration
 | |
| - `tailwind.config.js`: CSS framework configuration
 | |
| 
 | |
| ## Development Environment
 | |
| - Ruby 3.4.2 required
 | |
| - Node.js 18 for asset compilation
 | |
| - SQLite for development (PostgreSQL supported)
 | |
| - Redis for background jobs
 | |
| - VIPS for image processing
 | |
| 
 | |
| ## Testing Setup
 | |
| - RSpec for Ruby testing with FactoryBot fixtures
 | |
| - Capybara + Cuprite for system/integration tests
 | |
| - WebMock for HTTP request stubbing
 | |
| - Sidekiq testing utilities for background jobs
 | |
| 
 | |
| ## Security Features
 | |
| - Devise for authentication with 2FA support
 | |
| - CanCanCan for authorization
 | |
| - PDF signature verification
 | |
| - Encrypted configuration storage
 | |
| - Rate limiting middleware |