A modern web-based desktop application for viewing, validating, and analyzing vCon (Virtual Conversation) files. Built with React and TypeScript, vCon Desktop provides a comprehensive platform for working with conversation data according to the IETF vCon specification.
- π File Upload & Validation - Upload and validate vCon JSON files with real-time schema validation
- π Advanced Search - Search through stored vCons with filtering by tags, parties, content, and metadata
- π¦ Bulk Import - Process multiple vCon files simultaneously with batch operations
- π Analysis & Insights - View conversation analysis, transcripts, and consent information
- π·οΈ Tag Management - Organize and categorize vCons with custom tagging system
- βοΈ Supabase Integration - Cloud storage and database for persistent vCon management
- π§ Configurable Instances - Connect to your own Supabase instance or use the default
- π User Authentication - Secure user accounts with Row Level Security (RLS)
- π± Responsive Design - Works seamlessly on desktop and mobile devices
- π Modern UI - Clean, accessible interface with collapsible sidebar navigation
- β IETF vCon Specification - Full compliance with vCon Working Group standards
- π Privacy & Consent - Built-in consent analysis and privacy protection features
- π Schema Validation - Comprehensive validation against current vCon IETF draft
- Frontend: React 18, TypeScript, Vite
- Styling: Tailwind CSS, shadcn/ui components
- Backend: Supabase (PostgreSQL, Auth, Edge Functions)
- State Management: React Query (TanStack Query)
- Routing: React Router v6
- Icons: Lucide React
- Form Handling: React Hook Form with Zod validation
- Node.js 18+
- npm or yarn package manager
-
Clone the repository
git clone <YOUR_GIT_URL> cd vcon-desktop
-
Install dependencies
npm install
-
Configure Supabase (Optional)
- By default, the app uses a hosted Supabase instance
- To use your own Supabase instance, configure it in the app settings
- See the Supabase Configuration section below
-
Start the development server
npm run dev
-
Open in browser
http://localhost:5173
vCon Desktop supports multiple Supabase configurations, allowing you to use the default hosted instance or connect to your own Supabase project.
The application comes pre-configured with a hosted Supabase instance for immediate use. No setup required - just start using the app!
To connect your own Supabase instance:
-
Access Settings
- Click the "Supabase" button in the sidebar
- Or navigate to
/settings
in the application
-
Configure Connection
- Enter your Supabase project URL (e.g.,
https://your-project.supabase.co
) - Provide your Supabase anon key from your project dashboard
- Optionally name your configuration for easy identification
- Enter your Supabase project URL (e.g.,
-
Test Connection
- Use the "Test Connection" button to verify your configuration
- The app will validate access to your Supabase instance
-
Save Configuration
- Configuration is stored locally in your browser
- Switch between multiple Supabase instances as needed
If you're creating a new Supabase project for vCon Desktop:
-
Create Supabase Project
- Visit supabase.com and create a new project
- Note your project URL and anon key from Settings β API
-
Deploy Schema
- The vCon Desktop schema includes tables for vcons, parties, dialog, analysis, attachments
- Required RLS policies for user data isolation
- Database functions for advanced search and analytics
-
Configure Edge Functions (Optional)
- vCon crypto functions for signing and encryption
- Requires deployment of the
vcon-crypto
edge function
Your Supabase instance must have the following components:
- Tables:
vcons
,parties
,dialog
,analysis
,attachments
,user_profiles
,user_roles
- RLS Policies: User-scoped data access and security
- Database Functions:
search_vcons
,get_analysis_summary
,get_vcons_with_parties
- Edge Functions:
vcon-crypto
for cryptographic operations
For detailed schema information, see the Supabase Architecture documentation.
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run type-check # Run TypeScript compiler check
src/
βββ components/ # React components
β βββ ui/ # shadcn/ui components
β βββ VConViewer/ # vCon-specific components
β βββ AppSidebar.tsx # Main navigation
βββ hooks/ # Custom React hooks
βββ integrations/ # External service integrations
β βββ supabase/ # Supabase client and types
βββ pages/ # Route components
βββ types/ # TypeScript definitions
βββ utils/ # Utility functions
βββ examples/ # Sample vCon files
-
Upload a vCon File
- Drag and drop a JSON file onto the upload area
- Or use the "Browse Files" button to select a file
- Try the example files to get started quickly
-
Create an Account (Optional)
- Sign up to save and search your vCons
- Access advanced features like bulk import
- Sync across devices with cloud storage
-
Explore Features
- Validation Tab: Check vCon compliance and schema validation
- Overview: View conversation details, parties, and metadata
- Consent Panel: Analyze consent and privacy information
- Export Options: Export vCons in various formats
The application includes three sample vCon files to help you get started:
- Sales Email - Chevrolet Blazer EV: Automotive follow-up email example
- Meeting Transcript - Sales Call: Phone conversation with transcript
- Voicemail Call - Suburban Inquiry: Outbound voicemail message
vCon (Virtual Conversation) is an IETF standard for representing and storing conversation data. Learn more:
- vCon Working Group - IETF standards development
- Conserver.io Documentation - Implementation guides and resources
- IETF Mission - Internet standards organization
- β Party management and identification
- β Dialog content (text, audio, video)
- β Analysis data and transcripts
- β Attachment handling
- β Consent and privacy metadata
- β Cryptographic signatures and security
- β Redaction and data protection
Click the deploy button above or visit the Lovable Project and click Share β Publish.
Use Lovable (Recommended)
Simply visit the Lovable Project and start prompting. Changes made via Lovable will be committed automatically to this repo.
Use your preferred IDE
If you want to work locally using your own IDE, you can clone this repo and push changes. Pushed changes will also be reflected in Lovable.
Edit directly in GitHub
Navigate to files and click the "Edit" button (pencil icon) to make changes directly.
Use GitHub Codespaces
Click on "Code" β "Codespaces" β "New codespace" to launch a cloud development environment.
-
Build the application
npm run build
-
Deploy the
dist/
folder to your preferred hosting service
To connect a custom domain, navigate to Project β Settings β Domains and click Connect Domain in Lovable.
We welcome contributions from the community! Here's how to get started:
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Follow existing code style and conventions
- Add tests for new functionality
- Update documentation as needed
- Submit a pull request
- TypeScript: All code must be properly typed
- ESLint: Follow the configured linting rules
- Components: Use functional components with hooks
- Styling: Use Tailwind CSS classes and design system tokens
- Testing: Add tests for new features and bug fixes
- π Bug fixes and improvements
- β¨ New vCon analysis features
- π± Mobile experience enhancements
- π Security and privacy improvements
- π§ Supabase deployment automation
- π Documentation and tutorials
- π Internationalization support
This project is licensed under the MIT License - see the LICENSE file for details.
- IETF vCon Working Group - For developing the vCon specification
- Conserver.io Team - For vCon implementation guidance and documentation
- Supabase - For providing the backend infrastructure
- shadcn/ui - For the beautiful UI component library
- Lovable Platform - For hosting and deployment capabilities
- π§ Issues: Report bugs and request features via GitHub Issues
- π¬ Discussions: Join community discussions in GitHub Discussions
- π Documentation: Visit conserver.io for detailed vCon guides
- π IETF: Contribute to vCon standards at the IETF vCon Working Group
Help us make the Internet work better by contributing to open standards and conversation data interoperability! πβ¨