lib/
├── realtime_server/ # Business logic
│ ├── accounts/ # User management
│ ├── comments/ # Comment context
│ ├── firebase/ # Firebase integration
│ ├── presence/ # Presence tracking
│ └── observability/ # Monitoring
├── realtime_server_web/ # Web layer
│ ├── channels/ # WebSocket channels
│ ├── controllers/ # REST controllers
│ └── views/ # JSON views
└── mix.exs # Project configuration
1. Setup Development Environment
# Clone repository
git clone https://github.com/your-org/realtime-server.git
cd realtime-server
# Install dependencies
mix deps.get
# Setup database
mix ecto.setup
# Run all tests
mix test
# Run with coverage
mix coveralls
# Run specific test file
mix test test/realtime_server/comments_test.exs
# Format code
mix format
# Run linter
mix credo --strict
# Run type checking
mix dialyzer
Controllers
Contexts
Channels
Views
API endpoints
WebSocket connections
Database operations
Load testing
Stress testing
Connection limits
feature/ - New features
fix/ - Bug fixes
docs/ - Documentation
refactor/ - Code refactoring
- feat: add user presence tracking
- fix: handle disconnection edge case
- docs: update API documentation
- refactor: improve error handling
Logger . debug ( "Debug message" , user_id: user . id )
Logger . info ( "Info message" , % { event: "user_login" } )
Logger . warning ( "Warning message" , % { error: error } )