Atria is a comprehensive event management platform that enables organizers to create and manage events, sessions, and facilitate networking among attendees. The platform offers real-time communication features, detailed session management, and robust user administration capabilities. This is a work in progress, and a roadmap can be found at the bottom of this readme.
- HttpOnly cookie authentication for enhanced security
- JWT tokens with automatic refresh
- Role-based access control (RBAC)
- Hybrid auth approach: cookies for HTTP, tokens for WebSocket
- Create and manage events with detailed information
- Session scheduling with drag-and-drop speaker ordering
- Session chat rooms (PUBLIC and BACKSTAGE)
- Session type badges and visual organization
- Real-time chat rooms with tabbed interface
- Direct messaging between attendees
- Attendee profiles with privacy controls
- Connection management system (in development)
- User management with role-based permissions
- SessionManager for bulk editing
- Inline editing with auto-save
- Time conflict detection
- Batch user operations (CSV import, mass updates)
- Organization management
- Multi-organization support
- Organization-specific event management
- Multi-tier sponsor system
- Logo upload with image optimization (80-90% size reduction)
- Drag-and-drop reordering
- Social links and contact information
- Python with Flask framework
- Flask-Smorest for API documentation
- Flask-SocketIO for real-time communication
- SQLAlchemy ORM
- JWT Authentication
- React.js
- Redux Toolkit for state management
- RTK Query for API integration
- Mantine UI component library
- Socket.IO client for real-time features
- Routes: API endpoints by resource
- Schemas: Data validation and serialization
- Services: Business logic layer
- Models: Database entities
- Sockets: Real-time communication handlers
- Features-based organization
- Component-driven UI
- Redux for global state management
- RTK Query for API data fetching and caching
- Python 3.9+
- Node.js 16+
- PostgreSQL (recommended for production)
- Redis (planned for future Socket.IO scaling - not yet implemented)
# Clone the repository
git clone <repository-url>
cd atria
# Create .env file from example
cp .env.example .env
# Edit .env file with your configurations
# Start the application with Docker
docker-compose up -d
# The application will be available at:
# - Backend: http://localhost:5000
# - Frontend: http://localhost:5173
# Navigate to backend directory
cd backend/atria
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
pip install -e .
# Set up environment variables
cp .env.example .env
# Edit .env file with your configurations
# Initialize the database
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
# Seed the database (optional)
python -m seeders.seed_db
# Run the development server
flask run
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Create environment file
echo "VITE_API_URL=http://localhost:5000/api" > .env.local
# Run the development server
npm run dev
API documentation is available at /new-swagger
when the backend server is running (http://localhost:5000/new-swagger).
Contributions are welcome! Please feel free to submit a Pull Request.
Copyright © 2025 SBTL LLC
Atria is dual-licensed:
Atria is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This means:
- You can use, modify, and distribute the software
- Any modifications or derivative works must also be licensed under AGPL-3.0
- If you run a modified version on a server, you must provide the source code to users
For organizations that cannot comply with the AGPL-3.0 license, commercial licenses are available. Commercial licensing allows:
- Private modifications without source code disclosure
- Integration into proprietary systems
- Custom support and SLA options
For commercial licensing inquiries, please contact: [email protected]
We welcome contributions! However, all contributors must sign our Contributor License Agreement before we can accept your pull request. This allows us to maintain the dual-licensing model while accepting community contributions.
Please see our Contributing Guidelines for more information.
In accordance with Section 7(b) of the AGPL-3.0 license, you are required to retain the "Powered by Atria" attribution with a link to https://sbtl.dev at the footer of all web pages generated by this software. This attribution must remain visible and unmodified.
If you modify this software, you may update the attribution to reflect your changes (e.g., "Powered by [Your Project] based on Atria"), but the link must always direct to https://sbtl.dev.
Building core networking and communication features
Public chat functionality for events
- Backend implementation
- Networking area chat rooms with tabbed interface
- Individual session chat rooms (PUBLIC and BACKSTAGE)
- Real-time messaging with Socket.IO
- Frontend chat UI with MessageList and MessageInput components
- Moderation/muting capabilities
- Public chat notifications
- Typing indicators
Private messaging between users
- Direct message functionality
- List of conversations
- Base frontend UI
- Proper filtering
- End-to-end encryption
- Ice breaker connection starter
- Block/remove connection options
- Emoji support
- Admin connection options
Manage connections with other attendees
- Attendee directory with role-based filtering
- Attendee cards/base profiles (PersonCard component)
- Privacy controls for attendee visibility
- Connection request functionality (placeholder exists)
- Accept/decline connection flows
User profiles and personal networking features
User profile creation and management
- Create/update profile page with view/edit modes
- Professional info (company, title, bio)
- Social links integration
- Profile image upload with MinIO storage
- Emoji generator alternative
- Cards for connections
Connection management capabilities
- Ability to start connections
- Create DM from connection page
- Favorite specific connections
- Accept/decline connection requests
- Speaker connection preferences
Tools for managing event attendees
Attendee invitation functionality
- Invite attendee via email
- Invitation status tracking
- Existing account handling
- Resend invitations
- Cancel pending invitations
- CSV/mass invite options
Attendee management features
- Role management (Admin, Organizer, Speaker, Attendee)
- Search and filter attendees
- View attendee details and join dates
- Pagination for large attendee lists
- Ability for attendees to leave event
- Event archiving
Enhanced session organization and features
Session content and details
- Cleaner session page with streamlined UI
- Speakers area with social links
- Speaker ordering capability with drag-and-drop
- Session type badges (color-coded)
- Collapsible chat sidebar
- Short description for agenda view
Interactive session capabilities
- Per-session chat rooms (PUBLIC and BACKSTAGE types)
- Auto-created chat rooms for new sessions
- SessionChatMode for granular control
- Session tracking/attendance
- Event timer for video preparation
Video streaming capabilities
- Basic streaming integration framework
- Vimeo embed support
- DaCast embed support
- Other streaming platform embeds
Administrative tools for event management
Advanced session administration tools
- SessionManager component for bulk operations
- Inline editing with auto-save
- Zod validation for form inputs
- Time conflict detection
- Drag-and-drop speaker reordering
Chat room management tools
- Add/change chat rooms dynamically
- Set time on chat room open/close
- Moderation tools
Event configuration options
- Theme options
- Highlight and front page customization
- Comprehensive event settings page
Admin tools for managing participants
- Attendees Management page with role controls
- Speakers Management page with bio/title overrides
- Session count tracking for speakers
- Invitation system with email integration
- CSV export functionality
- Multiple role support (admin who is also speaker)
Sponsor management and integration
Core sponsor functionality
- Sponsors page with full CRUD operations
- Sponsor levels with custom names and tiers
- Drag-and-drop reordering with fractional indexing
- Logo upload with WebP optimization (80-90% size reduction)
- Contact info and social links
- Active/featured toggles
- Per-session sponsorship area
- Sponsor level descriptions
Sponsor visibility features
- Sponsor imagery management with MinIO storage
- PrivateImage component for secure display
- Image optimization and EXIF orientation fixes
- Sponsored chat rooms with timed opening
- Chat page sponsorship options
- Topical sponsorship for chat rooms
Advanced features for future development
Advanced messaging capabilities
- Event-specific chatbot with RAG
- WebRTC video calls with connections
Comprehensive ticketing system
- Paid ticketing options
- Public and private event settings
- Upcoming events page
- Placement promotion for events
- Privacy-preserving analytics
Advanced session features
- Q&A functionality
- Live polling integration
- Hybrid event support
- Zoom embed support
Advanced sponsor capabilities
- Direct ticket purchasing for attendees
- Cross-event invitation capabilities
Marketing and promotional tools
- White-label streaming platform
- Food delivery partnerships
- Event hosting fee model
- Broadcasting partnerships
Expanding platform availability
- Progressive web app
- Electron app
- Mobile application
- LLM integration for content